Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 315772 Details for
Bug 461044
Hercules patch to boot kernel >= 2.6.25
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
CVS rebase patch
hercules-3.05-cvs-rebase.patch (text/plain), 3.86 MB, created by
Brad Hinson
on 2008-09-04 16:10:35 UTC
(
hide
)
Description:
CVS rebase patch
Filename:
MIME Type:
Creator:
Brad Hinson
Created:
2008-09-04 16:10:35 UTC
Size:
3.86 MB
patch
obsolete
>diff -Naupr hercules-3.05/aclocal.m4 hercules-20070717/aclocal.m4 >--- hercules-3.05/aclocal.m4 2007-06-23 16:59:28.000000000 +0200 >+++ hercules-20070717/aclocal.m4 1970-01-01 01:00:00.000000000 +0100 >@@ -1,902 +0,0 @@ >-# generated automatically by aclocal 1.9.6 -*- Autoconf -*- >- >-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, >-# 2005 Free Software Foundation, Inc. >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# AM_AUTOMAKE_VERSION(VERSION) >-# ---------------------------- >-# Automake X.Y traces this macro to ensure aclocal.m4 has been >-# generated from the m4 files accompanying Automake X.Y. >-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) >- >-# AM_SET_CURRENT_AUTOMAKE_VERSION >-# ------------------------------- >-# Call AM_AUTOMAKE_VERSION so it can be traced. >-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. >-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], >- [AM_AUTOMAKE_VERSION([1.9.6])]) >- >-# AM_AUX_DIR_EXPAND -*- Autoconf -*- >- >-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets >-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to >-# `$srcdir', `$srcdir/..', or `$srcdir/../..'. >-# >-# Of course, Automake must honor this variable whenever it calls a >-# tool from the auxiliary directory. The problem is that $srcdir (and >-# therefore $ac_aux_dir as well) can be either absolute or relative, >-# depending on how configure is run. This is pretty annoying, since >-# it makes $ac_aux_dir quite unusable in subdirectories: in the top >-# source directory, any form will work fine, but in subdirectories a >-# relative path needs to be adjusted first. >-# >-# $ac_aux_dir/missing >-# fails when called from a subdirectory if $ac_aux_dir is relative >-# $top_srcdir/$ac_aux_dir/missing >-# fails if $ac_aux_dir is absolute, >-# fails when called from a subdirectory in a VPATH build with >-# a relative $ac_aux_dir >-# >-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir >-# are both prefixed by $srcdir. In an in-source build this is usually >-# harmless because $srcdir is `.', but things will broke when you >-# start a VPATH build or use an absolute $srcdir. >-# >-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, >-# iff we strip the leading $srcdir from $ac_aux_dir. That would be: >-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` >-# and then we would define $MISSING as >-# MISSING="\${SHELL} $am_aux_dir/missing" >-# This will work as long as MISSING is not called from configure, because >-# unfortunately $(top_srcdir) has no meaning in configure. >-# However there are other variables, like CC, which are often used in >-# configure, and could therefore not use this "fixed" $ac_aux_dir. >-# >-# Another solution, used here, is to always expand $ac_aux_dir to an >-# absolute PATH. The drawback is that using absolute paths prevent a >-# configured tree to be moved without reconfiguration. >- >-AC_DEFUN([AM_AUX_DIR_EXPAND], >-[dnl Rely on autoconf to set up CDPATH properly. >-AC_PREREQ([2.50])dnl >-# expand $ac_aux_dir to an absolute path >-am_aux_dir=`cd $ac_aux_dir && pwd` >-]) >- >-# AM_CONDITIONAL -*- Autoconf -*- >- >-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 7 >- >-# AM_CONDITIONAL(NAME, SHELL-CONDITION) >-# ------------------------------------- >-# Define a conditional. >-AC_DEFUN([AM_CONDITIONAL], >-[AC_PREREQ(2.52)dnl >- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], >- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl >-AC_SUBST([$1_TRUE]) >-AC_SUBST([$1_FALSE]) >-if $2; then >- $1_TRUE= >- $1_FALSE='#' >-else >- $1_TRUE='#' >- $1_FALSE= >-fi >-AC_CONFIG_COMMANDS_PRE( >-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then >- AC_MSG_ERROR([[conditional "$1" was never defined. >-Usually this means the macro was only invoked conditionally.]]) >-fi])]) >- >- >-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 8 >- >-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be >-# written in clear, in which case automake, when reading aclocal.m4, >-# will think it sees a *use*, and therefore will trigger all it's >-# C support machinery. Also note that it means that autoscan, seeing >-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... >- >- >-# _AM_DEPENDENCIES(NAME) >-# ---------------------- >-# See how the compiler implements dependency checking. >-# NAME is "CC", "CXX", "GCJ", or "OBJC". >-# We try a few techniques and use that to set a single cache variable. >-# >-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was >-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular >-# dependency, and given that the user is not expected to run this macro, >-# just rely on AC_PROG_CC. >-AC_DEFUN([_AM_DEPENDENCIES], >-[AC_REQUIRE([AM_SET_DEPDIR])dnl >-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl >-AC_REQUIRE([AM_MAKE_INCLUDE])dnl >-AC_REQUIRE([AM_DEP_TRACK])dnl >- >-ifelse([$1], CC, [depcc="$CC" am_compiler_list=], >- [$1], CXX, [depcc="$CXX" am_compiler_list=], >- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], >- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], >- [depcc="$$1" am_compiler_list=]) >- >-AC_CACHE_CHECK([dependency style of $depcc], >- [am_cv_$1_dependencies_compiler_type], >-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then >- # We make a subdir and do the tests there. Otherwise we can end up >- # making bogus files that we don't know about and never remove. For >- # instance it was reported that on HP-UX the gcc test will end up >- # making a dummy file named `D' -- because `-MD' means `put the output >- # in D'. >- mkdir conftest.dir >- # Copy depcomp to subdir because otherwise we won't find it if we're >- # using a relative directory. >- cp "$am_depcomp" conftest.dir >- cd conftest.dir >- # We will build objects and dependencies in a subdirectory because >- # it helps to detect inapplicable dependency modes. For instance >- # both Tru64's cc and ICC support -MD to output dependencies as a >- # side effect of compilation, but ICC will put the dependencies in >- # the current directory while Tru64 will put them in the object >- # directory. >- mkdir sub >- >- am_cv_$1_dependencies_compiler_type=none >- if test "$am_compiler_list" = ""; then >- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` >- fi >- for depmode in $am_compiler_list; do >- # Setup a source with many dependencies, because some compilers >- # like to wrap large dependency lists on column 80 (with \), and >- # we should not choose a depcomp mode which is confused by this. >- # >- # We need to recreate these files for each test, as the compiler may >- # overwrite some of them when testing with obscure command lines. >- # This happens at least with the AIX C compiler. >- : > sub/conftest.c >- for i in 1 2 3 4 5 6; do >- echo '#include "conftst'$i'.h"' >> sub/conftest.c >- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with >- # Solaris 8's {/usr,}/bin/sh. >- touch sub/conftst$i.h >- done >- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf >- >- case $depmode in >- nosideeffect) >- # after this tag, mechanisms are not by side-effect, so they'll >- # only be used when explicitly requested >- if test "x$enable_dependency_tracking" = xyes; then >- continue >- else >- break >- fi >- ;; >- none) break ;; >- esac >- # We check with `-c' and `-o' for the sake of the "dashmstdout" >- # mode. It turns out that the SunPro C++ compiler does not properly >- # handle `-M -o', and we need to detect this. >- if depmode=$depmode \ >- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ >- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ >- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >- >/dev/null 2>conftest.err && >- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && >- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && >- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then >- # icc doesn't choke on unknown options, it will just issue warnings >- # or remarks (even with -Werror). So we grep stderr for any message >- # that says an option was ignored or not supported. >- # When given -MP, icc 7.0 and 7.1 complain thusly: >- # icc: Command line warning: ignoring option '-M'; no argument required >- # The diagnosis changed in icc 8.0: >- # icc: Command line remark: option '-MP' not supported >- if (grep 'ignoring option' conftest.err || >- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else >- am_cv_$1_dependencies_compiler_type=$depmode >- break >- fi >- fi >- done >- >- cd .. >- rm -rf conftest.dir >-else >- am_cv_$1_dependencies_compiler_type=none >-fi >-]) >-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) >-AM_CONDITIONAL([am__fastdep$1], [ >- test "x$enable_dependency_tracking" != xno \ >- && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) >-]) >- >- >-# AM_SET_DEPDIR >-# ------------- >-# Choose a directory name for dependency files. >-# This macro is AC_REQUIREd in _AM_DEPENDENCIES >-AC_DEFUN([AM_SET_DEPDIR], >-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl >-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl >-]) >- >- >-# AM_DEP_TRACK >-# ------------ >-AC_DEFUN([AM_DEP_TRACK], >-[AC_ARG_ENABLE(dependency-tracking, >-[ --disable-dependency-tracking speeds up one-time build >- --enable-dependency-tracking do not reject slow dependency extractors]) >-if test "x$enable_dependency_tracking" != xno; then >- am_depcomp="$ac_aux_dir/depcomp" >- AMDEPBACKSLASH='\' >-fi >-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) >-AC_SUBST([AMDEPBACKSLASH]) >-]) >- >-# Generate code to set up dependency tracking. -*- Autoconf -*- >- >-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-#serial 3 >- >-# _AM_OUTPUT_DEPENDENCY_COMMANDS >-# ------------------------------ >-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], >-[for mf in $CONFIG_FILES; do >- # Strip MF so we end up with the name of the file. >- mf=`echo "$mf" | sed -e 's/:.*$//'` >- # Check whether this is an Automake generated Makefile or not. >- # We used to match only the files named `Makefile.in', but >- # some people rename them; so instead we look at the file content. >- # Grep'ing the first line is not enough: some people post-process >- # each Makefile.in and add a new line on top of each file to say so. >- # So let's grep whole file. >- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then >- dirpart=`AS_DIRNAME("$mf")` >- else >- continue >- fi >- # Extract the definition of DEPDIR, am__include, and am__quote >- # from the Makefile without running `make'. >- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` >- test -z "$DEPDIR" && continue >- am__include=`sed -n 's/^am__include = //p' < "$mf"` >- test -z "am__include" && continue >- am__quote=`sed -n 's/^am__quote = //p' < "$mf"` >- # When using ansi2knr, U may be empty or an underscore; expand it >- U=`sed -n 's/^U = //p' < "$mf"` >- # Find all dependency output files, they are included files with >- # $(DEPDIR) in their names. We invoke sed twice because it is the >- # simplest approach to changing $(DEPDIR) to its actual value in the >- # expansion. >- for file in `sed -n " >- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ >- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do >- # Make sure the directory exists. >- test -f "$dirpart/$file" && continue >- fdir=`AS_DIRNAME(["$file"])` >- AS_MKDIR_P([$dirpart/$fdir]) >- # echo "creating $dirpart/$file" >- echo '# dummy' > "$dirpart/$file" >- done >-done >-])# _AM_OUTPUT_DEPENDENCY_COMMANDS >- >- >-# AM_OUTPUT_DEPENDENCY_COMMANDS >-# ----------------------------- >-# This macro should only be invoked once -- use via AC_REQUIRE. >-# >-# This code is only required when automatic dependency tracking >-# is enabled. FIXME. This creates each `.P' file that we will >-# need in order to bootstrap the dependency handling code. >-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], >-[AC_CONFIG_COMMANDS([depfiles], >- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], >- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) >-]) >- >-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 8 >- >-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. >-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) >- >-# Do all the work for Automake. -*- Autoconf -*- >- >-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 12 >- >-# This macro actually does too much. Some checks are only needed if >-# your package does certain things. But this isn't really a big deal. >- >-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) >-# AM_INIT_AUTOMAKE([OPTIONS]) >-# ----------------------------------------------- >-# The call with PACKAGE and VERSION arguments is the old style >-# call (pre autoconf-2.50), which is being phased out. PACKAGE >-# and VERSION should now be passed to AC_INIT and removed from >-# the call to AM_INIT_AUTOMAKE. >-# We support both call styles for the transition. After >-# the next Automake release, Autoconf can make the AC_INIT >-# arguments mandatory, and then we can depend on a new Autoconf >-# release and drop the old call support. >-AC_DEFUN([AM_INIT_AUTOMAKE], >-[AC_PREREQ([2.58])dnl >-dnl Autoconf wants to disallow AM_ names. We explicitly allow >-dnl the ones we care about. >-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl >-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl >-AC_REQUIRE([AC_PROG_INSTALL])dnl >-# test to see if srcdir already configured >-if test "`cd $srcdir && pwd`" != "`pwd`" && >- test -f $srcdir/config.status; then >- AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) >-fi >- >-# test whether we have cygpath >-if test -z "$CYGPATH_W"; then >- if (cygpath --version) >/dev/null 2>/dev/null; then >- CYGPATH_W='cygpath -w' >- else >- CYGPATH_W=echo >- fi >-fi >-AC_SUBST([CYGPATH_W]) >- >-# Define the identity of the package. >-dnl Distinguish between old-style and new-style calls. >-m4_ifval([$2], >-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl >- AC_SUBST([PACKAGE], [$1])dnl >- AC_SUBST([VERSION], [$2])], >-[_AM_SET_OPTIONS([$1])dnl >- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl >- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl >- >-_AM_IF_OPTION([no-define],, >-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) >- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl >- >-# Some tools Automake needs. >-AC_REQUIRE([AM_SANITY_CHECK])dnl >-AC_REQUIRE([AC_ARG_PROGRAM])dnl >-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) >-AM_MISSING_PROG(AUTOCONF, autoconf) >-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) >-AM_MISSING_PROG(AUTOHEADER, autoheader) >-AM_MISSING_PROG(MAKEINFO, makeinfo) >-AM_PROG_INSTALL_SH >-AM_PROG_INSTALL_STRIP >-AC_REQUIRE([AM_PROG_MKDIR_P])dnl >-# We need awk for the "check" target. The system "awk" is bad on >-# some platforms. >-AC_REQUIRE([AC_PROG_AWK])dnl >-AC_REQUIRE([AC_PROG_MAKE_SET])dnl >-AC_REQUIRE([AM_SET_LEADING_DOT])dnl >-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], >- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], >- [_AM_PROG_TAR([v7])])]) >-_AM_IF_OPTION([no-dependencies],, >-[AC_PROVIDE_IFELSE([AC_PROG_CC], >- [_AM_DEPENDENCIES(CC)], >- [define([AC_PROG_CC], >- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl >-AC_PROVIDE_IFELSE([AC_PROG_CXX], >- [_AM_DEPENDENCIES(CXX)], >- [define([AC_PROG_CXX], >- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl >-]) >-]) >- >- >-# When config.status generates a header, we must update the stamp-h file. >-# This file resides in the same directory as the config header >-# that is generated. The stamp files are numbered to have different names. >- >-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the >-# loop where config.status creates the headers, so we can generate >-# our stamp files there. >-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], >-[# Compute $1's index in $config_headers. >-_am_stamp_count=1 >-for _am_header in $config_headers :; do >- case $_am_header in >- $1 | $1:* ) >- break ;; >- * ) >- _am_stamp_count=`expr $_am_stamp_count + 1` ;; >- esac >-done >-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) >- >-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# AM_PROG_INSTALL_SH >-# ------------------ >-# Define $install_sh. >-AC_DEFUN([AM_PROG_INSTALL_SH], >-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl >-install_sh=${install_sh-"$am_aux_dir/install-sh"} >-AC_SUBST(install_sh)]) >- >-# Copyright (C) 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 2 >- >-# Check whether the underlying file-system supports filenames >-# with a leading dot. For instance MS-DOS doesn't. >-AC_DEFUN([AM_SET_LEADING_DOT], >-[rm -rf .tst 2>/dev/null >-mkdir .tst 2>/dev/null >-if test -d .tst; then >- am__leading_dot=. >-else >- am__leading_dot=_ >-fi >-rmdir .tst 2>/dev/null >-AC_SUBST([am__leading_dot])]) >- >-# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- >-# From Jim Meyering >- >-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 4 >- >-AC_DEFUN([AM_MAINTAINER_MODE], >-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) >- dnl maintainer-mode is disabled by default >- AC_ARG_ENABLE(maintainer-mode, >-[ --enable-maintainer-mode enable make rules and dependencies not useful >- (and sometimes confusing) to the casual installer], >- USE_MAINTAINER_MODE=$enableval, >- USE_MAINTAINER_MODE=no) >- AC_MSG_RESULT([$USE_MAINTAINER_MODE]) >- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) >- MAINT=$MAINTAINER_MODE_TRUE >- AC_SUBST(MAINT)dnl >-] >-) >- >-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) >- >-# Check to see how 'make' treats includes. -*- Autoconf -*- >- >-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 3 >- >-# AM_MAKE_INCLUDE() >-# ----------------- >-# Check to see how make treats includes. >-AC_DEFUN([AM_MAKE_INCLUDE], >-[am_make=${MAKE-make} >-cat > confinc << 'END' >-am__doit: >- @echo done >-.PHONY: am__doit >-END >-# If we don't find an include directive, just comment out the code. >-AC_MSG_CHECKING([for style of include used by $am_make]) >-am__include="#" >-am__quote= >-_am_result=none >-# First try GNU make style include. >-echo "include confinc" > confmf >-# We grep out `Entering directory' and `Leaving directory' >-# messages which can occur if `w' ends up in MAKEFLAGS. >-# In particular we don't look at `^make:' because GNU make might >-# be invoked under some other name (usually "gmake"), in which >-# case it prints its new name instead of `make'. >-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then >- am__include=include >- am__quote= >- _am_result=GNU >-fi >-# Now try BSD make style include. >-if test "$am__include" = "#"; then >- echo '.include "confinc"' > confmf >- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then >- am__include=.include >- am__quote="\"" >- _am_result=BSD >- fi >-fi >-AC_SUBST([am__include]) >-AC_SUBST([am__quote]) >-AC_MSG_RESULT([$_am_result]) >-rm -f confinc confmf >-]) >- >-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- >- >-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 4 >- >-# AM_MISSING_PROG(NAME, PROGRAM) >-# ------------------------------ >-AC_DEFUN([AM_MISSING_PROG], >-[AC_REQUIRE([AM_MISSING_HAS_RUN]) >-$1=${$1-"${am_missing_run}$2"} >-AC_SUBST($1)]) >- >- >-# AM_MISSING_HAS_RUN >-# ------------------ >-# Define MISSING if not defined so far and test if it supports --run. >-# If it does, set am_missing_run to use it, otherwise, to nothing. >-AC_DEFUN([AM_MISSING_HAS_RUN], >-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl >-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" >-# Use eval to expand $SHELL >-if eval "$MISSING --run true"; then >- am_missing_run="$MISSING --run " >-else >- am_missing_run= >- AC_MSG_WARN([`missing' script is too old or missing]) >-fi >-]) >- >-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# AM_PROG_MKDIR_P >-# --------------- >-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. >-# >-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories >-# created by `make install' are always world readable, even if the >-# installer happens to have an overly restrictive umask (e.g. 077). >-# This was a mistake. There are at least two reasons why we must not >-# use `-m 0755': >-# - it causes special bits like SGID to be ignored, >-# - it may be too restrictive (some setups expect 775 directories). >-# >-# Do not use -m 0755 and let people choose whatever they expect by >-# setting umask. >-# >-# We cannot accept any implementation of `mkdir' that recognizes `-p'. >-# Some implementations (such as Solaris 8's) are not thread-safe: if a >-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' >-# concurrently, both version can detect that a/ is missing, but only >-# one can create it and the other will error out. Consequently we >-# restrict ourselves to GNU make (using the --version option ensures >-# this.) >-AC_DEFUN([AM_PROG_MKDIR_P], >-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then >- # We used to keeping the `.' as first argument, in order to >- # allow $(mkdir_p) to be used without argument. As in >- # $(mkdir_p) $(somedir) >- # where $(somedir) is conditionally defined. However this is wrong >- # for two reasons: >- # 1. if the package is installed by a user who cannot write `.' >- # make install will fail, >- # 2. the above comment should most certainly read >- # $(mkdir_p) $(DESTDIR)$(somedir) >- # so it does not work when $(somedir) is undefined and >- # $(DESTDIR) is not. >- # To support the latter case, we have to write >- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), >- # so the `.' trick is pointless. >- mkdir_p='mkdir -p --' >-else >- # On NextStep and OpenStep, the `mkdir' command does not >- # recognize any option. It will interpret all options as >- # directories to create, and then abort because `.' already >- # exists. >- for d in ./-p ./--version; >- do >- test -d $d && rmdir $d >- done >- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. >- if test -f "$ac_aux_dir/mkinstalldirs"; then >- mkdir_p='$(mkinstalldirs)' >- else >- mkdir_p='$(install_sh) -d' >- fi >-fi >-AC_SUBST([mkdir_p])]) >- >-# Helper functions for option handling. -*- Autoconf -*- >- >-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 3 >- >-# _AM_MANGLE_OPTION(NAME) >-# ----------------------- >-AC_DEFUN([_AM_MANGLE_OPTION], >-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) >- >-# _AM_SET_OPTION(NAME) >-# ------------------------------ >-# Set option NAME. Presently that only means defining a flag for this option. >-AC_DEFUN([_AM_SET_OPTION], >-[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) >- >-# _AM_SET_OPTIONS(OPTIONS) >-# ---------------------------------- >-# OPTIONS is a space-separated list of Automake options. >-AC_DEFUN([_AM_SET_OPTIONS], >-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) >- >-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) >-# ------------------------------------------- >-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. >-AC_DEFUN([_AM_IF_OPTION], >-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) >- >-# Check to make sure that the build environment is sane. -*- Autoconf -*- >- >-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 >-# Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 4 >- >-# AM_SANITY_CHECK >-# --------------- >-AC_DEFUN([AM_SANITY_CHECK], >-[AC_MSG_CHECKING([whether build environment is sane]) >-# Just in case >-sleep 1 >-echo timestamp > conftest.file >-# Do `set' in a subshell so we don't clobber the current shell's >-# arguments. Must try -L first in case configure is actually a >-# symlink; some systems play weird games with the mod time of symlinks >-# (eg FreeBSD returns the mod time of the symlink's containing >-# directory). >-if ( >- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` >- if test "$[*]" = "X"; then >- # -L didn't work. >- set X `ls -t $srcdir/configure conftest.file` >- fi >- rm -f conftest.file >- if test "$[*]" != "X $srcdir/configure conftest.file" \ >- && test "$[*]" != "X conftest.file $srcdir/configure"; then >- >- # If neither matched, then we have a broken ls. This can happen >- # if, for instance, CONFIG_SHELL is bash and it inherits a >- # broken ls alias from the environment. This has actually >- # happened. Such a system could not be considered "sane". >- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken >-alias in your environment]) >- fi >- >- test "$[2]" = conftest.file >- ) >-then >- # Ok. >- : >-else >- AC_MSG_ERROR([newly created file is older than distributed files! >-Check your system clock]) >-fi >-AC_MSG_RESULT(yes)]) >- >-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# AM_PROG_INSTALL_STRIP >-# --------------------- >-# One issue with vendor `install' (even GNU) is that you can't >-# specify the program used to strip binaries. This is especially >-# annoying in cross-compiling environments, where the build's strip >-# is unlikely to handle the host's binaries. >-# Fortunately install-sh will honor a STRIPPROG variable, so we >-# always use install-sh in `make install-strip', and initialize >-# STRIPPROG with the value of the STRIP variable (set by the user). >-AC_DEFUN([AM_PROG_INSTALL_STRIP], >-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl >-# Installed binaries are usually stripped using `strip' when the user >-# run `make install-strip'. However `strip' might not be the right >-# tool to use in cross-compilation environments, therefore Automake >-# will honor the `STRIP' environment variable to overrule this program. >-dnl Don't test for $cross_compiling = yes, because it might be `maybe'. >-if test "$cross_compiling" != no; then >- AC_CHECK_TOOL([STRIP], [strip], :) >-fi >-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" >-AC_SUBST([INSTALL_STRIP_PROGRAM])]) >- >-# Check how to create a tarball. -*- Autoconf -*- >- >-# Copyright (C) 2004, 2005 Free Software Foundation, Inc. >-# >-# This file is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# serial 2 >- >-# _AM_PROG_TAR(FORMAT) >-# -------------------- >-# Check how to create a tarball in format FORMAT. >-# FORMAT should be one of `v7', `ustar', or `pax'. >-# >-# Substitute a variable $(am__tar) that is a command >-# writing to stdout a FORMAT-tarball containing the directory >-# $tardir. >-# tardir=directory && $(am__tar) > result.tar >-# >-# Substitute a variable $(am__untar) that extract such >-# a tarball read from stdin. >-# $(am__untar) < result.tar >-AC_DEFUN([_AM_PROG_TAR], >-[# Always define AMTAR for backward compatibility. >-AM_MISSING_PROG([AMTAR], [tar]) >-m4_if([$1], [v7], >- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], >- [m4_case([$1], [ustar],, [pax],, >- [m4_fatal([Unknown tar format])]) >-AC_MSG_CHECKING([how to create a $1 tar archive]) >-# Loop over all known methods to create a tar archive until one works. >-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' >-_am_tools=${am_cv_prog_tar_$1-$_am_tools} >-# Do not fold the above two line into one, because Tru64 sh and >-# Solaris sh will not grok spaces in the rhs of `-'. >-for _am_tool in $_am_tools >-do >- case $_am_tool in >- gnutar) >- for _am_tar in tar gnutar gtar; >- do >- AM_RUN_LOG([$_am_tar --version]) && break >- done >- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' >- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' >- am__untar="$_am_tar -xf -" >- ;; >- plaintar) >- # Must skip GNU tar: if it does not support --format= it doesn't create >- # ustar tarball either. >- (tar --version) >/dev/null 2>&1 && continue >- am__tar='tar chf - "$$tardir"' >- am__tar_='tar chf - "$tardir"' >- am__untar='tar xf -' >- ;; >- pax) >- am__tar='pax -L -x $1 -w "$$tardir"' >- am__tar_='pax -L -x $1 -w "$tardir"' >- am__untar='pax -r' >- ;; >- cpio) >- am__tar='find "$$tardir" -print | cpio -o -H $1 -L' >- am__tar_='find "$tardir" -print | cpio -o -H $1 -L' >- am__untar='cpio -i -H $1 -d' >- ;; >- none) >- am__tar=false >- am__tar_=false >- am__untar=false >- ;; >- esac >- >- # If the value was cached, stop now. We just wanted to have am__tar >- # and am__untar set. >- test -n "${am_cv_prog_tar_$1}" && break >- >- # tar/untar a dummy directory, and stop if the command works >- rm -rf conftest.dir >- mkdir conftest.dir >- echo GrepMe > conftest.dir/file >- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) >- rm -rf conftest.dir >- if test -s conftest.tar; then >- AM_RUN_LOG([$am__untar <conftest.tar]) >- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break >- fi >-done >-rm -rf conftest.dir >- >-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) >-AC_MSG_RESULT([$am_cv_prog_tar_$1])]) >-AC_SUBST([am__tar]) >-AC_SUBST([am__untar]) >-]) # _AM_PROG_TAR >- >-m4_include([autoconf/hercules.m4]) >-m4_include([autoconf/libtool.m4]) >-m4_include([autoconf/ltdl.m4]) >-m4_include([m4/gettext.m4]) >-m4_include([m4/iconv.m4]) >-m4_include([m4/lib-ld.m4]) >-m4_include([m4/lib-link.m4]) >-m4_include([m4/lib-prefix.m4]) >-m4_include([m4/nls.m4]) >-m4_include([m4/po.m4]) >-m4_include([m4/progtest.m4]) >diff -Naupr hercules-3.05/autogen.sh hercules-20070717/autogen.sh >--- hercules-3.05/autogen.sh 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/autogen.sh 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,50 @@ >+#!/bin/sh >+ >+# $Id: autogen.sh,v 1.36 2006/12/08 09:43:16 jj Exp $ >+# >+# $Log: autogen.sh,v $ >+# Revision 1.36 2006/12/08 09:43:16 jj >+# Add CVS message log >+# >+ >+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in >+ *c*,-n*) ECHO_N= ECHO_C=' >+' ECHO_T=' ' ;; >+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; >+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;; >+esac >+ >+cat <<EOF >+Note: if you do not see a 'All processing sucessfully completed.' >+message when this script completes, then something went wrong and >+you should examine the output to try and determine what it was that >+went wrong. >+ >+EOF >+ >+rm -f autogen.log >+ >+echo $ECHO_N "aclocal... $ECHO_C" && aclocal -I m4 -I autoconf >>./autogen.log 2>&1 && echo "OK. (25% done)" && >+echo $ECHO_N "autoheader... $ECHO_C" && autoheader >>./autogen.log 2>&1 && echo "OK. (50% done)" && >+echo $ECHO_N "automake... $ECHO_C" && automake >>./autogen.log 2>&1 && echo "OK. (75% done)" && >+echo $ECHO_N "autoconf... $ECHO_C" && autoconf >>./autogen.log 2>&1 && echo "OK. (100% done)" >+ >+R=$? >+if [ "$R" = 0 ] >+then >+ cat <<EOF >+ >+All processing sucessfully completed. >+ >+You may now run ./configure in order to create a custom Makefile >+that is suitable for your platform and environment. >+EOF >+ exit 0 >+else >+ echo "FAILED!" >+ echo >+ echo "The last 10 lines of "autogen.log" follows..." >+ echo >+ tail autogen.log >+ exit "$R" >+fi >diff -Naupr hercules-3.05/awstape.c hercules-20070717/awstape.c >--- hercules-3.05/awstape.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/awstape.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,1000 @@ >+/* AWSTAPE.C (c) Copyright Roger Bowler, 1999-2007 */ >+/* ESA/390 Tape Device Handler */ >+ >+/* Original Author: Roger Bowler */ >+/* Prime Maintainer: Ivan Warren */ >+/* Secondary Maintainer: "Fish" (David B. Trout) */ >+ >+// $Id: awstape.c,v 1.7 2008/06/22 05:54:30 fish Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This module contains the AWSTAPE emulated tape format support. */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Five emulated tape formats are supported: */ >+/* */ >+/* 1. AWSTAPE This is the format used by the P/390. */ >+/* The entire tape is contained in a single flat file. */ >+/* A tape block consists of one or more block segments. */ >+/* Each block segment is preceded by a 6-byte header. */ >+/* Files are separated by tapemarks, which consist */ >+/* of headers with zero block length. */ >+/* AWSTAPE files are readable and writable. */ >+/* */ >+/* Support for AWSTAPE is in the "AWSTAPE.C" member. */ >+/* */ >+/* */ >+/* 2. OMATAPE This is the Optical Media Attach device format. */ >+/* Each physical file on the tape is represented by */ >+/* a separate flat file. The collection of files that */ >+/* make up the physical tape is obtained from an ASCII */ >+/* text file called the "tape description file", whose */ >+/* file name is always tapes/xxxxxx.tdf (where xxxxxx */ >+/* is the volume serial number of the tape). */ >+/* Three formats of tape files are supported: */ >+/* * FIXED files contain fixed length EBCDIC blocks */ >+/* with no headers or delimiters. The block length */ >+/* is specified in the TDF file. */ >+/* * TEXT files contain variable length ASCII blocks */ >+/* delimited by carriage return line feed sequences. */ >+/* The data is translated to EBCDIC by this module. */ >+/* * HEADER files contain variable length blocks of */ >+/* EBCDIC data prefixed by a 16-byte header. */ >+/* The TDF file and all of the tape files must reside */ >+/* reside under the same directory which is normally */ >+/* on CDROM but can be on disk. */ >+/* OMATAPE files are supported as read-only media. */ >+/* */ >+/* OMATAPE tape Support is in the "OMATAPE.C" member. */ >+/* */ >+/* */ >+/* 3. SCSITAPE This format allows reading and writing of 4mm or */ >+/* 8mm DAT tape, 9-track open-reel tape, or 3480-type */ >+/* cartridge on an appropriate SCSI-attached drive. */ >+/* All SCSI tapes are processed using the generalized */ >+/* SCSI tape driver (st.c) which is controlled using */ >+/* the MTIOCxxx set of IOCTL commands. */ >+/* PROGRAMMING NOTE: the 'tape' portability macros for */ >+/* physical (SCSI) tapes MUST be used for all tape i/o! */ >+/* */ >+/* SCSI tape Support is in the "SCSITAPE.C" member. */ >+/* */ >+/* */ >+/* 4. HET This format is based on the AWSTAPE format but has */ >+/* been extended to support compression. Since the */ >+/* basic file format has remained the same, AWSTAPEs */ >+/* can be read/written using the HET routines. */ >+/* */ >+/* Support for HET is in the "HETTAPE.C" member. */ >+/* */ >+/* */ >+/* 5. FAKETAPE This is the format used by Fundamental Software */ >+/* on their FLEX-ES systems. It it similar to the AWS */ >+/* format. The entire tape is contained in a single */ >+/* flat file. A tape block is preceded by a 12-ASCII- */ >+/* hex-characters header which indicate the size of */ >+/* the previous and next blocks. Files are separated */ >+/* by tapemarks which consist of headers with a zero */ >+/* current block length. FakeTapes are both readable */ >+/* and writable. */ >+/* */ >+/* Support for FAKETAPE is in the "FAKETAPE.C" member. */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Additional credits: */ >+/* 3480 commands contributed by Jan Jaeger */ >+/* Sense byte improvements by Jan Jaeger */ >+/* 3480 Read Block ID and Locate CCWs by Brandon Hill */ >+/* Unloaded tape support by Brandon Hill v209*/ >+/* HET format support by Leland Lucius v209*/ >+/* JCS - minor changes by John Summerfield 2003*/ >+/* PERFORM SUBSYSTEM FUNCTION / CONTROL ACCESS support by */ >+/* Adrian Trenkwalder (with futher enhancements by Fish) */ >+/* **INCOMPLETE** 3590 support by Fish (David B. Trout) */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Reference information: */ >+/* SC53-1200 S/370 and S/390 Optical Media Attach/2 User's Guide */ >+/* SC53-1201 S/370 and S/390 Optical Media Attach/2 Technical Ref */ >+/* SG24-2506 IBM 3590 Tape Subsystem Technical Guide */ >+/* GA32-0331 IBM 3590 Hardware Reference */ >+/* GA32-0329 IBM 3590 Introduction and Planning Guide */ >+/* SG24-2594 IBM 3590 Multiplatform Implementation */ >+/* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference */ >+/* GA32-0127 IBM 3490E Hardware Reference */ >+/* GC35-0152 EREP Release 3.5.0 Reference */ >+/* SA22-7204 ESA/390 Common I/O-Device Commands */ >+/* Flex FakeTape format (http://preview.tinyurl.com/67rgnp) */ >+/*-------------------------------------------------------------------*/ >+ >+// $Log: awstape.c,v $ >+// Revision 1.7 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.6 2008/05/22 19:25:58 fish >+// Flex FakeTape support >+// >+// Revision 1.5 2008/03/30 02:51:33 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.4 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.3 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.2 2008/03/26 07:23:51 fish >+// SCSI MODS part 2: split tapedev.c: aws, het, oma processing moved >+// to separate modules, CCW processing moved to separate module. >+// >+// Revision 1.1 2008/03/25 18:42:36 fish >+// AWS, HET and OMA processing logic moved to separate modules. >+// Tape device CCW processing logic also moved to separate module. >+// (tapedev.c was becoming too large and unwieldy) >+// >+// Revision 1.133 2008/03/13 01:44:17 kleonard >+// Fix residual read-only setting for tape device >+// >+// Revision 1.132 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.131 2008/03/04 00:25:25 ivan >+// Ooops.. finger check on 8809 case for numdevid.. Thanks Roger ! >+// >+// Revision 1.130 2008/03/02 12:00:04 ivan >+// Re-disable Sense ID on 3410, 3420, 8809 : report came in that it breaks MTS >+// >+// Revision 1.129 2007/12/14 17:48:52 rbowler >+// Enable SENSE ID CCW for 2703,3410,3420 >+// >+// Revision 1.128 2007/11/29 03:36:40 fish >+// Re-sequence CCW opcode 'case' statements to be in ascending order. >+// COSMETIC CHANGE ONLY. NO ACTUAL LOGIC WAS CHANGED. >+// >+// Revision 1.127 2007/11/13 15:10:52 rbowler >+// fsb_awstape support for segmented blocks >+// >+// Revision 1.126 2007/11/11 20:46:50 rbowler >+// read_awstape support for segmented blocks >+// >+// Revision 1.125 2007/11/09 14:59:34 rbowler >+// Move misplaced comment and restore original programming style >+// >+// Revision 1.124 2007/11/02 16:04:15 jmaynard >+// Removing redundant #if !(defined OPTION_SCSI_TAPE). >+// >+// Revision 1.123 2007/09/01 06:32:24 fish >+// Surround 3590 SCSI test w/#ifdef (OPTION_SCSI_TAPE) >+// >+// Revision 1.122 2007/08/26 14:37:17 fish >+// Fix missed unfixed 31 Aug 2006 non-SCSI tape Locate bug >+// >+// Revision 1.121 2007/07/24 23:06:32 fish >+// Force command-reject for 3590 Medium Sense and Mode Sense >+// >+// Revision 1.120 2007/07/24 22:54:49 fish >+// (comment changes only) >+// >+// Revision 1.119 2007/07/24 22:46:09 fish >+// Default to --blkid-32 and --no-erg for 3590 SCSI >+// >+// Revision 1.118 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// >+// Revision 1.117 2007/07/24 21:57:29 fish >+// Fix Win32 SCSI tape "Locate" and "ReadBlockId" SNAFU >+// >+// Revision 1.116 2007/06/23 00:04:18 ivan >+// Update copyright notices to include current year (2007) >+// >+// Revision 1.115 2007/04/06 15:40:25 fish >+// Fix Locate Block & Read BlockId for SCSI tape broken by 31 Aug 2006 preliminary-3590-support change >+// >+// Revision 1.114 2007/02/25 21:10:44 fish >+// Fix het_locate to continue on tapemark >+// >+// Revision 1.113 2007/02/03 18:58:06 gsmith >+// Fix MVT tape CMDREJ error >+// >+// Revision 1.112 2006/12/28 03:04:17 fish >+// PR# tape/100: Fix crash in "open_omatape()" in tapedev.c if bad filespec entered in OMA (TDF) file >+// >+// Revision 1.111 2006/12/11 17:25:59 rbowler >+// Change locblock from long to U32 to correspond with dev->blockid >+// >+// Revision 1.110 2006/12/08 09:43:30 jj >+// Add CVS message log >+// >+/*-------------------------------------------------------------------*/ >+ >+#include "hstdinc.h" >+#include "hercules.h" /* need Hercules control blocks */ >+#include "tapedev.h" /* Main tape handler header file */ >+ >+/*-------------------------------------------------------------------*/ >+//#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) >+ >+#ifdef ENABLE_TRACING_STMTS >+ #if !defined(DEBUG) >+ #warning DEBUG required for ENABLE_TRACING_STMTS >+ #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) >+#else >+ #undef TRACE >+ #undef ASSERT >+ #undef VERIFY >+ #define TRACE 1 ? ((void)0) : logmsg >+ #define ASSERT(a) >+ #define VERIFY(a) ((void)(a)) >+#endif >+ >+/*********************************************************************/ >+/* START OF ORIGINAL AWS FUNCTIONS (ISW Additions) */ >+/*********************************************************************/ >+ >+/*-------------------------------------------------------------------*/ >+/* Close an AWSTAPE format file */ >+/* New Function added by ISW for consistency with other medias */ >+/*-------------------------------------------------------------------*/ >+void close_awstape (DEVBLK *dev) >+{ >+ if(dev->fd>=0) >+ { >+ logmsg(_("HHCTA996I %4.4x - AWS Tape %s closed\n"),dev->devnum,dev->filename); >+ close(dev->fd); >+ } >+ strcpy(dev->filename, TAPE_UNLOADED); >+ dev->fd=-1; >+ dev->blockid = 0; >+ dev->fenced = 0; >+ return; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Rewinds an AWS Tape format file */ >+/* New Function added by ISW for consistency with other medias */ >+/*-------------------------------------------------------------------*/ >+int rewind_awstape (DEVBLK *dev,BYTE *unitstat,BYTE code) >+{ >+ off_t rcoff; >+ rcoff=lseek(dev->fd,0,SEEK_SET); >+ if(rcoff<0) >+ { >+ build_senseX(TAPE_BSENSE_REWINDFAILED,dev,unitstat,code); >+ return -1; >+ } >+ dev->nxtblkpos=0; >+ dev->prvblkpos=-1; >+ dev->curfilen=1; >+ dev->blockid=0; >+ dev->fenced = 0; >+ return 0; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Determines if a tape has passed a virtual EOT marker */ >+/* New Function added by ISW for consistency with other medias */ >+/*-------------------------------------------------------------------*/ >+int passedeot_awstape (DEVBLK *dev) >+{ >+ if(dev->nxtblkpos==0) >+ { >+ dev->eotwarning = 0; >+ return 0; >+ } >+ if(dev->tdparms.maxsize==0) >+ { >+ dev->eotwarning = 0; >+ return 0; >+ } >+ if(dev->nxtblkpos+dev->eotmargin > dev->tdparms.maxsize) >+ { >+ dev->eotwarning = 1; >+ return 1; >+ } >+ dev->eotwarning = 0; >+ return 0; >+} >+ >+/*********************************************************************/ >+/* START OF ORIGINAL RB AWS FUNCTIONS */ >+/*********************************************************************/ >+ >+/*-------------------------------------------------------------------*/ >+/* Open an AWSTAPE format file */ >+/* */ >+/* If successful, the file descriptor is stored in the device block */ >+/* and the return value is zero. Otherwise the return value is -1. */ >+/*-------------------------------------------------------------------*/ >+int open_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc = -1; /* Return code */ >+char pathname[MAX_PATH]; /* file path in host format */ >+ >+ /* Check for no tape in drive */ >+ if (!strcmp (dev->filename, TAPE_UNLOADED)) >+ { >+ build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Open the AWSTAPE file */ >+ hostpath(pathname, dev->filename, sizeof(pathname)); >+ if(!dev->tdparms.logical_readonly) >+ { >+ rc = open (pathname, O_RDWR | O_BINARY); >+ } >+ >+ /* If file is read-only, attempt to open again */ >+ if (dev->tdparms.logical_readonly || (rc < 0 && (EROFS == errno || EACCES == errno))) >+ { >+ dev->readonly = 1; >+ rc = open (pathname, O_RDONLY | O_BINARY); >+ } >+ >+ /* Check for successful open */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA001E Error opening %s: %s\n"), >+ dev->filename, strerror(errno)); >+ >+ strcpy(dev->filename, TAPE_UNLOADED); >+ build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Store the file descriptor in the device block */ >+ dev->fd = rc; >+ rc=rewind_awstape(dev,unitstat,code); >+ return rc; >+ >+} /* end function open_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read an AWSTAPE block header */ >+/* */ >+/* If successful, return value is zero, and buffer contains header. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int readhdr_awstape (DEVBLK *dev, off_t blkpos, >+ AWSTAPE_BLKHDR *buf, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+ >+ /* Reposition file to the requested block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA002E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Read the 6-byte block header */ >+ rc = read (dev->fd, buf, sizeof(AWSTAPE_BLKHDR)); >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA003E Error reading block header " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file (uninitialized tape) condition */ >+ if (rc == 0) >+ { >+ logmsg (_("HHCTA004E End of file (end of tape) " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ /* Set unit exception with tape indicate (end of tape) */ >+ build_senseX(TAPE_BSENSE_EMPTYTAPE,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file within block header */ >+ if (rc < (int)sizeof(AWSTAPE_BLKHDR)) >+ { >+ logmsg (_("HHCTA004E Unexpected end of file in block header " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Successful return */ >+ return 0; >+ >+} /* end function readhdr_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from an AWSTAPE format file */ >+/* */ >+/* The block may be formed of one or more block segments each */ >+/* preceded by an AWSTAPE block header. The ENDREC flag in the */ >+/* block header indicates the final segment of the block. */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the return value is zero, and the */ >+/* current file number in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int read_awstape (DEVBLK *dev, BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >+off_t blkpos; /* Offset of block header */ >+int blklen = 0; /* Total length of block */ >+U16 seglen; /* Data length of segment */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Read block segments until end of block */ >+ do >+ { >+ /* Read the 6-byte block header */ >+ rc = readhdr_awstape (dev, blkpos, &awshdr, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Extract the segment length from the block header */ >+ seglen = ((U16)(awshdr.curblkl[1]) << 8) >+ | awshdr.curblkl[0]; >+ >+ /* Calculate the offset of the next block segment */ >+ blkpos += sizeof(awshdr) + seglen; >+ >+ /* Check that block length will not exceed buffer size */ >+ if (blklen + seglen > MAX_BLKLEN) >+ { >+ logmsg (_("HHCTA007E Block length exceeds %d " >+ "at offset "I64_FMTX" in file %s\n"), >+ (int)MAX_BLKLEN, blkpos, dev->filename); >+ >+ /* Set unit check with data check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Check that tapemark blocksize is zero */ >+ if ((awshdr.flags1 & AWSTAPE_FLAG1_TAPEMARK) >+ && blklen + seglen > 0) >+ { >+ logmsg (_("HHCTA008E Invalid tapemark " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ /* Set unit check with data check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Exit loop if this is a tapemark */ >+ if (awshdr.flags1 & AWSTAPE_FLAG1_TAPEMARK) >+ break; >+ >+ /* Read data block segment from tape file */ >+ rc = read (dev->fd, buf+blklen, seglen); >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA003E Error reading data block " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file within data block */ >+ if (rc < seglen) >+ { >+ logmsg (_("HHCTA004E Unexpected end of file in data block " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ /* Set unit check with data check and partial record */ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Accumulate the total block length */ >+ blklen += seglen; >+ >+ } while ((awshdr.flags1 & AWSTAPE_FLAG1_ENDREC) == 0); >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->prvblkpos = dev->nxtblkpos; >+ dev->nxtblkpos = blkpos; >+ >+ /* Increment the block number */ >+ dev->blockid++; >+ >+ /* Increment file number and return zero if tapemark was read */ >+ if (blklen == 0) >+ { >+ dev->curfilen++; >+ return 0; /* UX will be set by caller */ >+ } >+ >+ /* Return block length */ >+ return blklen; >+ >+} /* end function read_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a block to an AWSTAPE format file */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_awstape (DEVBLK *dev, BYTE *buf, U16 blklen, >+ BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >+off_t blkpos; /* Offset of block header */ >+U16 prvblkl; /* Length of previous block */ >+ >+ /* Initialize current block position and previous block length */ >+ blkpos = dev->nxtblkpos; >+ prvblkl = 0; >+ >+ /* Determine previous block length if not at start of tape */ >+ if (dev->nxtblkpos > 0) >+ { >+ /* Reread the previous block header */ >+ rc = readhdr_awstape (dev, dev->prvblkpos, &awshdr, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Extract the block length from the block header */ >+ prvblkl = ((U16)(awshdr.curblkl[1]) << 8) >+ | awshdr.curblkl[0]; >+ >+ /* Recalculate the offset of the next block */ >+ blkpos = dev->prvblkpos + sizeof(awshdr) + prvblkl; >+ } >+ >+ /* Reposition file to the new block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA002E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ /* ISW: Determine if we are passed maxsize */ >+ if(dev->tdparms.maxsize>0) >+ { >+ if((off_t)(dev->nxtblkpos+blklen+sizeof(awshdr)) > dev->tdparms.maxsize) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ } >+ /* ISW: End of virtual physical EOT determination */ >+ >+ /* Build the 6-byte block header */ >+ awshdr.curblkl[0] = blklen & 0xFF; >+ awshdr.curblkl[1] = (blklen >> 8) & 0xFF; >+ awshdr.prvblkl[0] = prvblkl & 0xFF; >+ awshdr.prvblkl[1] = (prvblkl >>8) & 0xFF; >+ awshdr.flags1 = AWSTAPE_FLAG1_NEWREC | AWSTAPE_FLAG1_ENDREC; >+ awshdr.flags2 = 0; >+ >+ /* Write the block header */ >+ rc = write (dev->fd, &awshdr, sizeof(awshdr)); >+ if (rc < (int)sizeof(awshdr)) >+ { >+ if(errno==ENOSPC) >+ { >+ /* Disk FULL */ >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ logmsg (_("HHCTA995E Media full condition reached " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ return -1; >+ } >+ /* Handle write error condition */ >+ logmsg (_("HHCTA009E Error writing block header " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos + sizeof(awshdr) + blklen; >+ dev->prvblkpos = blkpos; >+ >+ /* Write the data block */ >+ rc = write (dev->fd, buf, blklen); >+ if (rc < blklen) >+ { >+ if(errno==ENOSPC) >+ { >+ /* Disk FULL */ >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ logmsg (_("HHCTA995E Media full condition reached " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ return -1; >+ } >+ /* Handle write error condition */ >+ logmsg (_("HHCTA010E Error writing data block " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ dev->blockid++; >+ >+ /* Set new physical EOF */ >+ do rc = ftruncate( dev->fd, dev->nxtblkpos ); >+ while (EINTR == rc); >+ >+ if (rc != 0) >+ { >+ /* Handle write error condition */ >+ logmsg (_("HHCTA010E Error writing data block " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function write_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a tapemark to an AWSTAPE format file */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_awsmark (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >+off_t blkpos; /* Offset of block header */ >+U16 prvblkl; /* Length of previous block */ >+ >+ /* Initialize current block position and previous block length */ >+ blkpos = dev->nxtblkpos; >+ prvblkl = 0; >+ >+ /* Determine previous block length if not at start of tape */ >+ if (dev->nxtblkpos > 0) >+ { >+ /* Reread the previous block header */ >+ rc = readhdr_awstape (dev, dev->prvblkpos, &awshdr, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Extract the block length from the block header */ >+ prvblkl = ((U16)(awshdr.curblkl[1]) << 8) >+ | awshdr.curblkl[0]; >+ >+ /* Recalculate the offset of the next block */ >+ blkpos = dev->prvblkpos + sizeof(awshdr) + prvblkl; >+ } >+ >+ /* Reposition file to the new block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA011E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ /* ISW: Determine if we are passed maxsize */ >+ if(dev->tdparms.maxsize>0) >+ { >+ if((off_t)(dev->nxtblkpos+sizeof(awshdr)) > dev->tdparms.maxsize) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ } >+ /* ISW: End of virtual physical EOT determination */ >+ >+ /* Build the 6-byte block header */ >+ awshdr.curblkl[0] = 0; >+ awshdr.curblkl[1] = 0; >+ awshdr.prvblkl[0] = prvblkl & 0xFF; >+ awshdr.prvblkl[1] = (prvblkl >>8) & 0xFF; >+ awshdr.flags1 = AWSTAPE_FLAG1_TAPEMARK; >+ awshdr.flags2 = 0; >+ >+ /* Write the block header */ >+ rc = write (dev->fd, &awshdr, sizeof(awshdr)); >+ if (rc < (int)sizeof(awshdr)) >+ { >+ /* Handle write error condition */ >+ logmsg (_("HHCTA012E Error writing block header " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ dev->blockid++; >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos + sizeof(awshdr); >+ dev->prvblkpos = blkpos; >+ >+ /* Set new physical EOF */ >+ do rc = ftruncate( dev->fd, dev->nxtblkpos ); >+ while (EINTR == rc); >+ >+ if (rc != 0) >+ { >+ /* Handle write error condition */ >+ logmsg (_("HHCTA017E Error writing tape mark " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function write_awsmark */ >+ >+/*-------------------------------------------------------------------*/ >+/* Synchronize an AWSTAPE format file (i.e. flush buffers to disk) */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int sync_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+ /* Unit check if tape is write-protected */ >+ if (dev->readonly) >+ { >+ build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Perform sync. Return error on failure. */ >+ if (fdatasync( dev->fd ) < 0) >+ { >+ /* Log the error */ >+ logmsg (_("HHCTA088E Sync error on " >+ "device %4.4X = %s: %s\n"), >+ dev->devnum, dev->filename, strerror(errno)); >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function sync_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space over next block of AWSTAPE format file */ >+/* */ >+/* If successful, return value is the length of the block skipped. */ >+/* If the block skipped was a tapemark, the return value is zero, */ >+/* and the current file number in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsb_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >+off_t blkpos; /* Offset of block header */ >+int blklen = 0; /* Total length of block */ >+U16 seglen; /* Data length of segment */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Read block segments until end of block */ >+ do >+ { >+ /* Read the 6-byte block header */ >+ rc = readhdr_awstape (dev, blkpos, &awshdr, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Extract the block length from the block header */ >+ seglen = ((U16)(awshdr.curblkl[1]) << 8) >+ | awshdr.curblkl[0]; >+ >+ /* Calculate the offset of the next block segment */ >+ blkpos += sizeof(awshdr) + seglen; >+ >+ /* Accumulate the total block length */ >+ blklen += seglen; >+ >+ /* Exit loop if this is a tapemark */ >+ if (awshdr.flags1 & AWSTAPE_FLAG1_TAPEMARK) >+ break; >+ >+ } while ((awshdr.flags1 & AWSTAPE_FLAG1_ENDREC) == 0); >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->prvblkpos = dev->nxtblkpos; >+ dev->nxtblkpos = blkpos; >+ >+ /* Increment current file number if tapemark was skipped */ >+ if (blklen == 0) >+ dev->curfilen++; >+ >+ dev->blockid++; >+ >+ /* Return block length or zero if tapemark */ >+ return blklen; >+ >+} /* end function fsb_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous block of AWSTAPE format file */ >+/* */ >+/* If successful, return value is the length of the block. */ >+/* If the block is a tapemark, the return value is zero, */ >+/* and the current file number in the device block is decremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsb_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >+U16 curblkl; /* Length of current block */ >+U16 prvblkl; /* Length of previous block */ >+off_t blkpos; /* Offset of block header */ >+ >+ /* Unit check if already at start of tape */ >+ if (dev->nxtblkpos == 0) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Backspace to previous block position */ >+ blkpos = dev->prvblkpos; >+ >+ /* Read the 6-byte block header */ >+ rc = readhdr_awstape (dev, blkpos, &awshdr, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Extract the block lengths from the block header */ >+ curblkl = ((U16)(awshdr.curblkl[1]) << 8) >+ | awshdr.curblkl[0]; >+ prvblkl = ((U16)(awshdr.prvblkl[1]) << 8) >+ | awshdr.prvblkl[0]; >+ >+ /* Calculate the offset of the previous block */ >+ dev->prvblkpos = blkpos - sizeof(awshdr) - prvblkl; >+ dev->nxtblkpos = blkpos; >+ >+ /* Decrement current file number if backspaced over tapemark */ >+ if (curblkl == 0) >+ dev->curfilen--; >+ >+ dev->blockid--; >+ >+ /* Return block length or zero if tapemark */ >+ return curblkl; >+ >+} /* end function bsb_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space to next logical file of AWSTAPE format file */ >+/* */ >+/* For AWSTAPE files, the forward space file operation is achieved */ >+/* by forward spacing blocks until positioned just after a tapemark. */ >+/* */ >+/* If successful, return value is zero, and the current file number */ >+/* in the device block is incremented by fsb_awstape. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsf_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ while (1) >+ { >+ /* Forward space over next block */ >+ rc = fsb_awstape (dev, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Exit loop if spaced over a tapemark */ >+ if (rc == 0) break; >+ >+ } /* end while */ >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function fsf_awstape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous logical file of AWSTAPE format file */ >+/* */ >+/* For AWSTAPE files, the backspace file operation is achieved */ >+/* by backspacing blocks until positioned just before a tapemark */ >+/* or until positioned at start of tape. */ >+/* */ >+/* If successful, return value is zero, and the current file number */ >+/* in the device block is decremented by bsb_awstape. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsf_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ while (1) >+ { >+ /* Exit if now at start of tape */ >+ if (dev->nxtblkpos == 0) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Backspace to previous block position */ >+ rc = bsb_awstape (dev, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Exit loop if backspaced over a tapemark */ >+ if (rc == 0) break; >+ >+ } /* end while */ >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function bsf_awstape */ >+ >+/*********************************************************************/ >+/* END OF ORIGINAL RB AWS FUNCTIONS */ >+/*********************************************************************/ >diff -Naupr hercules-3.05/bldcfg.c hercules-20070717/bldcfg.c >--- hercules-3.05/bldcfg.c 2007-06-23 14:58:03.000000000 +0200 >+++ hercules-20070717/bldcfg.c 2008-09-03 13:07:48.000000000 +0200 >@@ -3,7 +3,7 @@ > > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: bldcfg.c,v 1.77 2007/06/23 00:04:03 ivan Exp $ >+// $Id: bldcfg.c,v 1.83 2008/07/08 05:35:48 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module builds the configuration tables for the Hercules */ >@@ -31,6 +31,26 @@ > /*-------------------------------------------------------------------*/ > > // $Log: bldcfg.c,v $ >+// Revision 1.83 2008/07/08 05:35:48 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.82 2008/05/28 16:46:29 fish >+// Misleading VTAPE support renamed to AUTOMOUNT instead and fixed and enhanced so that it actually WORKS now. >+// >+// Revision 1.81 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.80 2008/01/18 23:44:12 rbowler >+// Segfault instead of HHCCF004S if no device records in config file >+// >+// Revision 1.79 2008/01/18 22:08:33 rbowler >+// HHCCF008E Error in hercules.cnf: Unrecognized keyword 0:0009 >+// >+// Revision 1.78 2007/12/29 14:38:39 fish >+// init sysblk.dummyregs.hostregs = &sysblk.dummyregs; to prevent panel or dyngui threads from crashing when using new INSTCOUNT macro. >+// > // Revision 1.77 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -91,6 +111,10 @@ > #include "w32chan.h" > #endif // defined(OPTION_FISHIO) > >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+#include "tapedev.h" >+#endif >+ > #if !defined(_GEN_ARCH) > > #if defined(_ARCHMODE3) >@@ -280,6 +304,116 @@ int off; > } /* end if(sysblk.xpndsize) */ > } > >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+/*-------------------------------------------------------------------*/ >+/* Add directory to AUTOMOUNT allowed/disallowed directories list */ >+/* */ >+/* Input: tamdir pointer to work character array of at least */ >+/* MAX_PATH size containing an allowed/disallowed */ >+/* directory specification, optionally prefixed */ >+/* with the '+' or '-' indicator. */ >+/* */ >+/* ppTAMDIR address of TAMDIR ptr that upon successful */ >+/* completion is updated to point to the TAMDIR */ >+/* entry that was just successfully added. */ >+/* */ >+/* Output: upon success, ppTAMDIR is updated to point to the TAMDIR */ >+/* entry just added. Upon error, ppTAMDIR is set to NULL and */ >+/* the original input character array is set to the inter- */ >+/* mediate value being processed when the error occurred. */ >+/* */ >+/* Returns: 0 == success */ >+/* 1 == unresolvable path */ >+/* 2 == path inaccessible */ >+/* 3 == conflict w/previous */ >+/* 4 == duplicates previous */ >+/* 5 == out of memory */ >+/* */ >+/*-------------------------------------------------------------------*/ >+DLL_EXPORT int add_tamdir( char *tamdir, TAMDIR **ppTAMDIR ) >+{ >+ int rc, rej = 0; >+ char dirwrk[ MAX_PATH ] = {0}; >+ >+ *ppTAMDIR = NULL; >+ >+ if (*tamdir == '-') >+ { >+ rej = 1; >+ memmove (tamdir, tamdir+1, MAX_PATH); >+ } >+ else if (*tamdir == '+') >+ { >+ rej = 0; >+ memmove (tamdir, tamdir+1, MAX_PATH); >+ } >+ >+ /* Convert tamdir to absolute path ending with a slash */ >+ >+#if defined(_MSVC_) >+ /* (expand any embedded %var% environment variables) */ >+ rc = expand_environ_vars( tamdir, dirwrk, MAX_PATH ); >+ if (rc == 0) >+ strlcpy (tamdir, dirwrk, MAX_PATH); >+#endif >+ >+ if (!realpath( tamdir, dirwrk )) >+ return (1); /* ("unresolvable path") */ >+ strlcpy (tamdir, dirwrk, MAX_PATH); >+ >+ /* Verify that the path is valid */ >+ if (access( tamdir, R_OK | W_OK ) != 0) >+ return (2); /* ("path inaccessible") */ >+ >+ /* Append trailing path separator if needed */ >+ rc = strlen( tamdir ); >+ if (tamdir[rc-1] != *PATH_SEP) >+ strlcat (tamdir, PATH_SEP, MAX_PATH); >+ >+ /* Check for duplicate/conflicting specification */ >+ for (*ppTAMDIR = sysblk.tamdir; >+ *ppTAMDIR; >+ *ppTAMDIR = (*ppTAMDIR)->next) >+ { >+ if (strfilenamecmp( tamdir, (*ppTAMDIR)->dir ) == 0) >+ { >+ if ((*ppTAMDIR)->rej != rej) >+ return (3); /* ("conflict w/previous") */ >+ else >+ return (4); /* ("duplicates previous") */ >+ } >+ } >+ >+ /* Allocate new AUTOMOUNT directory entry */ >+ *ppTAMDIR = malloc( sizeof(TAMDIR) ); >+ if (!*ppTAMDIR) >+ return (5); /* ("out of memory") */ >+ >+ /* Fill in the new entry... */ >+ (*ppTAMDIR)->dir = strdup (tamdir); >+ (*ppTAMDIR)->len = strlen (tamdir); >+ (*ppTAMDIR)->rej = rej; >+ (*ppTAMDIR)->next = NULL; >+ >+ /* Add new entry to end of existing list... */ >+ if (sysblk.tamdir == NULL) >+ sysblk.tamdir = *ppTAMDIR; >+ else >+ { >+ TAMDIR *pTAMDIR = sysblk.tamdir; >+ while (pTAMDIR->next) >+ pTAMDIR = pTAMDIR->next; >+ pTAMDIR->next = *ppTAMDIR; >+ } >+ >+ /* Use first allowable dir as default */ >+ if (rej == 0 && sysblk.defdir == NULL) >+ sysblk.defdir = (*ppTAMDIR)->dir; >+ >+ return (0); /* ("success") */ >+} >+#endif /* OPTION_TAPE_AUTOMOUNT */ >+ > /*-------------------------------------------------------------------*/ > /* Subroutine to read a statement from the configuration file */ > /* The statement is then parsed into keyword, operand, and */ >@@ -595,6 +729,7 @@ char *sostailor; > char *spanrate; /* -> Panel refresh rate */ > char *stimerint; /* -> Timer update interval */ > char *sdevtmax; /* -> Max device threads */ >+char *slegacysenseid; /* -> legacy senseid option */ > char *shercprio; /* -> Hercules base priority */ > char *stodprio; /* -> Timer thread priority */ > char *scpuprio; /* -> CPU thread priority */ >@@ -651,6 +786,7 @@ int diag8cmd; > BYTE shcmdopt; /* Shell cmd allow option(s) */ > double toddrag; /* TOD clock drag factor */ > U64 ostailor; /* OS to tailor system to */ >+int legacysenseid; /* ena/disa x'E4' on old devs*/ > int timerint; /* Timer update interval */ > int panrate; /* Panel refresh rate */ > int hercprio; /* Hercules base priority */ >@@ -693,6 +829,7 @@ int dummyfd[OPTION_SELECT_KLUDGE]; > cygwin from thrashing in > select(). sigh */ > #endif >+ > char pathname[MAX_PATH]; /* file path in host format */ > > /* Initialize SETMODE and set user authority */ >@@ -743,6 +880,7 @@ char pathname[MAX_PATH]; > devprio = DEFAULT_DEV_PRIO; > pgmprdos = PGM_PRD_OS_RESTRICTED; > devtmax = MAX_DEVICE_THREADS; >+ legacysenseid = 0; > sysblk.kaidle = KEEPALIVE_IDLE_TIME; > sysblk.kaintv = KEEPALIVE_PROBE_INTERVAL; > sysblk.kacnt = KEEPALIVE_PROBE_COUNT; >@@ -775,12 +913,14 @@ char pathname[MAX_PATH]; > } > #endif /*!defined(NO_SETUID)*/ > >+ /*****************************************************************/ >+ /* Parse configuration file system parameter statements... */ >+ /*****************************************************************/ > >- /* Read records from the configuration file */ > for (scount = 0; ; scount++) > { > /* Read next record from the configuration file */ >- while (read_config (fname, inc_fp[inc_level]) && inc_level >= 0 ) >+ while (inc_level >= 0 && read_config (fname, inc_fp[inc_level])) > { > fclose (inc_fp[inc_level--]); > } >@@ -859,6 +999,12 @@ char pathname[MAX_PATH]; > { > break; > } >+ /* Also exit if keyword contains ':' (added by Harold Grovesteen jan2008) */ >+ /* Added because device statements may now contain channel set or LCSS id */ >+ if(strchr(keyword,':')) >+ { >+ break; >+ } > > /* Clear the operand value pointers */ > sserial = NULL; >@@ -884,6 +1030,7 @@ char pathname[MAX_PATH]; > scpuprio = NULL; > sdevprio = NULL; > sdevtmax = NULL; >+ slegacysenseid = NULL; > spgmprdos = NULL; > slogofile = NULL; > straceopt = NULL; >@@ -1073,6 +1220,10 @@ char pathname[MAX_PATH]; > { > sdevtmax = operand; > } >+ else if (strcasecmp (keyword, "legacysenseid") == 0) >+ { >+ slegacysenseid = operand; >+ } > else if (strcasecmp (keyword, "pgmprdos") == 0) > { > spgmprdos = operand; >@@ -1244,6 +1395,78 @@ char pathname[MAX_PATH]; > /* (will be validated later) */ > } > #endif /*defined(OPTION_HTTP_SERVER)*/ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ else if (strcasecmp (keyword, "automount") == 0) >+ { >+ char tamdir[MAX_PATH+1]; /* +1 for optional '+' or '-' prefix */ >+ TAMDIR* pTAMDIR = NULL; >+ >+ if (!operand) >+ { >+ fprintf(stderr, _("HHCCF007S Error in %s line %d: " >+ "Missing argument.\n"), >+ fname, inc_stmtnum[inc_level]); >+ delayed_exit(1); >+ } >+ >+ strlcpy (tamdir, operand, sizeof(tamdir)); >+ rc = add_tamdir( tamdir, &pTAMDIR ); >+ >+ switch (rc) >+ { >+ default: /* (oops!) */ >+ { >+ logmsg( _("HHCCF999S **LOGIC ERROR** file \"%s\", line %d\n"), >+ __FILE__, __LINE__); >+ delayed_exit(1); >+ } >+ break; >+ >+ case 5: /* ("out of memory") */ >+ { >+ logmsg( _("HHCCF900S Out of memory!\n")); >+ delayed_exit(1); >+ } >+ break; >+ >+ case 1: /* ("unresolvable path") */ >+ case 2: /* ("path inaccessible") */ >+ { >+ logmsg( _("HHCCF091S Invalid AUTOMOUNT directory: \"%s\": %s\n"), >+ tamdir, strerror(errno)); >+ delayed_exit(1); >+ } >+ break; >+ >+ case 3: /* ("conflict w/previous") */ >+ { >+ logmsg( _("HHCCF092S AUTOMOUNT directory \"%s\"" >+ " conflicts with previous specification\n"), >+ tamdir); >+ delayed_exit(1); >+ } >+ break; >+ >+ case 4: /* ("duplicates previous") */ >+ { >+ logmsg( _("HHCCF093E AUTOMOUNT directory \"%s\"" >+ " duplicates previous specification\n"), >+ tamdir); >+ /* (non-fatal) */ >+ } >+ break; >+ >+ case 0: /* ("success") */ >+ { >+ logmsg(_("HHCCF090I %s%s AUTOMOUNT directory = \"%s\"\n"), >+ pTAMDIR->dir == sysblk.defdir ? "Default " : "", >+ pTAMDIR->rej ? "Disallowed" : "Allowed", >+ pTAMDIR->dir); >+ } >+ break; >+ } >+ } >+#endif /* OPTION_TAPE_AUTOMOUNT */ > #if defined(_FEATURE_ASN_AND_LX_REUSE) > else if (strcasecmp(keyword,"asn_and_lx_reuse") == 0 > || strcasecmp(keyword,"alrf") == 0) >@@ -1271,18 +1494,18 @@ char pathname[MAX_PATH]; > #endif /*defined(OPTION_LPARNAME)*/ > > #if defined(OPTION_SET_STSI_INFO) >- else if (strcasecmp (keyword, "model") == 0) >- { >- stsi_model = operand; >- } >- else if (strcasecmp (keyword, "plant") == 0) >- { >- stsi_plant = operand; >- } >- else if (strcasecmp (keyword, "manufacturer") == 0) >- { >- stsi_manufacturer = operand; >- } >+ else if (strcasecmp (keyword, "model") == 0) >+ { >+ stsi_model = operand; >+ } >+ else if (strcasecmp (keyword, "plant") == 0) >+ { >+ stsi_plant = operand; >+ } >+ else if (strcasecmp (keyword, "manufacturer") == 0) >+ { >+ stsi_manufacturer = operand; >+ } > #endif /* defined(OPTION_SET_STSI_INFO) */ > > #if defined( OPTION_SCSI_TAPE ) >@@ -1298,7 +1521,6 @@ char pathname[MAX_PATH]; > shttp_server_kludge_msecs = operand; > } > #endif // defined( HTTP_SERVER_CONNECT_KLUDGE ) >- > else > { > logmsg( _("HHCCF008E Error in %s line %d: " >@@ -1315,7 +1537,8 @@ char pathname[MAX_PATH]; > "Incorrect number of operands\n"), > fname, inc_stmtnum[inc_level]); > } >- } >+ >+ } /* end else (not old-style CPU statement) */ > > if (sarchmode != NULL) > { >@@ -1355,7 +1578,6 @@ char pathname[MAX_PATH]; > /* Indicate if z/Architecture is supported */ > sysblk.arch_z900 = sysblk.arch_mode != ARCH_390; > #endif >- > /* Parse "logopt" operands */ > if (slogopt[0]) > { >@@ -1823,6 +2045,27 @@ char pathname[MAX_PATH]; > } > } > >+ /* Parse Legacy SenseID option */ >+ if (slegacysenseid != NULL) >+ { >+ if(strcasecmp(slegacysenseid,"enable") == 0) >+ { >+ legacysenseid = 1; >+ } >+ if(strcasecmp(slegacysenseid,"on") == 0) >+ { >+ legacysenseid = 1; >+ } >+ if(strcasecmp(slegacysenseid,"disable") == 0) >+ { >+ legacysenseid = 0; >+ } >+ if(strcasecmp(slegacysenseid,"off") == 0) >+ { >+ legacysenseid = 0; >+ } >+ } >+ > /* Parse program product OS allowed */ > if (spgmprdos != NULL) > { >@@ -2018,28 +2261,30 @@ char pathname[MAX_PATH]; > } > } > #endif /*defined(OPTION_SHARED_DEVICES)*/ >+ > #if defined(_FEATURE_ASN_AND_LX_REUSE) >- if(sasnandlxreuse != NULL) >- { >- if(strcasecmp(sasnandlxreuse,"enable")==0) >+ /* Parse asn_and_lx_reuse (alrf) operand */ >+ if(sasnandlxreuse != NULL) > { >- asnandlxreuse=1; >- } >- else >- { >- if(strcasecmp(sasnandlxreuse,"disable")==0) >+ if(strcasecmp(sasnandlxreuse,"enable")==0) > { >- asnandlxreuse=0; >+ asnandlxreuse=1; > } >- else { >- fprintf(stderr, _("HHCCF067S Error in %s line %d: " >- "Incorrect keyword %s for the ASN_AND_LX_REUSE statement.\n"), >- fname, inc_stmtnum[inc_level], sasnandlxreuse); >- delayed_exit(1); >+ else >+ { >+ if(strcasecmp(sasnandlxreuse,"disable")==0) >+ { >+ asnandlxreuse=0; >+ } >+ else { >+ fprintf(stderr, _("HHCCF067S Error in %s line %d: " >+ "Incorrect keyword %s for the ASN_AND_LX_REUSE statement.\n"), >+ fname, inc_stmtnum[inc_level], sasnandlxreuse); >+ delayed_exit(1); >+ } > } > } >- } >-#endif >+#endif /*defined(_FEATURE_ASN_AND_LX_REUSE)*/ > > #ifdef OPTION_IODELAY_KLUDGE > /* Parse I/O delay value */ >@@ -2082,17 +2327,17 @@ char pathname[MAX_PATH]; > cckd_command (scckd, 0); > > #if defined(OPTION_LPARNAME) >- if(lparname) >- set_lparname(lparname); >+ if(lparname) >+ set_lparname(lparname); > #endif /*defined(OPTION_LPARNAME)*/ > > #if defined(OPTION_SET_STSI_INFO) >- if(stsi_model) >- set_model(stsi_model); >- if(stsi_plant) >- set_plant(stsi_plant); >- if(stsi_manufacturer) >- set_manufacturer(stsi_manufacturer); >+ if(stsi_model) >+ set_model(stsi_model); >+ if(stsi_plant) >+ set_plant(stsi_plant); >+ if(stsi_manufacturer) >+ set_manufacturer(stsi_manufacturer); > #endif /* defined(OPTION_SET_STSI_INFO) */ > > #if defined( OPTION_SCSI_TAPE ) >@@ -2155,7 +2400,33 @@ char pathname[MAX_PATH]; > } > #endif // defined( HTTP_SERVER_CONNECT_KLUDGE ) > >- } /* end for(scount) */ >+ } /* end for(scount) (end of configuration file statement loop) */ >+ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ /* Define default AUTOMOUNT directory if needed */ >+ if (sysblk.tamdir && sysblk.defdir == NULL) >+ { >+ char cwd[ MAX_PATH ]; >+ TAMDIR *pNewTAMDIR = malloc( sizeof(TAMDIR) ); >+ if (!pNewTAMDIR) >+ { >+ logmsg( _("HHCCF900S Out of memory!\n")); >+ delayed_exit(1); >+ } >+ VERIFY( getcwd( cwd, sizeof(cwd) ) != NULL ); >+ rc = strlen( cwd ); >+ if (cwd[rc-1] != *PATH_SEP) >+ strlcat (cwd, PATH_SEP, sizeof(cwd)); >+ pNewTAMDIR->dir = strdup (cwd); >+ pNewTAMDIR->len = strlen (cwd); >+ pNewTAMDIR->rej = 0; >+ pNewTAMDIR->next = sysblk.tamdir; >+ sysblk.tamdir = pNewTAMDIR; >+ sysblk.defdir = pNewTAMDIR->dir; >+ logmsg(_("HHCCF090I Default Allowed AUTOMOUNT directory = \"%s\"\n"), >+ sysblk.defdir); >+ } >+#endif /* OPTION_TAPE_AUTOMOUNT */ > > #if defined( HTTP_SERVER_CONNECT_KLUDGE ) > if (!sysblk.http_server_kludge_msecs) >@@ -2323,13 +2594,19 @@ char pathname[MAX_PATH]; > /* Set the panel refresh rate */ > sysblk.panrate = panrate; > >+ /* set the legacy device senseid option */ >+ sysblk.legacysenseid = legacysenseid; >+ > /* Set the timer update interval */ > sysblk.timerint = timerint; > > /* Gabor Hoffer (performance option) */ > copy_opcode_tables(); > >- /* Parse the device configuration statements */ >+ /*****************************************************************/ >+ /* Parse configuration file device statements... */ >+ /*****************************************************************/ >+ > while(1) > { > /* First two fields are device number and device type */ >@@ -2453,6 +2730,7 @@ char pathname[MAX_PATH]; > sysblk.dummyregs.dummy = 1; > initial_cpu_reset (&sysblk.dummyregs); > sysblk.dummyregs.arch_mode = sysblk.arch_mode; >+ sysblk.dummyregs.hostregs = &sysblk.dummyregs; > > #ifdef OPTION_SELECT_KLUDGE > /* Release the dummy file descriptors */ >diff -Naupr hercules-3.05/bootstrap.c hercules-20070717/bootstrap.c >--- hercules-3.05/bootstrap.c 2006-12-30 16:18:26.000000000 +0100 >+++ hercules-20070717/bootstrap.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,9 +2,13 @@ > /* Hercules main executable code */ > /*********************************/ > >-// $Id: bootstrap.c,v 1.11 2006/12/28 03:04:34 fish Exp $ >+// $Id: bootstrap.c,v 1.12 2008/02/19 11:49:18 ivan Exp $ > // > // $Log: bootstrap.c,v $ >+// Revision 1.12 2008/02/19 11:49:18 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// > // Revision 1.11 2006/12/28 03:04:34 fish > // Permanently disable in bootstrap.c Microsoft's completely INSANE Invalid CRT Parameter handling behavior > // >@@ -25,6 +29,7 @@ > > int main(int ac,char *av[]) > { >+ DROP_PRIVILEGES(CAP_SYS_NICE); > SET_THREAD_NAME("bootstrap"); > > #if defined( OPTION_DYNAMIC_LOAD ) && defined( HDL_USE_LIBTOOL ) >diff -Naupr hercules-3.05/_build hercules-20070717/_build >--- hercules-3.05/_build 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/_build 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,364 @@ >+#!/bin/bash >+# +-------------------------------------------------------------------+ >+# ! ! >+# ! Name: _build ! >+# ! ! >+# ! Desc: build Hercules with various options ! >+# ! ! >+# ! Usage: ! >+# ! ! >+# ! >>- build -+------------------------+-+---------------------+-> ! >+# ! ! ! ! ! ! >+# ! +- -c --+- i586 -------+-+ +- -t -+-- fthread -+-+ ! >+# ! ! ! ! ! ! >+# ! +- i686 -------+ +-- f -------+ ! >+# ! ! ! ! ! ! >+# ! +- pentium ----+ +-- pthread -+ ! >+# ! ! ! ! ! ! >+# ! +- athlon -----+ +-- p -------+ ! >+# ! ! ! ! >+# ! +- pentiumpro -+ ! >+# ! ! ! ! >+# ! +- p4 ---------+ ! >+# ! ! ! ! >+# ! +- pentium4 ---+ ! >+# ! ! >+# ! >---------+-------+------------------------------------------> ! >+# ! ! ! ! >+# ! +- -f --+ force rebuilding of configure ! >+# ! ! >+# ! ! >+# ! >---------+-------------------------------------+------------>< ! >+# ! ! ! ! >+# ! +- -p -- number_of_processors (<=8) --+ ! >+# ! ! >+# ! ! >+# ! Defaults: build -c `uname -m` -t f -p 2 ! >+# ! ! >+# +-------------------------------------------------------------------+ >+# ! >+# ! Change Log: '$Log: _build,v $ >+# ! Change Log: 'Revision 1.21 2003/12/19 07:32:52 vbandke >+# ! Change Log: 'Fix Keyboard processing for pseudo-graphical console (by Marian Gasparovic) >+# ! Change Log: ' >+# ! Change Log: 'Revision 1.20 2003/10/12 06:48:13 vbandke >+# ! Change Log: 'remove extraneous CR from _build scripts >+# ! Change Log: ' >+# ! Change Log: 'Revision 1.19 2003/10/06 19:51:24 vbandke >+# ! Change Log: 'Add support for Linux build. Add support for -p flag (number of processors) >+# ! Change Log: ' >+# ! Change Log: 'Revision 1.18 2003/08/26 11:53:08 vbandke >+# ! Change Log: 'remove reference to ABOUT-NLS. Add option -f to forece generation of ./configure >+# ! Change Log: ' >+# ! Change Log: 'Revision 1.17 2003/08/15 13:56:14 vbandke >+# ! Change Log: 'fixed minor details >+# ! Change Log: ' >+# ! Change Log: 'Revision 1.16 2002/12/16 16:19:17 vbandke >+# ! Change Log: 'remove --prefix=`pwd` from ./configure invocation >+# ! Change Log: ' >+# ! Change Log: 'Revision 1.15 2002/12/15 21:56:03 vbandke >+# ! Change Log: 'Complete rework. Include support for P4 processor >+# ! Change Log: ' >+function pause() { >+ echo -e -n "${MSG}Press the ${MSGHI}ENTER${MSG} key to continue" >+ read dummy >+} >+ >+function log() { >+ if [ $# != 0 ] ; then >+ THE_TIME=`date +%H:%M:%S` >+ echo -e "${MSG}${THE_TIME}${DEFAULT} - ${MSGHI}${1}${DEFAULT}" >+ echo -e "${THE_TIME} - ${1}" >>${LOGFILE} 2>&1 >+ fi >+ return >+} >+ >+function logn() { >+ if [ $# != 0 ] ; then >+ echo -e " ${MSGHI}${1}${DEFAULT}" >+ echo -e " ${1}" >>${LOGFILE} 2>&1 >+ fi >+ return >+} >+ >+function loga() { >+ if [ $# != 0 ] ; then >+ THE_TIME=`date +%H:%M:%S` >+ echo -e "${MSG}${THE_TIME}${DEFAULT} - ${ERRHI}\a${1}${DEFAULT}" >+ echo -e "${THE_TIME} - ${1}" >>${LOGFILE} 2>&1 >+ fi >+ return >+} >+ >+function lower() { >+ if [ "${1}X" = "X" ] ; then >+ echo "" >+ else >+ echo -E "${1}" | tr [:upper:] [:lower:] >+ fi >+} >+ >+function upper() { >+ if [ "${1}X" = "X" ] ; then >+ echo "" >+ else >+ echo -E "${1}" | tr [:lower:] [:upper:] >+ fi >+} >+function abort() { >+ loga "*******************************************************************" >+ loga "* *" >+ loga "* A B O R T *" >+ loga "* ========= *" >+ loga "* *" >+ loga "*******************************************************************" >+ logn " " >+ logn "${1}" >+ logn " " >+ logn "Check error messages in logfile ${LOGFILE}" >+ logn " " >+ pause >+ exit >+} >+clear >+. set_color_vars >+if [ ${OSTYPE} = cygwin ] ; then >+ THIS_CYGWIN=`cygcheck -s | grep -i dll\ version:` >+ THIS_CYGWIN=${THIS_CYGWIN##*: } >+ DEFTHREAD=fthreads >+else >+ THIS_CYGWIN=n/a >+ DEFTHREAD=posix >+fi >+MYCMD=`basename ${0}` >+LOGFILE=`pwd`/${MYCMD}.log >+cat >${LOGFILE}<<!EOF! >+************************************************************************* >+* >+* Name: ${LOGFILE} >+* >+* Date: `date` >+* >+* Command line: ${0} ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9} >+* >+************************************************************************* >+ >+!EOF! >+log "Building Hercules Binaries from Local Source" >+THREAD_SET=false >+CPU_SET=false >+NUMCPU_SET=false >+NUMCPU=2 >+AUTO_SET=false >+ANSI_SET=true >+CPU_TYPE=auto >+THREAD_TYPE=fthread >+while getopts :c:fn:p:t: THE_OPT ; do >+ THE_OPT=`lower ${THE_OPT}` >+ case ${THE_OPT} in >+ c) CPU_TYPE=${OPTARG} >+ CPU_SET=true >+ ;; >+ f) rm -f ./configure >+ ;; >+ n) ANSI_SET=false >+ ;; >+ p) NUMCPU_SET=true >+ NUMCPU=${OPTARG} >+ ;; >+ t) THREAD_TYPE=${OPTARG} >+ THREAD_SET=true >+ ;; >+ :) abort "Required information is missing" >+ ;; >+ \?) loga "Invalid command switch ${OPTARG}\n" >+ logn "Syntax is\n" >+ logn "_build [-c <cputype>] [-t <threadmodel>] [-n] [-f] [-p number_of_CPUs]" >+ logn " ! ! ! ! !" >+ logn " ! ! ! ! +--- Number of emulated" >+ logn " ! ! ! ! Hercules processors" >+ logn " ! ! ! +-------- force rebuild of configure" >+ logn " ! ! +------------- no-ansi, do not" >+ logn " ! ! use fancy colours" >+ logn " ! +-------------------------------- thread model to use" >+ logn " ! f or fthread or fish" >+ logn " ! p or pthread or posix" >+ logn " +----------------------------------------------- target cpu type " >+ logn " i586 for Pentium " >+ logn " i686 for Pentium Pro " >+ logn " p4 for Pentium 4 " >+ logn " " >+ logn " The default is ${MYCMD} -c `uname -m` -t ${DEFTHREAD} -p 2" >+ logn " " >+ pause >+ exit >+ ;; >+ esac >+done >+if ! ${CPU_SET} ; then >+ CPU_TYPE=`uname -m` >+ HOST_OPT= >+fi >+ >+if ! ${NUMCPU_SET} ; then >+ NUMCPU=2 >+fi >+ >+case ${OSTYPE} in >+ cygwin) OSTEXT=cygwin >+ ;; >+ linux*) OSTEXT=linux-gnu >+ ;; >+ *) abort "This script does not work for OSTYPE=${OSTYPE}" >+ ;; >+esac >+ >+CPU_TYPE=`lower ${CPU_TYPE}` >+log "CPU type ................................ ${CPU_TYPE}" >+case ${CPU_TYPE} in >+ i586 | pentium | athlon) >+ HOST_OPT=--host=i586-pc-${OSTEXT} >+ TARG_CPU=i586 >+ ;; >+ i686 | pentiumpro) >+ HOST_OPT=--host=i686-pc-${OSTEXT} >+ TARG_CPU=i686 >+ ;; >+ p4 | pentium4) >+ # HOST_OPT=--host=p4-pc-${OSTEXT} >+ TARG_CPU=p4 >+ OPTOPT="-fomit-frame-pointer -O3 -march=pentium4 -mcpu=pentium4" >+ OPTOPT=${OPTOPT}" -mmmx -msse -msse2 -minline-all-stringops -mfpmath=sse" >+ OPTOPT=${OPTOPT}" -maccumulate-outgoing-args" >+ ;; >+ *) abort "Invalid CPU type ${CPU_TYPE}" >+ ;; >+esac >+ >+log "Number of host processors supported ..... ${NUMCPU}" >+if ! ${THREAD_SET} ; then >+ if [ ${OSTYPE} = cygwin ] ; then >+ THREAD_TYPE=fthread >+ else >+ THREAD_TYPE=pthread >+ fi >+fi >+ >+THREAD_TYPE=`lower ${THREAD_TYPE}` >+log "Threading model being used .............. ${THREAD_TYPE}" >+case ${THREAD_TYPE} in >+ f | fthread* | fish ) FTHREAD=yes >+ THREAD_TYPE="optimzed thread (Fish)" >+ ;; >+ p | pthread* | posix) FTHREAD=no >+ THREAD_TYPE="standard thread (posix)" >+ ;; >+ *) abort "Invalid thread model \"${THREAD_TYPE}\"" >+ ;; >+esac >+ >+if test -f Makefile ; then >+ log "Cleaning up previous installation" >+ log "make uninstall" >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! make uninstall >+! ============== >+! >++------------------------------------------------------------------------ >+!EOF! >+ make uninstall >>${LOGFILE} 2>&1 >+ log "make distclean" >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! make distclean >+! ============== >+! >++------------------------------------------------------------------------ >+!EOF! >+ make distclean >>${LOGFILE} 2>&1 >+fi >+if ! test -f ./configure ; then >+ log "Running autogen.sh" >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! bash autogen.sh >+! =============== >+! >++------------------------------------------------------------------------ >+!EOF! >+ bash autogen.sh >>${LOGFILE} 2>&1 || abort "autogen processing failed" >+ log "autogen completed successfully" >+fi >+ >+logn "./configure ${HOST_OPT}" >+logn " --enable-fthreads=${FTHREAD}" >+logn " --enable-custom=\"compiled for ${TARG_CPU}\"" >+if [ "${OPTOPT}X" != "X" ] ; then >+ logn " --enable-optimization=\"${OPTOPT:0:27}\"... " >+fi >+logn " --enable-multi-cpu=${NUMCPU} " >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! ./configure >+! =========== >+! >++------------------------------------------------------------------------ >+!EOF! >+while ! test -f Makefile ; do >+ if [ "${OPTOPT}X" != "X" ] ; then >+ ./configure ${HOST_OPT} \ >+ --enable-fthreads=${FTHREAD} \ >+ --enable-custom="compiled for ${TARG_CPU}" \ >+ --enable-optimization="${OPTOPT}" \ >+ --enable-cckd-bzip2 \ >+ --enable-het-bzip2 \ >+ --enable-multi-cpu=${NUMCPU} >>${LOGFILE} 2>&1 >+ else >+ ./configure ${HOST_OPT} \ >+ --enable-fthreads=${FTHREAD} \ >+ --enable-custom="compiled for ${TARG_CPU}" \ >+ --enable-cckd-bzip2 \ >+ --enable-het-bzip2 \ >+ --enable-multi-cpu=${NUMCPU} >>${LOGFILE} 2>&1 >+ fi >+done >+RC=$? >+if [ ${RC} != 0 ] ; then >+ abort "./configure script failed" >+fi >+rm -f version.o 2>/dev/null >+log "make" >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! make >+! ==== >+! >++------------------------------------------------------------------------ >+!EOF! >+make >>${LOGFILE} 2>&1 || abort "make failed" >+log "make install-strip" >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! make install-strip >+! ================== >+! >++------------------------------------------------------------------------ >+!EOF! >+make install-strip >>${LOGFILE} 2>&1 || abort "make install-strip failed" >+cat >>${LOGFILE} <<!EOF! >++------------------------------------------------------------------------ >+! >+! Time: `date +%H:%M:%S` >+! >+! F I N I T O ! ! ! >+! =================== >+! >++------------------------------------------------------------------------ >+!EOF! >diff -Naupr hercules-3.05/_build.bat hercules-20070717/_build.bat >--- hercules-3.05/_build.bat 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/_build.bat 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,29 @@ >+@echo off >+REM +-------------------------------------------------------------------------------+ >+REM ! ! >+REM ! Name: _build.bat ! >+REM ! ! >+REM ! Desc: build Hercules with various options. Windows bat front end ! >+REM ! ! >+REM +-------------------------------------------------------------------------------+ >+REM ! >+REM ! Change Log: '$Log: _build.bat,v $ >+REM ! Change Log: 'Revision 1.9 2005/09/24 16:17:21 jmaynard >+REM ! Change Log: ' >+REM ! Change Log: 'The big move: moving MSVC (mingw_port) branch to the trunk. Cross your >+REM ! Change Log: 'fingers... >+REM ! Change Log: ' >+REM ! Change Log: 'Revision 1.8.4.1 2005/03/01 11:22:05 fish >+REM ! Change Log: 'fixing the last(?) of my CRLF screwups >+REM ! Change Log: ' >+REM ! Change Log: 'Revision 1.8 2004/03/28 15:11:58 vbandke >+REM ! Change Log: 'no message >+REM ! Change Log: ' >+REM ! >+REM +------------------------------------------------------------------------------- >+echo off >+SET ANSI_FLAG=Y >+SET BASH_OPT=+e +x >+bash %BASH_OPT% _build.tail >+bash %BASH_OPT% _build -c p4 -p 1 -f >+pause >diff -Naupr hercules-3.05/_build.tail hercules-20070717/_build.tail >--- hercules-3.05/_build.tail 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/_build.tail 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,14 @@ >+#!/bin/bash >+# >+# $Id: _build.tail,v 1.2 2006/12/08 09:43:16 jj Exp $ >+# >+# $Log: _build.tail,v $ >+# Revision 1.2 2006/12/08 09:43:16 jj >+# Add CVS message log >+# >+# >+MYCMD=`basename ${0} .tail` >+LOGFILE=`pwd`/${MYCMD}.log >+rm -f ${LOGFILE} >/dev/null 2>&1 >+touch ${LOGFILE} >+CMD \/c start "Snapshot Logfile ${LOGFILE}" /i tail -f ${LOGFILE} >diff -Naupr hercules-3.05/cardpch.c hercules-20070717/cardpch.c >--- hercules-3.05/cardpch.c 2007-06-23 14:58:03.000000000 +0200 >+++ hercules-20070717/cardpch.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CARDPCH.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Card Punch Device Handler */ > >-// $Id: cardpch.c,v 1.31 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cardpch.c,v 1.32 2007/11/21 22:54:13 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for emulated */ >@@ -9,6 +9,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: cardpch.c,v $ >+// Revision 1.32 2007/11/21 22:54:13 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.31 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -133,7 +136,8 @@ static void cardpch_query_device (DEVBLK > int buflen, char *buffer) > { > >- *class = "PCH"; >+ BEGIN_DEVICE_CLASS_QUERY( "PCH", dev, class, buflen, buffer ); >+ > snprintf (buffer, buflen, "%s%s%s", > dev->filename, > (dev->ascii ? " ascii" : " ebcdic"), >diff -Naupr hercules-3.05/cardrdr.c hercules-20070717/cardrdr.c >--- hercules-3.05/cardrdr.c 2007-06-23 14:58:03.000000000 +0200 >+++ hercules-20070717/cardrdr.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CARDRDR.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Card Reader Device Handler */ > >-// $Id: cardrdr.c,v 1.46 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cardrdr.c,v 1.47 2007/11/21 22:54:13 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for emulated */ >@@ -9,6 +9,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: cardrdr.c,v $ >+// Revision 1.47 2007/11/21 22:54:13 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.46 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -330,7 +333,7 @@ int fc; > static void cardrdr_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- *class = "RDR"; >+ BEGIN_DEVICE_CLASS_QUERY( "RDR", dev, class, buflen, buffer ); > > snprintf (buffer, buflen, "%s%s%s%s%s%s%s%s", > ((dev->filename[0] == '\0') ? "*" : (char *)dev->filename), >diff -Naupr hercules-3.05/cckdcomp.c hercules-20070717/cckdcomp.c >--- hercules-3.05/cckdcomp.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cckdcomp.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,13 +2,16 @@ > /* Perform chkdsk for a Compressed CKD Direct Access Storage */ > /* Device file. */ > >-// $Id: cckdcomp.c,v 1.30 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cckdcomp.c,v 1.31 2007/12/01 23:31:57 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* Remove all free space on a compressed ckd file */ > /*-------------------------------------------------------------------*/ > > // $Log: cckdcomp.c,v $ >+// Revision 1.31 2007/12/01 23:31:57 fish >+// Fix cckdcdsk/cckdcomp/cckdutil no message o/p issue >+// > // Revision 1.30 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -75,6 +78,7 @@ DEVBLK *dev=&devblk; > for (i = 0; i < argc; i++) > { > memset (dev, 0, sizeof(DEVBLK)); >+ dev->batch = 1; > > /* open the file */ > hostpath(dev->filename, argv[i], sizeof(dev->filename)); >diff -Naupr hercules-3.05/cckddasd.c hercules-20070717/cckddasd.c >--- hercules-3.05/cckddasd.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cckddasd.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CCKDDASD.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Compressed CKD Direct Access Storage Device Handler */ > >-// $Id: cckddasd.c,v 1.141 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cckddasd.c,v 1.143 2008/01/04 03:35:30 gsmith Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device functions for compressed emulated */ >@@ -9,6 +9,12 @@ > /*-------------------------------------------------------------------*/ > > // $Log: cckddasd.c,v $ >+// Revision 1.143 2008/01/04 03:35:30 gsmith >+// Fix to sf- command - Thanks Christopher! >+// >+// Revision 1.142 2008/01/04 02:28:51 gsmith >+// sf commands update >+// > // Revision 1.141 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -41,7 +47,7 @@ int cckd_write (DEVBLK *dev, int sfx > int cckd_ftruncate(DEVBLK *dev, int sfx, off_t off); > void *cckd_malloc(DEVBLK *dev, char *id, size_t size); > void *cckd_calloc(DEVBLK *dev, char *id, size_t n, size_t size); >-void cckd_free(DEVBLK *dev, char *id,void *p); >+void *cckd_free(DEVBLK *dev, char *id,void *p); > > int cckd_read_track(DEVBLK *dev, int trk, BYTE *unitstat); > int cckd_update_track(DEVBLK *dev, int trk, int off, >@@ -89,14 +95,14 @@ int cckd_null_trk(DEVBLK *dev, BYTE > int cckd_check_null_trk (DEVBLK *dev, BYTE *buf, int trk, int len); > int cckd_cchh(DEVBLK *dev, BYTE *buf, int trk); > int cckd_validate(DEVBLK *dev, BYTE *buf, int trk, int len); >-DLL_EXPORT char *cckd_sf_name(DEVBLK *dev, int sfx); >-DLL_EXPORT int cckd_sf_init(DEVBLK *dev); >-DLL_EXPORT int cckd_sf_new(DEVBLK *dev); >-DLL_EXPORT void cckd_sf_add(DEVBLK *dev); >-DLL_EXPORT void cckd_sf_remove(DEVBLK *dev, int flag); >-DLL_EXPORT void cckd_sf_newname(DEVBLK *dev, char *sfn); >-DLL_EXPORT void cckd_sf_comp(DEVBLK *dev); >-DLL_EXPORT void cckd_sf_stats(DEVBLK *dev); >+char *cckd_sf_name(DEVBLK *dev, int sfx); >+int cckd_sf_init(DEVBLK *dev); >+int cckd_sf_new(DEVBLK *dev); >+DLL_EXPORT void *cckd_sf_add(void *data); >+DLL_EXPORT void *cckd_sf_remove(void *data); >+DLL_EXPORT void *cckd_sf_comp(void *data); >+DLL_EXPORT void *cckd_sf_chk(void *data); >+DLL_EXPORT void *cckd_sf_stats(void *data); > int cckd_disable_syncio(DEVBLK *dev); > void cckd_lock_devchain(int flag); > void cckd_unlock_devchain(); >@@ -415,7 +421,7 @@ int i; > > /* free the level 1 tables */ > for (i = 0; i <= cckd->sfn; i++) >- cckd_free (dev, "l1", cckd->l1[i]); >+ cckd->l1[i] = cckd_free (dev, "l1", cckd->l1[i]); > > /* reset the device handler */ > if (cckd->ckddasd) >@@ -429,8 +435,7 @@ int i; > release_lock (&cckd->filelock); > > /* free the cckd extension */ >- dev->cckd_ext= NULL; >- cckd_free (dev, "ext", cckd); >+ dev->cckd_ext= cckd_free (dev, "ext", cckd); > > if (dev->dasdsfn) free (dev->dasdsfn); > dev->dasdsfn = NULL; >@@ -781,10 +786,11 @@ void *p; > /*-------------------------------------------------------------------*/ > /* free */ > /*-------------------------------------------------------------------*/ >-void cckd_free (DEVBLK *dev, char *id, void *p) >+void *cckd_free (DEVBLK *dev, char *id, void *p) > { > cckd_trace (dev, "%s free %p\n", id, p); >- free (p); >+ if (p) free (p); >+ return NULL; > } /* end function cckd_free */ > > /*-------------------------------------------------------------------*/ >@@ -2380,13 +2386,13 @@ int i; > sfx, (U64)CCKD_L1TAB_POS); > > /* Free the old level 1 table if it exists */ >- if (cckd->l1[sfx] != NULL) >- cckd_free (dev, "l1", cckd->l1[sfx]); >+ cckd->l1[sfx] = cckd_free (dev, "l1", cckd->l1[sfx]); > > /* Allocate the level 1 table */ > len = cckd->cdevhdr[sfx].numl1tab * CCKD_L1ENT_SIZE; > if ((cckd->l1[sfx] = cckd_malloc (dev, "l1", len)) == NULL) > return -1; >+ memset(cckd->l1[sfx], sfx ? 0xFF : 0, len); > > /* Read the level 1 table */ > if (cckd_read (dev, sfx, CCKD_L1TAB_POS, cckd->l1[sfx], len) < 0) >@@ -2518,7 +2524,7 @@ CCKD_FREEBLK freeblk; > cckd_trace (dev, "file[%d] read_fsp number %d\n", > sfx, cckd->cdevhdr[sfx].free_number); > >- if (cckd->free) cckd_free (dev, "free", cckd->free); >+ cckd->free = cckd_free (dev, "free", cckd->free); > cckd->free1st = cckd->freelast = cckd->freeavail = -1; > > /* Get storage for the internal free space chain >@@ -2563,7 +2569,7 @@ CCKD_FREEBLK freeblk; > } > cckd->free[i-1].next = -1; > cckd->freelast = i-1; >- free (fsp); >+ fsp = cckd_free (dev, "fsp", fsp); > > /* truncate if new format free space was at the end */ > if (ofree == cckd->cdevhdr[sfx].size) >@@ -2672,7 +2678,7 @@ CCKD_FREEBLK *fsp = NULL; > ppos = cckd->free[i].pos; > } > rc = cckd_write (dev, sfx, fpos, fsp, n); >- cckd_free (dev, "fsp", fsp); >+ fsp = cckd_free (dev, "fsp", fsp); > if (rc < 0) > return -1; > cckd->cdevhdr[sfx].free = (U32)fpos; >@@ -2690,8 +2696,7 @@ CCKD_FREEBLK *fsp = NULL; > } /* if (cckd->cdevhdr[sfx].free) */ > > /* Free the free space array */ >- if (cckd->free) cckd_free (dev, "free", cckd->free); >- cckd->free = NULL; >+ cckd->free = cckd_free (dev, "free", cckd->free); > cckd->freenbr = 0; > cckd->free1st = cckd->freelast = cckd->freeavail = -1; > >@@ -3718,11 +3723,7 @@ CKDDASD_DEVHDR devhdr; > return 0; > > sf_new_error: >- if (cckd->l1[cckd->sfn+1] != NULL) >- { >- cckd_free (dev, "l1", cckd->l1[cckd->sfn+1]); >- cckd->l1[cckd->sfn+1] = NULL; >- } >+ cckd->l1[cckd->sfn+1] = cckd_free(dev, "l1", cckd->l1[cckd->sfn+1]); > cckd_close (dev, cckd->sfn+1); > cckd->open[cckd->sfn+1] = CCKD_OPEN_NONE; > unlink (cckd_sf_name (dev, cckd->sfn+1)); >@@ -3737,16 +3738,32 @@ sf_new_error: > /*-------------------------------------------------------------------*/ > /* Add a shadow file (sf+) */ > /*-------------------------------------------------------------------*/ >-void cckd_sf_add (DEVBLK *dev) >+void *cckd_sf_add (void *data) > { >+DEVBLK *dev = data; /* -> DEVBLK */ > CCKDDASD_EXT *cckd; /* -> cckd extension */ > int syncio; /* Saved syncio bit */ > >+ if (dev == NULL) >+ { >+ int n = 0; >+ for (dev=sysblk.firstdev; dev; dev=dev->nextdev) >+ if (dev->cckd_ext) >+ { >+ logmsg( _("HHCCD207I Adding device %d:%4.4X\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum ); >+ cckd_sf_add (dev); >+ n++; >+ } >+ logmsg( _("HHCCD092I %d devices processed\n"), n ); >+ return NULL; >+ } >+ > cckd = dev->cckd_ext; > if (!cckd) > { > logmsg (_("HHCCD160E %4.4X not a cckd device\n"), dev->devnum); >- return; >+ return NULL; > } > > /* Disable synchronous I/O for the device */ >@@ -3754,6 +3771,15 @@ int syncio; > > /* Schedule updated track entries to be written */ > obtain_lock (&cckd->iolock); >+ if (cckd->merging) >+ { >+ dev->syncio = syncio; >+ release_lock (&cckd->iolock); >+ logmsg (_("HHCCD165W %4.4X error adding shadow file, " >+ "sf command busy on device\n"), >+ dev->devnum,cckd->sfn); >+ return NULL; >+ } > cckd->merging = 1; > cckd_flush_cache (dev); > while (cckd->wrpending || cckd->ioactive) >@@ -3802,49 +3828,65 @@ cckd_sf_add_exit: > release_lock (&cckd->iolock); > > cckd_sf_stats (dev); >- >+ return NULL; > } /* end function cckd_sf_add */ > > /*-------------------------------------------------------------------*/ > /* Remove a shadow file (sf-) */ > /*-------------------------------------------------------------------*/ >-void cckd_sf_remove (DEVBLK *dev, int flag) >+void *cckd_sf_remove (void *data) > { >+DEVBLK *dev = data; /* -> DEVBLK */ > CCKDDASD_EXT *cckd; /* -> cckd extension */ > int syncio; /* Saved syncio bit */ > int rc; /* Return code */ > int from_sfx, to_sfx; /* From/to file index */ > int fix; /* nullfmt index */ > int add = 0; /* 1=Add shadow file back */ >-int err = 0; /* 1=I/O error occurred */ >-int l2updated; /* 1=L2 table was updated */ >+int l2updated = 0; /* 1=L2 table was updated */ > int i,j; /* Loop indexes */ > int merge, force; /* Flags */ > off_t pos; /* File offset */ > size_t len; /* Length to read/write */ > int size; /* Image size */ >+int trk = -1; /* Track being read/written */ > CCKD_L2ENT from_l2[256], /* Level 2 tables */ > to_l2[256]; > CCKD_L2ENT new_l2; /* New level 2 table entry */ > BYTE buf[65536]; /* Buffer */ > >- cckd = dev->cckd_ext; >- if (!cckd) >+ if (dev == NULL) > { >- logmsg (_("HHCCD170E %4.4X not a cckd device\n"),dev->devnum); >- return; >+ int n = 0; >+ merge = cckdblk.sfmerge; >+ force = cckdblk.sfforce; >+ cckdblk.sfmerge = cckdblk.sfforce = 0; >+ for (dev=sysblk.firstdev; dev; dev=dev->nextdev) >+ if ((cckd = dev->cckd_ext)) >+ { >+ logmsg( _("HHCCD179I Merging device %d:%4.4X\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum ); >+ cckd->sfmerge = merge; >+ cckd->sfforce = force; >+ cckd_sf_remove (dev); >+ n++; >+ } >+ logmsg( _("HHCCD092I %d devices processed\n"), n ); >+ return NULL; > } > >- if (cckd->sfn == 0) >+ cckd = dev->cckd_ext; >+ if (!cckd) > { >- logmsg (_("HHCCD171E %4.4X file[%d] cannot remove base file\n"), >- dev->devnum,cckd->sfn); >- return; >+ logmsg (_("HHCCD170E %4.4X not a cckd device\n"), >+ dev ? dev->devnum : 0); >+ return NULL; > } > > /* Set flags */ >- merge = flag > 0; >- force = flag == 2; >+ merge = cckd->sfmerge || cckd->sfforce; >+ force = cckd->sfforce; >+ cckd->sfmerge = cckd->sfforce = 0; > > cckd_trace (dev, "merge starting: %s %s\n", > merge ? "merge" : "nomerge", force ? "force" : ""); >@@ -3854,6 +3896,15 @@ BYTE buf[65536]; > > /* Schedule updated track entries to be written */ > obtain_lock (&cckd->iolock); >+ if (cckd->merging) >+ { >+ dev->syncio = syncio; >+ release_lock (&cckd->iolock); >+ logmsg (_("HHCCD175W %4.4X file[%d] merge failed, " >+ "sf command busy on device\n"), >+ dev->devnum,cckd->sfn); >+ return NULL; >+ } > cckd->merging = 1; > cckd_flush_cache (dev); > while (cckd->wrpending || cckd->ioactive) >@@ -3868,16 +3919,36 @@ BYTE buf[65536]; > release_lock (&cckd->iolock); > > obtain_lock (&cckd->filelock); >+ >+ if (cckd->sfn == 0) >+ { >+ dev->syncio = syncio; >+ release_lock (&cckd->filelock); >+ logmsg (_("HHCCD171E %4.4X file[%d] cannot remove base file\n"), >+ dev->devnum,cckd->sfn); >+ return NULL; >+ } >+ > from_sfx = cckd->sfn; > to_sfx = cckd->sfn - 1; > fix = cckd->cdevhdr[to_sfx].nullfmt; > >+ /* Harden the `from' file */ >+ if (cckd_harden (dev) < 0) >+ { >+ logmsg (_("HHCCD174E %4.4X file[%d] not merged, " >+ "file[%d] not hardened\n"), >+ dev->devnum, from_sfx, from_sfx); >+ goto sf_remove_exit; >+ } >+ > /* Attempt to re-open the `to' file read-write */ > cckd_close (dev, to_sfx); > if (to_sfx > 0 || !dev->ckdrdonly || force) > cckd_open (dev, to_sfx, O_RDWR|O_BINARY, 1); > if (cckd->fd[to_sfx] < 0) > { >+ /* `from' file can't be opened read-write */ > cckd_open (dev, to_sfx, O_RDONLY|O_BINARY, 0); > if (merge) > { >@@ -3893,8 +3964,11 @@ BYTE buf[65536]; > } > else > { >+ /* `from' file opened read-write */ >+ cckd->sfn = to_sfx; > if (cckd_chkdsk (dev, 0) < 0) > { >+ cckd->sfn = from_sfx; > logmsg (_("HHCCD173E %4.4X file[%d] not merged, " > "file[%d] check failed\n"), > dev->devnum, to_sfx, to_sfx); >@@ -3902,45 +3976,36 @@ BYTE buf[65536]; > } > } > >+ cckd->sfn = to_sfx; >+ > /* Perform backwards merge */ > if (merge) > { >- /* Harden the current file */ >- if (cckd_harden (dev) < 0) >- { >- logmsg (_("HHCCD174E %4.4X file[%d] not merged, " >- "file not hardened\n"), >- dev->devnum, from_sfx); >- goto sf_remove_exit; >- } >- > cckd_trace (dev, "merging to file[%d]\n", to_sfx); >- cckd->cdevhdr[to_sfx].options |= (CCKD_OPENED | CCKD_ORDWR); > > /* Make the target file the active file */ > cckd->sfn = to_sfx; >+ cckd->cdevhdr[to_sfx].options |= (CCKD_OPENED | CCKD_ORDWR); > > /* Loop for each level 1 table entry */ > for (i = 0; i < cckd->cdevhdr[from_sfx].numl1tab; i++) > { >+ l2updated = 0; > /* Continue if from L2 doesn't exist */ > if (cckd->l1[from_sfx][i] == 0xffffffff > || (cckd->l1[from_sfx][i] == 0 && cckd->l1[to_sfx][i] == 0)) > continue; > >+ trk = i*256; >+ > /* Read `from' l2 table */ > if (cckd->l1[from_sfx][i] == 0) > memset (&from_l2, 0, CCKD_L2TAB_SIZE); >- else if (cckd->l1[from_sfx][i] == 0xffffffff) >- memset (&from_l2, 0xff, CCKD_L2TAB_SIZE); > else > { > pos = (off_t)cckd->l1[from_sfx][i]; > if (cckd_read(dev, from_sfx, pos, &from_l2, CCKD_L2TAB_SIZE) < 0) >- { >- err = 1; >- continue; >- } >+ goto sf_merge_error; > } > > /* Read `to' l2 table */ >@@ -3952,16 +4017,13 @@ BYTE buf[65536]; > { > pos = (off_t)cckd->l1[to_sfx][i]; > if (cckd_read(dev, to_sfx, pos, &to_l2, CCKD_L2TAB_SIZE) < 0) >- { >- err = 1; >- continue; >- } >+ goto sf_merge_error; > } > > /* Loop for each level 2 table entry */ >- l2updated = 0; > for (j = 0; j < 256; j++) > { >+ trk = i*256 + j; > /* Continue if from L2 entry doesn't exist */ > if (from_l2[j].pos == 0xffffffff > || (from_l2[j].pos == 0 && to_l2[j].pos == 0)) >@@ -3973,18 +4035,12 @@ BYTE buf[65536]; > { > pos = (off_t)from_l2[j].pos; > if (cckd_read (dev, from_sfx, pos, buf, len) < 0) >- { >- err = 1; >- continue; >- } >+ goto sf_merge_error; > > /* Get space for the `to' track/blkgrp image */ > size = len; > if ((pos = cckd_get_space (dev, &size, CCKD_SIZE_EXACT)) < 0) >- { >- err = 1; >- continue; >- } >+ goto sf_merge_error; > > new_l2.pos = (U32)pos; > new_l2.len = (U16)len; >@@ -3992,10 +4048,7 @@ BYTE buf[65536]; > > /* Write the `to' track/blkgrp image */ > if (cckd_write(dev, to_sfx, pos, buf, len) < 0) >- { >- err = 1; >- continue; >- } >+ goto sf_merge_error; > } > else > { >@@ -4012,12 +4065,12 @@ BYTE buf[65536]; > to_l2[j].pos = new_l2.pos; > to_l2[j].len = new_l2.len; > to_l2[j].size = new_l2.size; >- > } /* for each level 2 table entry */ > > /* Update the `to' level 2 table */ > if (l2updated) > { >+ l2updated = 0; > pos = (off_t)cckd->l1[to_sfx][i]; > if (memcmp (&to_l2, &empty_l2[fix], CCKD_L2TAB_SIZE) == 0) > { >@@ -4028,12 +4081,10 @@ BYTE buf[65536]; > { > size = CCKD_L2TAB_SIZE; > if (pos == 0 || pos == (off_t)0xffffffff) >- pos = cckd_get_space (dev, &size, CCKD_L2SPACE); >+ if ((pos = cckd_get_space (dev, &size, CCKD_L2SPACE)) < 0) >+ goto sf_merge_error; > if (cckd_write(dev, to_sfx, pos, &to_l2, CCKD_L2TAB_SIZE) < 0) >- { >- err = 1; >- continue; >- } >+ goto sf_merge_error; > } /* `to' level 2 table not null */ > > /* Update the level 1 table index */ >@@ -4048,34 +4099,22 @@ BYTE buf[65536]; > > /* Validate the merge */ > cckd_harden (dev); >- cckd_chkdsk (dev, err ? 2 : 0); >+ cckd_chkdsk (dev, 0); > cckd_read_init (dev); > > } /* if merge */ >- else >- { >- /* Release the free space chain */ >- if (cckd->free) cckd_free (dev, "free", cckd->free); >- cckd->free = NULL; >- cckd->freenbr = 0; >- cckd->free1st = cckd->freelast = cckd->freeavail = -1; >- >- cckd->sfn = to_sfx; >- } > > /* Remove the old file */ > cckd_close (dev, from_sfx); >- cckd_free (dev, "l1", cckd->l1[from_sfx]); >- cckd->l1[from_sfx] = NULL; >+ cckd->l1[from_sfx] = cckd_free (dev, "l1", cckd->l1[from_sfx]); > memset (&cckd->cdevhdr[from_sfx], 0, CCKDDASD_DEVHDR_SIZE); > rc = unlink (cckd_sf_name (dev, from_sfx)); > > /* Add the file back if necessary */ > if (add) rc = cckd_sf_new (dev) ; > >- logmsg (_("HHCCD181I %4.4X shadow file [%d] successfully %s%s\n"), >- dev->devnum, from_sfx, merge ? "merged" : add ? "re-added" : "removed", >- err ? " with errors" : ""); >+ logmsg (_("HHCCD181I %4.4X shadow file [%d] successfully %s\n"), >+ dev->devnum, from_sfx, merge ? "merged" : add ? "re-added" : "removed"); > > sf_remove_exit: > >@@ -4085,6 +4124,8 @@ sf_remove_exit: > release_lock (&cckd->filelock); > > obtain_lock (&cckd->iolock); >+ cckd_purge_cache (dev); cckd_purge_l2 (dev); >+ dev->bufcur = dev->cache = -1; > cckd->merging = 0; > if (cckd->iowaiters) > broadcast_condition (&cckd->iocond); >@@ -4093,67 +4134,171 @@ sf_remove_exit: > release_lock (&cckd->iolock); > > cckd_sf_stats (dev); >+ return NULL; >+ >+sf_merge_error: >+ >+ if (trk < 0) >+ logmsg (_("HHCCD180E %4.4X file[%d] not merged, error during merge\n"), >+ dev->devnum, from_sfx); >+ else >+ logmsg (_("HHCCD180E %4.4X file[%d] not merged, error processing trk %d\n"), >+ dev->devnum, from_sfx, trk); >+ >+ if (l2updated && cckd->l1[to_sfx][i] && cckd->l1[to_sfx][i] != 0xffffffff) >+ { >+ l2updated = 0; >+ pos = (off_t)cckd->l1[to_sfx][i]; >+ cckd_write(dev, to_sfx, pos, &to_l2, CCKD_L2TAB_SIZE); >+ } >+ cckd_harden(dev); >+ cckd_chkdsk (dev, 2); >+ cckd->sfn = from_sfx; >+ cckd_harden(dev); >+ cckd_chkdsk (dev, 2); >+ goto sf_remove_exit; >+ > } /* end function cckd_sf_remove */ > > /*-------------------------------------------------------------------*/ >-/* Set shadow file name (sf=) */ >+/* Check and compress a shadow file (sfc) */ > /*-------------------------------------------------------------------*/ >-void cckd_sf_newname (DEVBLK *dev, char *sfn) >+void *cckd_sf_comp (void *data) > { >+DEVBLK *dev = data; /* -> DEVBLK */ > CCKDDASD_EXT *cckd; /* -> cckd extension */ >+int syncio; /* Saved syncio bit */ >+int rc; /* Return code */ >+ >+ if (dev == NULL) >+ { >+ int n = 0; >+ for (dev=sysblk.firstdev; dev; dev=dev->nextdev) >+ if (dev->cckd_ext) >+ { >+ logmsg( _("HHCCD207I Compressing device %d:%4.4X\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum ); >+ cckd_sf_comp (dev); >+ n++; >+ } >+ logmsg( _("HHCCD092I %d devices processed\n"), n ); >+ return NULL; >+ } > > cckd = dev->cckd_ext; > if (!cckd) > { >- logmsg (_("HHCCD201W %4.4X device is not a shadow file\n"),dev->devnum); >- return; >+ logmsg (_("HHCCD205W %4.4X device is not a cckd device\n"), dev->devnum); >+ return NULL; > } >- if (CCKD_MAX_SF == 0) >+ >+ /* Disable synchronous I/O for the device */ >+ syncio = cckd_disable_syncio(dev); >+ >+ /* schedule updated track entries to be written */ >+ obtain_lock (&cckd->iolock); >+ if (cckd->merging) > { >- logmsg (_("HHCCD202W %4.4X file shadowing not activated\n"), dev->devnum); >- return; >+ dev->syncio = syncio; >+ release_lock (&cckd->iolock); >+ logmsg (_("HHCCD206W %4.4X file[%d] compress failed, " >+ "sf command busy on device\n"), >+ dev->devnum,cckd->sfn); >+ return NULL; > } >+ cckd->merging = 1; >+ cckd_flush_cache (dev); >+ while (cckd->wrpending || cckd->ioactive) >+ { >+ cckd->iowaiters++; >+ wait_condition (&cckd->iocond, &cckd->iolock); >+ cckd->iowaiters--; >+ cckd_flush_cache (dev); >+ } >+ cckd_purge_cache (dev); cckd_purge_l2 (dev); >+ dev->bufcur = dev->cache = -1; >+ release_lock (&cckd->iolock); > >+ /* obtain control of the file */ > obtain_lock (&cckd->filelock); > >- if (cckd->sfn) >- { >- logmsg (_("HHCCD203W %4.4X shadowing is already active\n"),dev->devnum); >- release_lock (&cckd->filelock); >- return; >- } >+ /* harden the current file */ >+ cckd_harden (dev); > >- if (dev->dasdsfn != NULL) >- free (dev->dasdsfn); >+ /* Call the compress function */ >+ rc = cckd_comp (dev); > >- dev->dasdsfn = strdup (sfn); >- logmsg (_("HHCCD204I %4.4X shadow file name set to %s\n"), dev->devnum, sfn); >+ /* Perform initial read */ >+ rc = cckd_read_init (dev); > > release_lock (&cckd->filelock); > >-} /* end function cckd_sf_newname */ >+ obtain_lock (&cckd->iolock); >+ cckd->merging = 0; >+ if (cckd->iowaiters) >+ broadcast_condition (&cckd->iocond); >+ dev->syncio = syncio; >+ release_lock (&cckd->iolock); >+ >+ /* Display the shadow file statistics */ >+ cckd_sf_stats (dev); >+ >+ return NULL; >+} /* end function cckd_sf_comp */ > > /*-------------------------------------------------------------------*/ >-/* Check and compress a shadow file (sfc) */ >+/* Check a shadow file (sfk) */ > /*-------------------------------------------------------------------*/ >-void cckd_sf_comp (DEVBLK *dev) >+void *cckd_sf_chk (void *data) > { >+DEVBLK *dev = data; /* -> DEVBLK */ > CCKDDASD_EXT *cckd; /* -> cckd extension */ > int syncio; /* Saved syncio bit */ > int rc; /* Return code */ >+int level = 2; /* Check level */ >+ >+ if (dev == NULL) >+ { >+ int n = 0; >+ level = cckdblk.sflevel; >+ cckdblk.sflevel = 0; >+ for (dev=sysblk.firstdev; dev; dev=dev->nextdev) >+ if ((cckd = dev->cckd_ext)) >+ { >+ logmsg( _("HHCCD207I Checking device %d:%4.4X level %d\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum, level ); >+ cckd->sflevel = level; >+ cckd_sf_chk (dev); >+ n++; >+ } >+ logmsg( _("HHCCD092I %d devices processed\n"), n ); >+ return NULL; >+ } > > cckd = dev->cckd_ext; > if (!cckd) > { >- logmsg (_("HHCCD205W %4.4X device is not a shadow file\n"), dev->devnum); >- return; >+ logmsg (_("HHCCD205W %4.4X device is not a cckd device\n"), dev->devnum); >+ return NULL; > } > >+ level = cckd->sflevel; >+ cckd->sflevel = 0; >+ > /* Disable synchronous I/O for the device */ > syncio = cckd_disable_syncio(dev); > > /* schedule updated track entries to be written */ > obtain_lock (&cckd->iolock); >+ if (cckd->merging) >+ { >+ dev->syncio = syncio; >+ release_lock (&cckd->iolock); >+ logmsg (_("HHCCD206W %4.4X file[%d] check failed, " >+ "sf command busy on device\n"), >+ dev->devnum,cckd->sfn); >+ return NULL; >+ } > cckd->merging = 1; > cckd_flush_cache (dev); > while (cckd->wrpending || cckd->ioactive) >@@ -4173,8 +4318,8 @@ int rc; > /* harden the current file */ > cckd_harden (dev); > >- /* Call the compress function */ >- rc = cckd_comp (dev); >+ /* Call the chkdsk function */ >+ rc = cckd_chkdsk (dev, level); > > /* Perform initial read */ > rc = cckd_read_init (dev); >@@ -4191,14 +4336,15 @@ int rc; > /* Display the shadow file statistics */ > cckd_sf_stats (dev); > >- return; >-} /* end function cckd_sf_comp */ >+ return NULL; >+} /* end function cckd_sf_chk */ > > /*-------------------------------------------------------------------*/ > /* Display shadow file statistics (sfd) */ > /*-------------------------------------------------------------------*/ >-void cckd_sf_stats (DEVBLK *dev) >+void *cckd_sf_stats (void *data) > { >+DEVBLK *dev = data; /* -> DEVBLK */ > CCKDDASD_EXT *cckd; /* -> cckd extension */ > struct stat st; /* File information */ > int i; /* Index */ >@@ -4207,11 +4353,26 @@ char *ost[] = {" ", "ro", "rd > unsigned long long size=0,free=0; /* Total size, free space */ > int freenbr=0; /* Total number free spaces */ > >+ if (dev == NULL) >+ { >+ int n = 0; >+ for (dev=sysblk.firstdev; dev; dev=dev->nextdev) >+ if (dev->cckd_ext) >+ { >+ logmsg( _("HHCCD208I Displaying device %d:%4.4X\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum ); >+ cckd_sf_stats (dev); >+ n++; >+ } >+ logmsg( _("HHCCD092I %d devices processed\n"), n ); >+ return NULL; >+ } >+ > cckd = dev->cckd_ext; > if (!cckd) > { >- logmsg (_("HHCCD206W %4.4X device is not a shadow file\n")); >- return; >+ logmsg (_("HHCCD209W %4.4X device is not a cckd device\n")); >+ return NULL; > } > > // obtain_lock (&cckd->filelock); >@@ -4262,6 +4423,7 @@ int freenbr=0; > cckd->reads[i], cckd->writes[i], cckd->l2reads[i]); > } > // release_lock (&cckd->filelock); >+ return NULL; > } /* end function cckd_sf_stats */ > > /*-------------------------------------------------------------------*/ >@@ -4274,7 +4436,7 @@ int cckd_disable_syncio(DEVBLK *dev) > while (dev->syncio_active) > { > release_lock(&dev->lock); >- usleep(1); >+ usleep(500); > obtain_lock(&dev->lock); > } > dev->syncio = 0; >@@ -4383,10 +4545,7 @@ int gctab[5]= { > > /* Free newbuf if it hasn't been used */ > if (!cckd->ioactive && !cckd->bufused && cckd->newbuf) >- { >- cckd_free (dev, "newbuf", cckd->newbuf); >- cckd->newbuf = NULL; >- } >+ cckd->newbuf = cckd_free (dev, "newbuf", cckd->newbuf); > cckd->bufused = 0; > > /* If OPENED bit not on then flush if updated */ >diff -Naupr hercules-3.05/cckddiag.c hercules-20070717/cckddiag.c >--- hercules-3.05/cckddiag.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cckddiag.c 2008-09-03 13:07:48.000000000 +0200 >@@ -3,13 +3,18 @@ > /* 2003-02-07 James M. Morrison initial implementation */ > /* portions borrowed from cckdcdsk & other CCKD code */ > >-// $Id: cckddiag.c,v 1.26 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cckddiag.c,v 1.27 2008/06/22 05:54:30 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* Diagnostic tool to display various CCKD data */ > /*-------------------------------------------------------------------*/ > > // $Log: cckddiag.c,v $ >+// Revision 1.27 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// > // Revision 1.26 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -141,15 +146,9 @@ int readpos( > exit (1); > } > if (debug) >-#if SIZEOF_SIZE_T == 8 >- fprintf(stdout, >- "READPOS reading buf addr %p length %ld (0x%8.8lX)\n", >- buf, len, len); >-#else > fprintf(stdout, >- "READPOS reading buf addr %p length %d (0x%8.8X)\n", >+ "READPOS reading buf addr "PTR_FMTx" length %"SIZE_T_FMT"d (0x"SIZE_T_FMTX")\n", > buf, len, len); >-#endif > if (read(fd, buf, len) < (ssize_t)len) { > fprintf(stdout, _("cckddiag: read error: %s\n"), > strerror(errno)); >@@ -516,13 +515,8 @@ char pathname[MAX_PATH]; > /*---------------------------------------------------------------*/ > readpos(fd, &devhdr, 0, sizeof(devhdr)); > if (cmd_devhdr) { >-#if SIZEOF_SIZE_T == 8 >- fprintf(stdout, "\nDEVHDR - %ld (decimal) bytes:\n", >+ fprintf(stdout, "\nDEVHDR - %"SIZE_T_FMT"d (decimal) bytes:\n", > sizeof(devhdr)); >-#else >- fprintf(stdout, "\nDEVHDR - %d (decimal) bytes:\n", >- sizeof(devhdr)); >-#endif > data_dump(&devhdr, sizeof(devhdr)); > } > >@@ -588,13 +582,8 @@ char pathname[MAX_PATH]; > /*---------------------------------------------------------------*/ > readpos(fd, &cdevhdr, CKDDASD_DEVHDR_SIZE, sizeof(cdevhdr)); > if (cmd_cdevhdr) { >-#if SIZEOF_SIZE_T == 8 >- fprintf(stdout, "\nCDEVHDR - %ld (decimal) bytes:\n", >+ fprintf(stdout, "\nCDEVHDR - %"SIZE_T_FMT"d (decimal) bytes:\n", > sizeof(cdevhdr)); >-#else >- fprintf(stdout, "\nCDEVHDR - %d (decimal) bytes:\n", >- sizeof(cdevhdr)); >-#endif > data_dump(&cdevhdr, sizeof(cdevhdr)); > } > >@@ -616,13 +605,8 @@ char pathname[MAX_PATH]; > readpos(fd, l1, CCKD_L1TAB_POS, n * CCKD_L1ENT_SIZE); > /* L1TAB itself is not adjusted for endian-ness */ > if (cmd_l1tab) { >-#if SIZEOF_SIZE_T == 8 >- fprintf(stdout, "\nL1TAB - %ld (0x%8.8lX) bytes:\n", >+ fprintf(stdout, "\nL1TAB - %"SIZE_T_FMT"d (0x"SIZE_T_FMTX") bytes:\n", > (n * CCKD_L1ENT_SIZE), (n * CCKD_L1ENT_SIZE)); >-#else >- fprintf(stdout, "\nL1TAB - %d (0x%8.8X) bytes:\n", >- (n * CCKD_L1ENT_SIZE), (n * CCKD_L1ENT_SIZE)); >-#endif > data_dump(l1, n * CCKD_L1ENT_SIZE); > } > >@@ -682,24 +666,13 @@ char pathname[MAX_PATH]; > readpos(fd, l2, l2taboff, > cdevhdr.numl2tab * sizeof(CCKD_L2ENT)); > if (cmd_l2tab) { >-#if SIZEOF_SIZE_T == 8 >- fprintf(stdout, >- "\nL2TAB - %ld (decimal) bytes\n", >- (cdevhdr.numl2tab * sizeof(CCKD_L2ENT))); >-#else > fprintf(stdout, >- "\nL2TAB - %d (decimal) bytes\n", >+ "\nL2TAB - %"SIZE_T_FMT"d (decimal) bytes\n", > (cdevhdr.numl2tab * sizeof(CCKD_L2ENT))); >-#endif > data_dump(l2, (cdevhdr.numl2tab * sizeof(CCKD_L2ENT)) ); > } >-#if SIZEOF_SIZE_T == 8 >- fprintf(stdout, "\nL2 index %d = L2TAB entry %ld bytes\n", >+ fprintf(stdout, "\nL2 index %d = L2TAB entry %"SIZE_T_FMT"d bytes\n", > l2ndx, sizeof(CCKD_L2ENT) ); >-#else >- fprintf(stdout, "\nL2 index %d = L2TAB entry %d bytes\n", >- l2ndx, sizeof(CCKD_L2ENT) ); >-#endif > data_dump(&l2[l2ndx], sizeof(CCKD_L2ENT) ); > trkhdroff = l2[l2ndx].pos; > imglen = l2[l2ndx].len; >diff -Naupr hercules-3.05/cckdutil.c hercules-20070717/cckdutil.c >--- hercules-3.05/cckdutil.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cckdutil.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CCKDUTIL.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Compressed CKD Common routines */ > >-// $Id: cckdutil.c,v 1.54 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cckdutil.c,v 1.56 2007/12/01 23:31:57 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains functions for compressed CKD devices */ >@@ -9,6 +9,12 @@ > /*-------------------------------------------------------------------*/ > > // $Log: cckdutil.c,v $ >+// Revision 1.56 2007/12/01 23:31:57 fish >+// Fix cckdcdsk/cckdcomp/cckdutil no message o/p issue >+// >+// Revision 1.55 2007/08/28 20:22:41 gsmith >+// cckdutil fix for 64-bit - zhackules >+// > // Revision 1.54 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -2593,6 +2599,9 @@ int len2; > int kl, dl; /* Key/Data lengths */ > BYTE *bufp; /* Buffer pointer */ > int bufl; /* Buffer length */ >+#ifdef HAVE_LIBZ >+unsigned long ulbuf; >+#endif > #ifdef CCKD_BZIP2 > unsigned int bufsz; > #endif >@@ -2620,12 +2629,12 @@ BYTE buf2[65536]; > if (len < 0) return 0; > bufp = (BYTE *)buf2; > memcpy (buf2, buf, CKDDASD_TRKHDR_SIZE); >- bufl = sizeof(buf2) - CKDDASD_TRKHDR_SIZE; >- rc = uncompress (buf2 + CKDDASD_TRKHDR_SIZE, (void *)&bufl, >+ ulbuf = sizeof(buf2) - CKDDASD_TRKHDR_SIZE; >+ rc = uncompress (buf2 + CKDDASD_TRKHDR_SIZE, &ulbuf, > buf + CKDDASD_TRKHDR_SIZE, len - CKDDASD_TRKHDR_SIZE); > if (rc != Z_OK) > return 0; >- bufl += CKDDASD_TRKHDR_SIZE; >+ bufl = ulbuf + CKDDASD_TRKHDR_SIZE; > break; > #endif > >@@ -2718,5 +2727,8 @@ char msg[4096]; > vsprintf (msg+i, format, vl); > va_end (vl); > >- logmsg("%s",msg); >+ if (dev->batch) >+ fprintf(stdout,"%s",msg); >+ else >+ logmsg("%s",msg); > } >diff -Naupr hercules-3.05/cgibin.c hercules-20070717/cgibin.c >--- hercules-3.05/cgibin.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cgibin.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CGIBIN.C (c)Copyright Jan Jaeger, 2002-2007 */ > /* HTTP cgi-bin routines */ > >-// $Id: cgibin.c,v 1.74 2007/06/23 00:04:03 ivan Exp $ >+// $Id: cgibin.c,v 1.75 2008/05/23 20:38:13 fish Exp $ > > /* This file contains all cgi routines that may be executed on the */ > /* server (ie under control of a hercules thread) */ >@@ -45,6 +45,9 @@ > /* Jan Jaeger - 28/03/2002 */ > > // $Log: cgibin.c,v $ >+// Revision 1.75 2008/05/23 20:38:13 fish >+// Change device query calls to not ask for what they don't need >+// > // Revision 1.74 2007/06/23 00:04:03 ivan > // Update copyright notices to include current year (2007) > // >@@ -749,7 +752,6 @@ void cgibin_debug_device_list(WEBBLK *we > { > DEVBLK *dev; > char *class; >-char buf[80]; > > html_header(webblk); > >@@ -764,7 +766,7 @@ char buf[80]; > for(dev = sysblk.firstdev; dev; dev = dev->nextdev) > if(dev->pmcw.flag5 & PMCW5_V) > { >- (dev->hnd->query)(dev, &class, sizeof(buf), buf); >+ (dev->hnd->query)(dev, &class, 0, NULL); > > hprintf(webblk->sock,"<tr>" > "<td>%4.4X</td>" >diff -Naupr hercules-3.05/CHANGES hercules-20070717/CHANGES >--- hercules-3.05/CHANGES 2007-06-22 18:34:58.000000000 +0200 >+++ hercules-20070717/CHANGES 2008-09-03 13:07:48.000000000 +0200 >@@ -1,3 +1,116 @@ >+10 Jul 2008 panel support for scrolling up/down one line - Fish >+08 Jul 2008 AUTOMOUNT redesign: support +allowed/-disallowed dirs >+ and create associated 'automount' panel command - Fish >+22 Jun 2008 Fix tape messages print format bug causing crash - Fish >+28 May 2008 AUTOMOUNT fixed and enhanced so it actually works now - Fish >+28 May 2008 Misleading VTAPE support renamed to AUTOMOUNT instead - Fish >+24 May 2008 VTAPE automount support (CCW 0x4B + 0xE4) - Fish >+22 May 2008 Attempt to fix my *nix SCSI tape BSR over tapemark bug >+ identified by Bob Schneider [bschneider@pingdata.net] - Fish >+22 May 2008 Tape file extension neutrality support - Fish >+22 May 2008 Flex FakeTape support - Fish >+22 May 2008 Fix read timeout bug in LCS logic - Fish >+19 May 2008 PSF order 18 suborders (0E,41) and order 1D by Jacob Dekel - Roger Bowler >+04 May 2008 Fix CGDR,CGXR to handle values exceeding 2G - Roger Bowler >+25 Apr 2008 CGER result incorrect for values over 2G - Roger Bowler >+22 Apr 2008 Correction to CXGR instruction - Roger Bowler >+21 Apr 2008 CEGR result incorrect if source exceeds 6 digits - Roger Bowler >+20 Apr 2008 CDGR result incorrect if source exceeds 14 digits - Roger Bowler >+18 Apr 2008 Fix incorrect results from THDER,THDR instructions - Roger Bowler >+16 Apr 2008 Fix condition code in LCEBR,LCDBR,LCXBR instructions - Roger Bowler >+16 Apr 2008 Fix FIEBR,FIDBR,FIXBR to respect BFP rounding mode - Roger Bowler >+08 Apr 2008 Add execute relative long instruction - Bernard van der Helm >+31 Mar 2008 Fix SCSI tape i/o performance: now 10x faster! - Fish >+30 Mar 2008 Fix SCSI tape EOV (end of volume) processing - Fish >+29 Mar 2008 More complete/extensive 3490/3590 tape support - Fish >+28 Mar 2008 Fix incorrect registers when cc=1 for TRTE,TRTRE - Roger Bowler >+28 Mar 2008 Add generic, readblkid, locateblk tape media handler vectors - Fish >+28 Mar 2008 SCSI --blkid-24 option - Fish >+23 Mar 2008 Fix incorrect bit selection for RNSBG,RISBG,ROSBG,RXSBG - Roger Bowler >+23 Mar 2008 Move With Optional Specifications Facility (MVCOS) - Roger Bowler >+13 Mar 2008 Return Byte Mpx for Chan 0 according to GA22-7000-4 - Ivan Warren >+12 Mar 2008 Fix residual read-only setting for tape device - Kevin Leonard >+12 Mar 2008 Fix store operation of ASI, AGSI, ALSI and AGLSI - Jan Jaeger >+08 Mar 2008 General Instructions Extension Facility - Roger Bowler >+07 Mar 2008 Add pri, sec, home options [P|S|H] to "v" command - Paul Leisy >+05 Mar 2008 Fix PLO fc=3 fc=19 and qword alignment chks - Paul Leisy >+04 Mar 2008 Fix CFC cond code - fetch right operand size - Paul Leisy >+04 Mar 2008 LEGACYSENSEID config stmt added - see hercconf.html - Ivan Warren >+03 Mar 2008 Fix BSM/BASSM mode switch trace - Paul Leisy >+02 Mar 2008 re-disable SenseID on 8809,3410,3420 (breaks MTS) - Ivan Warren >+29 Feb 2008 Fix TRAP in z/arch mode - Paul Leisy >+29 Feb 2008 Added feature parsing_enhancement_facility - Bernard >+28 Feb 2008 Fix RP in z/arch mode and mode switch trace - Paul Leisy >+27 Feb 2008 Added feature message_security_assist_extension_2 - Bernard >+22 Feb 2008 Fix BSA pic06 in z/arch mode - Paul Leisy >+20 Feb 2008 Fix BSA pic06/05 and branch to odd addrs pic06 - Paul Leisy >+17 Feb 2008 Enable Posix 1003.1e capabilities to restrict setuid-0 >+ programs to just the necessary privileges - Ivan Warren >+15 Feb 2008 Fix PC, RP pic13, STCKE byte 0 and two PER bugs - Paul Leisy >+12 Feb 2008 Fix 3880 SNSID length (thanks De!) - Greg >+12 Feb 2008 Fixes for SPKA, BASR, TBEDR, PR - Paul Leisy >+12 Feb 2008 dyngui tweaks: new def devlist fmt, new debug_cd_cmd hook - Fish >+11 Feb 2008 Fixed intermediate errors cmpsc - Bernard >+07 Feb 2008 Solaris build support by Jeff Savit - Roger Bowler >+24 Jan 2008 Fix invalidate_tlbe processing - Paul Leisy by Greg >+23 Jan 2008 Fix and optimize TR instruction - Greg >+23 Jan 2008 Modifications for VS9 C++ 2008 Express by Charlie Brint - Roger Bowler >+21 Jan 2008 Activate ETF3 and ETF2/ETF3-Enhancements in ESA/390 mode - Roger Bowler >+21 Jan 2008 Permit Extended-Translation-Facility-3 to be activated in S/370 and ESA/390 modes - Roger Bowler >+16 Jan 2008 Data exception for only UNPRECEDED nonzero bit34 ece entries - Fish >+14 Jan 2008 Additional ISO-8859-1 to European EBCDIC codepages - Roger Bowler >+11 Jan 2008 new 'ctc' command to enable/disable debug option on demand - Fish >+03 Jan 2008 sf commands update - Greg Smith >+01 Jan 2008 Data exception on nonzero bit34 in ece entry - Bernard van der Helm >+31 Dec 2007 Data exceptions on fetching ece, cce and sd1 - Bernard van der Helm >+31 Dec 2007 Data excep in CMPSC expansion psl and cls = 0 - Bernard van der Helm >+29 Dec 2007 Some errors in UTF translation - Bernard van der Helm >+29 Dec 2007 Tweak OPTION_MIPS_COUNTING tweak to prevent crash - Fish >+24 Dec 2007 Compression check output, input swapped to input, output - Bernard van der Helm >+11 Dec 2007 Enable SENSE ID CCW for 2703,3410,3420 >+10 Dec 2007 Tweaks to OPTION_MIPS_COUNTING processing - Greg >+02 Dec 2007 Permit Extended-Translation-Facility-2 to be activated in S/370 mode - Roger Bowler >+02 Dec 2007 Enable B9xx,EBxx opcodes in S/370 mode for ETF2 - Roger Bowler >+02 Dec 2007 Permit Extended-Translation facility to be activated in S/370 mode - Roger Bowler >+02 Dec 2007 Permit Compare-and-Move-Extended facility to be activated in S/370 mode - Roger Bowler >+01 Dec 2007 Fix cckdcdsk/cckdcomp/cckdutil no message o/p issue - Fish >+30 Nov 2007 Change all references to conmicro.cx to hercules-390.org - Jay >+ Maynard >+30 Nov 2007 Permit String-Instruction facility to be activated in S/370 mode - >+ Roger Bowler >+28 Nov 2007 Allow ALLOW DATA CHECK to precede LOAD UCS AND FOLD on 1403 for >+ TSS/370 - Jay Maynard >+22 Nov 2007 Store Doubleword Monitor Code for z/Arch on succesful MC - >+ Ivan Warren >+20 Nov 2007 LRE support (try #1) - Greg >+18 Nov 2007 Activate Message-Security-Assist-Extension-1 facility in ESA/390 - >+ Roger Bowler >+18 Nov 2007 Permit Immediate-and-Relative facility to be activated in S/370 >+ mode - Roger Bowler >+16 Nov 2007 Add HFP-multiply-add/subtract facility to ESA/390 - Roger Bowler >+15 Nov 2007 Correct PIC6 when loading DRM bits into FPC - Roger Bowler >+15 Nov 2007 Correct CPSDR instruction - Roger Bowler >+15 Nov 2007 Correct ESA/390 EPSW instruction - Roger Bowler >+13 Nov 2007 Support for AWSTAPE segmented blocks - Roger Bowler >+02 Nov 2007 Fix runaway CPU for self inflicted SIGP 9 - Ivan Warren >+04 Sep 2007 Use integer arithmetic calculating cpupct - Greg >+31 Aug 2007 Catch addr-excp when SIE DAT points outside Mainstore - Ivan Warren >+28 Aug 2007 cckdutil fix for 64-bit - zhackules by Greg >+28 Aug 2007 Fix many TUNSETIFF-EINVAL error messages - Greg >+26 Aug 2007 Fix missed unfixed 31 Aug 2006 non-SCSI tape Locate bug - Fish >+24 Aug 2007 Modify control registers by cr command - Roger Bowler >+16 Aug 2007 Backout 28 Jul fix for LCS (fix was only meant for CTCI) - Fish >+06 Aug 2007 Rework CPU execution loop - Greg >+06 Aug 2007 Filled ipl, iplc, sysclear, sysreset in HELPTAB - Ivan Warren >+06 Aug 2007 implement IPL PARM a la VM - Ivan Warren >+29 Jul 2007 Fix PR# 34/tape bug causing crash if non-tape devinit - Fish >+28 Jul 2007 Fix day-1 CTCI/LCS bug - Vince Weaver [vince@deater.net] by Fish >+24 Jul 2007 Force command-reject (until we can get it coded right) >+ for 3590 Medium Sense (x'C2') and Mode Sense (x'CF') - Fish >+24 Jul 2007 Default to --blkid-32 and --no-erg for 3590 SCSI - Fish >+24 Jul 2007 Fix tape Synchronize CCW (x'43') to do actual commit - Fish >+24 Jul 2007 Fix Windows SCSI tape Locate and Read-Block-Id SNAFU - Fish >+19 Jul 2007 Disable DIAG 308 Re-IPL feature until it is complete - Ivan Warren > 21 Jun 2007 revert config_cpu.pat due to problems in testing - Greg > 20 Jun 2007 3.05 release doc changes - Jay Maynard > 18 Jun 2007 make 3990-6 default control unit for 3390 devices - Greg >diff -Naupr hercules-3.05/channel.c hercules-20070717/channel.c >--- hercules-3.05/channel.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/channel.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CHANNEL.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Channel Emulator */ > >-// $Id: channel.c,v 1.139 2007/06/23 00:04:04 ivan Exp $ >+// $Id: channel.c,v 1.143 2008/05/28 16:33:13 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains the channel subsystem functions for the */ >@@ -23,6 +23,18 @@ > /*-------------------------------------------------------------------*/ > > // $Log: channel.c,v $ >+// Revision 1.143 2008/05/28 16:33:13 fish >+// (fix typo in comment; no code was changed) >+// >+// Revision 1.142 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.141 2008/03/13 19:55:49 ivan >+// Return Byte Mpx in STIDC for Channel 0 according to GA22-7000-4 Page 192 Chapter 2 >+// >+// Revision 1.140 2007/08/07 19:47:59 ivan >+// Fix a couple of gcc-4.2 warnings >+// > // Revision 1.139 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -192,7 +204,19 @@ PSA_3XX *psa; > return 3; > > /* Construct the channel id word */ >- chanid = CHANNEL_BMX; >+ /* According to GA22-7000-4, Page 192, 2nd paragraph, >+ * channel 0 is a Byte Multiplexor.. Return STIDC data >+ * accordingly >+ * ISW 20080313 >+ */ >+ if(!chan) >+ { >+ chanid = CHANNEL_MPX; >+ } >+ else >+ { >+ chanid = CHANNEL_BMX; >+ } > > /* Store the channel id word at PSA+X'A8' */ > psa = (PSA_3XX*)(regs->mainstor + regs->PX); >@@ -690,7 +714,6 @@ int cc; > > /* Clear the status bits in the SCSW */ > dev->scsw.flag3 &= ~(SCSW3_SC); >- > } > else > { >@@ -709,7 +732,6 @@ int cc; > longjmp(regs->progjmp,SIE_INTERCEPT_IOINST); > } > #endif >- > /* Set condition code 0 for status pending */ > cc = 0; > >@@ -831,7 +853,7 @@ int pending = 0; > dev->scsw.flag1 = 0; > dev->scsw.flag2 &= ~(SCSW2_FC | SCSW2_AC); > dev->scsw.flag2 |= SCSW2_FC_CLEAR; >- dev->scsw.flag3 &= ~(SCSW3_AC | SCSW3_SC); >+ dev->scsw.flag3 &= (~(SCSW3_AC | SCSW3_SC))&0xff; > dev->scsw.flag3 |= SCSW3_SC_PEND; > store_fw (dev->scsw.ccwaddr, 0); > dev->scsw.chanstat = 0; >@@ -1138,6 +1160,7 @@ void device_reset (DEVBLK *dev) > dev->ckdlcount = 0; > dev->ckdssi = 0; > memset (dev->sense, 0, sizeof(dev->sense)); >+ dev->sns_pending = 0; > memset (dev->pgid, 0, sizeof(dev->pgid)); > /* By Adrian - Reset drive password */ > memset (dev->drvpwd, 0, sizeof(dev->drvpwd)); >@@ -2579,7 +2602,7 @@ BYTE iobuf[65536]; > dev->scsw.flag0 = 0; > dev->scsw.flag1 = 0; > dev->scsw.flag2 &= ~((SCSW2_FC - SCSW2_FC_CLEAR) | SCSW2_AC); >- dev->scsw.flag3 &= ~(SCSW3_AC | SCSW3_SC); >+ dev->scsw.flag3 &= (~(SCSW3_AC | SCSW3_SC))&0xff; > dev->scsw.flag3 |= SCSW3_SC_PEND; > store_fw (dev->scsw.ccwaddr, 0); > dev->scsw.chanstat = 0; >@@ -3235,6 +3258,7 @@ resume_suspend: > dev->numsense : sizeof(dev->ecw); > memcpy (dev->ecw, dev->sense, dev->esw.erw1 & ERW1_SCNT); > memset (dev->sense, 0, sizeof(dev->sense)); >+ dev->sns_pending = 0; > } > #endif /*FEATURE_CHANNEL_SUBSYSTEM*/ > >@@ -3646,7 +3670,7 @@ int device_attention (DEVBLK *dev, BYTE > case ARCH_370: > /* Do NOT raise if initial power-on state */ > /* >- * FIXME : The dev->crwpendig test in S/370 >+ * FIXME : The dev->crwpending test in S/370 > * mode prevents any devices added > * at run time after IPL from being > * operational. The test has been >diff -Naupr hercules-3.05/ckddasd.c hercules-20070717/ckddasd.c >--- hercules-3.05/ckddasd.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/ckddasd.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CKDDASD.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 CKD Direct Access Storage Device Handler */ > >-// $Id: ckddasd.c,v 1.86 2007/06/23 00:04:04 ivan Exp $ >+// $Id: ckddasd.c,v 1.93 2008/05/24 20:54:31 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for emulated */ >@@ -19,6 +19,27 @@ > /*-------------------------------------------------------------------*/ > > // $Log: ckddasd.c,v $ >+// Revision 1.93 2008/05/24 20:54:31 rbowler >+// Increase PSF-PRSD data length from 12 to 16 bytes (by Jacob Dekel) >+// >+// Revision 1.92 2008/05/19 16:40:54 rbowler >+// Modify PSF order 1D to not prepare subsystem data >+// >+// Revision 1.91 2008/05/19 15:40:04 rbowler >+// PSF order 18 suborders (0E,41) and order 1D by Jacob Dekel >+// >+// Revision 1.90 2008/01/07 22:59:11 rbowler >+// Additional LFS validity checks >+// >+// Revision 1.89 2007/11/25 19:30:21 gsmith >+// fix LRE length check, thanks Fish!! - Greg >+// >+// Revision 1.88 2007/11/21 22:54:13 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// >+// Revision 1.87 2007/11/21 00:31:38 gsmith >+// LRE support (try #1) >+// > // Revision 1.86 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -88,10 +109,13 @@ > #define CKDOPER_WRITE 0x01 /* ...write data */ > #define CKDOPER_FORMAT 0x03 /* ...format write */ > #define CKDOPER_RDDATA 0x06 /* ...read data */ >+#define CKDOPER_WRTANY 0x09 /* ...write any */ > #define CKDOPER_RDANY 0x0A /* ...read any */ > #define CKDOPER_WRTTRK 0x0B /* ...write track */ > #define CKDOPER_RDTRKS 0x0C /* ...read tracks */ >+#define CKDOPER_RDTSET 0x0E /* ...read track set */ > #define CKDOPER_READ 0x16 /* ...read */ >+#define CKDOPER_EXTOP 0x3F /* ...extended operation */ > > /*-------------------------------------------------------------------*/ > /* Bit definitions for Locate auxiliary byte */ >@@ -474,6 +498,11 @@ char pathname[MAX_PATH]; > { > trks = (statbuf.st_size - CKDDASD_DEVHDR_SIZE) / trksize; > cyls = trks / heads; >+ if (fileseq == 1 && highcyl == cyls) >+ { >+ devhdr.fileseq = 0; >+ highcyl = 0; >+ } > } > else > { >@@ -656,8 +685,8 @@ char pathname[MAX_PATH]; > void ckddasd_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >+ BEGIN_DEVICE_CLASS_QUERY( "DASD", dev, class, buflen, buffer ); > >- *class = "DASD"; > snprintf (buffer, buflen, "%s [%d cyls]", > dev->filename, > dev->ckdcyls); >@@ -1552,7 +1581,7 @@ int rc; > /*-------------------------------------------------------------------*/ > /* Advance to next track for multitrack operation */ > /*-------------------------------------------------------------------*/ >-static int mt_advance ( DEVBLK *dev, BYTE *unitstat ) >+static int mt_advance ( DEVBLK *dev, BYTE *unitstat, int trks ) > { > int rc; /* Return code */ > int cyl; /* Next cyl for multitrack */ >@@ -1566,7 +1595,7 @@ int head; > logdevtr (dev, _("HHCDA039E MT advance error: " > "locate record %d file mask %2.2X\n"), > dev->ckdlcount, dev->ckdfmask); >- if (dev->ckdtrkof) >+ if (dev->ckdtrkof) > ckd_build_sense (dev, 0, SENSE1_FP | SENSE1_IE, 0, 0, 0); > else > ckd_build_sense (dev, 0, SENSE1_FP, 0, 0, 0); >@@ -1577,9 +1606,9 @@ int head; > /* End of cylinder error if not within domain of Locate Record > and current track is last track of cylinder */ > if (dev->ckdlcount == 0 >- && dev->ckdcurhead >= dev->ckdheads - 1) >+ && dev->ckdcurhead + trks >= dev->ckdheads) > { >- if (dev->ckdtrkof) >+ if (dev->ckdtrkof) > ckd_build_sense (dev, 0, SENSE1_EOC | SENSE1_IE, 0, 0, 0); > else > ckd_build_sense (dev, 0, SENSE1_EOC, 0, 0, 0); >@@ -1589,10 +1618,10 @@ int head; > > /* Advance to next track */ > cyl = dev->ckdcurcyl; >- head = dev->ckdcurhead + 1; >- if (head >= dev->ckdheads) >+ head = dev->ckdcurhead + trks; >+ while (head >= dev->ckdheads) > { >- head = 0; >+ head -= dev->ckdheads; > cyl++; > } > logdevtr (dev, _("HHCDA040I MT advance to cyl %d head %d\n"), cyl, head); >@@ -1601,7 +1630,7 @@ int head; > limits of the device or outside the defined extent */ > if ( EXTENT_CHECK(dev, cyl, head) ) > { >- if (dev->ckdtrkof) >+ if (dev->ckdtrkof) > ckd_build_sense (dev, 0, SENSE1_FP | SENSE1_IE, 0, 0, 0); > else > ckd_build_sense (dev, 0, SENSE1_FP, 0, 0, 0); >@@ -1639,6 +1668,7 @@ char *orient[] = {"none", "ind > && (code & 0x7F) != 0x51 > && (code & 0x7F) != 0x71 > && code != 0x47 >+ && code != 0x4B > && code != 0x9D) > skipr0 = 1; > >@@ -1649,7 +1679,7 @@ char *orient[] = {"none", "ind > failed previously during synchronous I/O */ > if (dev->ckdorient == CKDORIENT_EOT) > { >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) return -1; > } > >@@ -1714,7 +1744,7 @@ char *orient[] = {"none", "ind > sense, or control command -- > -- except when multitrack READ or SEARCH [KEY?] command > operates outside the domain of a locate record */ >- if (code == 0x47 || code == 0x9D >+ if (code == 0x47 || code == 0x4B || code == 0x9D > || (dev->ckdxmark > && !((dev->ckdlcount == 0) > && ( (IS_CCW_READ(code) && (code&0x80)) >@@ -1740,7 +1770,7 @@ char *orient[] = {"none", "ind > else > { > /* If multitrack, attempt to advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) return -1; > > /* Set index marker flag if non-search command */ >@@ -2084,7 +2114,7 @@ void ckddasd_execute_ccw ( DEVBLK *dev, > BYTE *iobuf, BYTE *more, BYTE *unitstat, U16 *residual ) > { > int rc; /* Return code */ >-int i; /* Loop index */ >+int i, j; /* Loop index */ > CKDDASD_TRKHDR trkhdr; /* CKD track header (HA) */ > CKDDASD_RECHDR rechdr; /* CKD record header (count) */ > int size; /* Number of bytes available */ >@@ -2142,6 +2172,7 @@ BYTE trk_ovfl; > dev->ckdkyeq = 0; > dev->ckdwckd = 0; > dev->ckdlcount = 0; >+ dev->ckdlmask = 0; > dev->ckdtrkof = 0; > /* ISW20030819-1 : Clear Write HA flag */ > dev->ckdwrha = 0; >@@ -2158,6 +2189,9 @@ BYTE trk_ovfl; > dev->ckdxecyl = dev->ckdcyls - 1; > dev->ckdxehead = dev->ckdheads - 1; > } >+ /* Reset ckdlmask on retry of LRE */ >+ else if (dev->syncio_retry && code == 0x4B) >+ dev->ckdlmask = 0; > dev->syncio_retry = 0; > > /* Reset index marker flag if sense or control command, >@@ -2192,6 +2226,16 @@ BYTE trk_ovfl; > return; > } > >+ /* If within Locate Record Extended domain and not RT command >+ reject with status that includes Unit Check (Command Reject, >+ format X'02', Invalid Command Sequence) */ >+ if (dev->ckdlmask && code != 0xDE) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0,FORMAT_0, MESSAGE_2); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ return; >+ } >+ > /* Process depending on CCW opcode */ > switch (code) { > >@@ -2344,7 +2388,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -2406,8 +2450,14 @@ BYTE trk_ovfl; > /* Check operation code if within domain of a Locate Record */ > if (dev->ckdlcount > 0) > { >+ /* >+ * 3990 reference says LRE CKDOPER_RDANY "must be followed >+ * by a sequence of multi-track Read Count, Read Count Key >+ * and Data, or Read Data commands". That is, it doesn't >+ * mention Read Key and Data. >+ */ > if (!((dev->ckdloper & CKDOPER_CODE) == CKDOPER_RDDATA >- || (dev->ckdloper & CKDOPER_CODE) == CKDOPER_RDANY >+ /* || (dev->ckdloper & CKDOPER_CODE) == CKDOPER_RDANY */ > || (dev->ckdloper & CKDOPER_CODE) == CKDOPER_READ)) > { > ckd_build_sense (dev, SENSE_CR, 0, 0, >@@ -2443,7 +2493,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -2583,7 +2633,7 @@ BYTE trk_ovfl; > attempt to advance to the next track before reading R0 */ > if ((code & 0x80) && dev->ckdlcount == 0) > { >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > } > >@@ -2668,7 +2718,7 @@ BYTE trk_ovfl; > attempt to advance to the next track before reading HA */ > if ((code & 0x80) && dev->ckdlcount == 0) > { >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > } > >@@ -2817,7 +2867,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -2935,7 +2985,8 @@ BYTE trk_ovfl; > /* Command reject if not within the domain of a Locate Record > that specifies a read tracks operation */ > if (dev->ckdlcount == 0 >- || (dev->ckdloper & CKDOPER_CODE) != CKDOPER_RDTRKS) >+ || (((dev->ckdloper & CKDOPER_CODE) != CKDOPER_RDTRKS) >+ && ((dev->ckdloper & CKDOPER_CODE) != CKDOPER_RDTSET))) > { > ckd_build_sense (dev, SENSE_CR, 0, 0, > FORMAT_0, MESSAGE_2); >@@ -2946,7 +2997,7 @@ BYTE trk_ovfl; > /* Command reject if not chained from a Locate Record > command or from another Read Track command */ > if (chained == 0 >- || (prevcode != 0x47 && prevcode != 0xDE)) >+ || (prevcode != 0x47 && prevcode != 0x4B && prevcode != 0xDE)) > { > ckd_build_sense (dev, SENSE_CR, 0, 0, > FORMAT_0, MESSAGE_2); >@@ -2957,10 +3008,23 @@ BYTE trk_ovfl; > /* Advance to next track if chained from previous read track */ > if (prevcode == 0xDE) > { >- rc = mt_advance (dev, unitstat); >+ j = 1; >+ /* Skip tracks while hi bit off in ckdlmask */ >+ if (dev->ckdlmask) >+ { >+ while (!(dev->ckdlmask & 0x8000)) >+ { >+ j++; >+ dev->ckdlmask <<= 1; >+ } >+ } >+ rc = mt_advance (dev, unitstat, j); > if (rc < 0) break; > } > >+ /* Shift read track set mask left a bit */ >+ dev->ckdlmask <<= 1; >+ > /* Read each record on the track into the I/O buffer */ > for (size = 0; ; ) > { >@@ -3026,10 +3090,13 @@ BYTE trk_ovfl; > /* Use the order code to determine the required count */ > num = (count < 2) ? 2 : > (iobuf[0] == 0x10) ? 14 : >- (iobuf[0] == 0x11 || iobuf[0] == 0x18) ? 12 : >+ (iobuf[0] == 0x11) ? 12 : > (iobuf[0] == 0x12) ? 5 : > (iobuf[0] == 0x13 || iobuf[0] == 0x14) ? 4 : >- (iobuf[0] == 0x16 || iobuf[0] == 0xB0) ? 4 : >+ (iobuf[0] == 0x16) ? 4 : >+ (iobuf[0] == 0x18) ? 16 : >+ (iobuf[0] == 0x1D) ? 66 : >+ (iobuf[0] == 0xB0) ? 4 : > 2; > > /* Command reject if count is less than required */ >@@ -3098,6 +3165,23 @@ BYTE trk_ovfl; > dev->ckdssdlen = (iobuf[8]==0x00) ? 96 : 192; > break; > >+ case 0x0E: /* Unit address configuration */ >+ /* Prepare unit address configuration record */ >+ memset (iobuf, 0x00, 512); >+ /* 256 pairs (UA type, base UA) */ >+ >+ /* Indicate the length of subsystem data prepared */ >+ dev->ckdssdlen = 512; >+ break; >+ >+ case 0x41: /* Feature codes */ >+ /* Prepare feature codes record */ >+ memset (iobuf, 0x00, 256); >+ >+ /* Indicate the length of subsystem data prepared */ >+ dev->ckdssdlen = 256; >+ break; >+ > default: /* Unknown suborder code */ > ckd_build_sense (dev, SENSE_CR, 0, 0, > FORMAT_0, MESSAGE_4); >@@ -3144,6 +3228,19 @@ BYTE trk_ovfl; > > break; > >+ case 0x1D: /* Set Subsystem Characteristics */ >+ >+ /* Command reject if flag byte is not zero */ >+ if (iobuf[1] != 0x00) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, >+ FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ >+ break; >+ > case 0xB0: /* Set Interface Identifier */ > > /* Command reject if flag byte bits 0-5 are not zero >@@ -3639,7 +3736,7 @@ BYTE trk_ovfl; > /* For multitrack operation, advance to next track */ > if (code & 0x80) > { >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > } > >@@ -3763,7 +3860,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -3801,7 +3898,8 @@ BYTE trk_ovfl; > /* Command reject if not within the domain of a Locate Record > that specifies the Write Data operation code */ > if (dev->ckdlcount == 0 >- || (dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRITE) >+ || ((dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRITE >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRTANY)) > { > ckd_build_sense (dev, SENSE_CR, 0, 0, > FORMAT_0, MESSAGE_2); >@@ -3852,7 +3950,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -3963,7 +4061,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -4049,7 +4147,7 @@ BYTE trk_ovfl; > while (dev->ckdtrkof) > { > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the first count field */ >@@ -4327,7 +4425,7 @@ BYTE trk_ovfl; > } > > /* Advance to next track */ >- rc = mt_advance (dev, unitstat); >+ rc = mt_advance (dev, unitstat, 1); > if (rc < 0) break; > > /* Read the count field for record zero */ >@@ -4435,7 +4533,6 @@ BYTE trk_ovfl; > break; > } > >- > /* Byte 1 contains the locate record auxiliary byte */ > dev->ckdlaux = iobuf[1]; > >@@ -4617,6 +4714,537 @@ BYTE trk_ovfl; > dev->ckdlocat = 1; > break; > >+ case 0x4B: >+ /*---------------------------------------------------------------*/ >+ /* LOCATE RECORD EXTENDED */ >+ /*---------------------------------------------------------------*/ >+ >+ /* LRE only valid for 3990-6 */ >+ if (dev->ckdcu->devt != 0x3990 || dev->ckdcu->model != 0xe9) >+ { >+ /* Set command reject sense byte, and unit check status */ >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_1); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * The Storage Director initially requests 20 bytes of parameters >+ * from the channel; if the channel provides fewer than 20 bytes, >+ * execution is terminated with status that includes unit check >+ * (Command Reject, format X'03', CCW byte count less than required). >+ */ >+ num = (count < 20) ? count : 20; >+ *residual = count - num; >+ if (count < 20) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_3); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * If Locate Record Extended is received within a Locate Record >+ * domain, execution is terminated with status that includes unit >+ * check (Command Reject, format X'02', Invalid Command Sequence). >+ */ >+ if (dev->ckdlcount > 0) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_2); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * If Locate Record Extended was not preceded by a Define Extent >+ * or Read IPL command in the same channel program, execution is >+ * terminated with status that includes unit check (Command Reject, >+ * format X'02', Invalid Command Sequence). If any other operation >+ * is specified, the command is terminated with status that >+ * includes unit check (Command Reject, format X'02', Invalid >+ * Command Sequence). >+ */ >+ //FIXME not sure what that last sentence means >+ if (dev->ckdxtdef == 0 && dev->ckdrdipl == 0) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_2); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ >+ /* Byte 0 contains the locate record operation byte */ >+ dev->ckdloper = iobuf[0]; >+ >+ /* Validate the locate record operation code (byte 0 bits 2-7) */ >+ if ((dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRITE >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_FORMAT >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRTTRK >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_RDTRKS >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_READ >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_EXTOP) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* Validate the locate record extended operation code (byte 17) */ >+ if ((dev->ckdloper & CKDOPER_CODE) == CKDOPER_EXTOP) >+ { >+ if (iobuf[17] != CKDOPER_WRTANY >+ && iobuf[17] != CKDOPER_RDANY >+ && iobuf[17] != CKDOPER_RDTSET) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ dev->ckdloper &= CKDOPER_ORIENTATION; >+ dev->ckdloper |= iobuf[17]; >+ } >+ else if (iobuf[17] != 0) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ >+ /* Check for write operation on a read only disk */ >+//FIXME Not sure if this is right here >+ if ( (dev->ckdrdonly && !dev->ckdfakewr && !dev->dasdsfn) >+ && ((dev->ckdloper & CKDOPER_CODE) == CKDOPER_WRITE >+ || (dev->ckdloper & CKDOPER_CODE) == CKDOPER_WRTANY >+ || (dev->ckdloper & CKDOPER_CODE) == CKDOPER_FORMAT >+ || (dev->ckdloper & CKDOPER_CODE) == CKDOPER_WRTTRK) >+ ) >+ { >+ ckd_build_sense (dev, SENSE_EC, SENSE1_WRI, 0, >+ FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * Check for valid combination of orientation and opcode >+ * >+ * +------------------------------------------------+ >+ * | Operation Code Orientation Byte | >+ * | Cnt HA Data Index 17 | >+ * +------------------------------------------------+ >+ * | Write Data 01 x 81 x 00 | >+ * | Format Write 03 43 x C3 00 | >+ * | Write Track 0B x x x 00 | >+ * | Read Tracks 0C 4C x x 00 | >+ * | Read 16 56 96 D6 00 | >+ * | Write Any 3F x x x 09 | >+ * | Read Any 3F x x x 0A | >+ * | Read Trackset 3F 7F x x 0E | >+ * +------------------------------------------------+ >+ * | Note: x - Combination is not valid. | >+ * +------------------------------------------------+ >+ * Table: valid orientation + operation code values >+ */ >+ if (dev->ckdloper != 0x01 && dev->ckdloper != 0x81 >+ && dev->ckdloper != 0x03 && dev->ckdloper != 0x43 && >+ dev->ckdloper != 0xC3 >+ && dev->ckdloper != 0x0B >+ && dev->ckdloper != 0x0C && dev->ckdloper != 0x4C >+ && dev->ckdloper != 0x16 && dev->ckdloper != 0x56 && >+ dev->ckdloper != 0x96 && dev->ckdloper != 0xD6 >+ && dev->ckdloper != 0x09 >+ && dev->ckdloper != 0x0A >+ && dev->ckdloper != 0x0E && dev->ckdloper != 0x4E) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * Byte 1 is the Auxiliary Byte >+ * bit 0 = 0 : Bytes 14-15 are unused >+ * 1 : Bytes 14-15 contain a TLF that overrides the >+ * blocksize specified by the DX parameter. >+ * bits 1-6 : Must be zero >+ * If any of these bits are '1', the LRE is terminated >+ * with status that includes unit check (Command Reject, >+ * format X'04', Invalid Parameter). >+ * bit 7 = 0 : No Read Count CCW is suffixed to the LR domain >+ * 1 : A Read Count CCW is suffixed to the LR domain >+ */ >+ if ((iobuf[1] & CKDLAUX_RESV) != 0) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * A Read Count command may only be suffixed to the domain of a LRE >+ * that specifies a Write Data (01), Write Any (09), Read Any (0A), >+ * or Read (16) operation code; if bit 7 = '1' when any other >+ * Operation code is specified, Locate Record Extended is terminated >+ * with status that includes unit check (Command Reject, format >+ * X'04', Invalid Parameter). >+ */ >+ if ((iobuf[1] & CKDLAUX_RDCNTSUF) >+ && ((dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRITE >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_WRTANY >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_RDANY >+ && (dev->ckdloper & CKDOPER_CODE) != CKDOPER_READ)) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ dev->ckdlaux = iobuf[1]; >+ >+ /* Byte 2 must contain zeroes */ >+ if (iobuf[2] != 0) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * Byte 3 is the Count parameter. In general, the count parameter >+ * specifies the number of records, or tracks to be operated on by >+ * data transfer commands that follow Locate Record Extended. >+ * Specific interpretation of the Count parameter depends upon the >+ * operation code in byte 0. >+ * >+ * The Count must be nonzero. If Read Count Suffixing is specified >+ * in a Locate Record, the count must be greater than 1. If the >+ * Count is invalid, Locate Record Extended is terminated with >+ * status that includes unit check (Command Reject, format X'04', >+ * Invalid Parameter). >+ */ >+ if (iobuf[3] == 0 >+ || ((dev->ckdlaux & CKDLAUX_RDCNTSUF) && iobuf[3] < 2)) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ dev->ckdlcount = iobuf[3]; >+ /* >+ * The value in bytes 4-7 must be a valid track address for the >+ * device and must be within the extent boundaries specified by the >+ * preceding Define Extent command. >+ * >+ * If the Seek Address is not valid for the device or if the Extended >+ * Operation code is Write Any or Read Any and the seek address does >+ * not specify a primary track, Locate Record Extended is terminated >+ * with status that includes unit check (Command Reject, format X'04', >+ * Invalid Parameter). If the Seek Address is not within the defined >+ * extent, Locate Record Extended is terminated with status that >+ * includes unit check (File Protected). >+ */ >+ cyl = fetch_hw(iobuf+4); >+ head = fetch_hw(iobuf+6); >+ if (cyl >= dev->ckdcyls || head >= dev->ckdheads) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ if ( EXTENT_CHECK(dev, cyl, head) ) >+ { >+ ckd_build_sense (dev, 0, SENSE1_FP, 0, 0, 0); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * Bytes 8-12 specify a value to be used as a search argument for >+ * the Locate Record Extended search operation. >+ * >+ * When the operation specified in byte 0 does not require >+ * orientation to a specific record, no search operation is >+ * performed and bytes 8-12 are ignored. When Home Address >+ * orientation is specified, byte 12 is ignored. >+ */ >+ memcpy (cchhr, iobuf+8, 5); >+ /* >+ * Byte 13 contains a sector number to which the device is to be >+ * positioned before the Storage Director establishes orientation. >+ * >+ * The sector number must be within the range of valid sector >+ * numbers for the device. If the sector number is invalid, Locate >+ * Record Extended is terminated with status that includes unit >+ * check (Command Reject, format X'04', Invalid Parameter). >+ * >+ * A value of X'FF' is valid and specifies that sector positioning >+ * is not to be performed prior to establishing orientation. >+ */ >+ if (iobuf[13] != 0xFF && iobuf[13] >= dev->ckdtab->sectors) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ sector = iobuf[13]; >+ /* >+ * When byte 1, bit 0 is '0', bytes 14-15 must contain zeros; if >+ * bytes 14-15 are not zero, Locate Record Extended is terminated >+ * with status that includes unit check (Command Reject, format >+ * X'04', Invalid Parameter). >+ * >+ * When byte 1 bit 0 is '1', bytes 14-15 contain a Transfer Length >+ * Factor (TLF). The Transfer Length Factor must be non-zero; if it >+ * is zero, Locate Record Extended is terminated with status that >+ * includes unit check (Command Reject, format X'04', Invalid >+ * Parameter). >+ * >+ * If the Transfer Length Factor value is greater than the value >+ * specified (or implied) in the Define Extent Blocksize parameter, >+ * Locate Record Extended is terminated with status that includes >+ * unit check (Command Reject, format X'04', Invalid Parameter). >+ * >+ * The Storage Director uses the TLF to determine the number of >+ * data bytes to be requested from the channel for each write >+ * command that follows a Locate Record Extended that specified the >+ * Write Data (01) Operation code. The product of the value in >+ * bytes 14-15 and the count parameter is used to determine the >+ * total number of bytes to be transferred by data transfer commands >+ * that are executed within the domain of a Locate Record Extended >+ * that specified the Format Write (03), Write Track (0B), or >+ * Read (16) Operation codes. >+ * >+ * The TLF value is not retained by the Storage Director after the >+ * expiration of the Locate Record domain. >+ * >+ * If Locate Record Extended does not specify a Transfer Length >+ * Factor, the Storage Director will use the value from the Define >+ * Extent Blocksize parameter for any required data transfer length >+ * calculation. >+ */ >+ if ((!(dev->ckdlaux & CKDLAUX_TLFVALID) && fetch_hw(iobuf+14)) >+ || ( (dev->ckdlaux & CKDLAUX_TLFVALID) && !fetch_hw(iobuf+14)) >+ || fetch_hw(iobuf+14) > dev->ckdxblksz) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ if ((dev->ckdlaux & CKDLAUX_TLFVALID) == 0) >+ dev->ckdltranlf = dev->ckdxblksz; >+ else >+ dev->ckdltranlf = fetch_hw(iobuf+14); >+ /* >+ * Bytes 18-19 contain an unsigned 16-bit binary value that >+ * specifies the total number of extended parameter bytes. The >+ * format and content of the Extended Parameters are defined by >+ * the Extended Operation code. >+ * >+ * The length for 3990 Mod 6 or 9390 for the Extended Operation >+ * codes must be consistent with the Extended Operation code in >+ * byte 17 as follows: >+ * 09 0001 >+ * 0A 0001 >+ * 0E 0001 or 0002 >+ * >+ * If the operation code is any code other than those defined, the >+ * extended parameter length count must be zero. If these conditions >+ * are not met the Locate Record Extended is terminated with status >+ * that includes unit check (Command Reject, format X'04', Invalid >+ * Parameter). >+ */ >+ num = fetch_hw(iobuf+18); >+ if ((iobuf[17] == CKDOPER_WRTANY && num != 1) >+ || (iobuf[17] == CKDOPER_RDANY && num != 1) >+ || (iobuf[17] == CKDOPER_RDTSET && (num != 1 && num != 2)) >+ || (iobuf[17] != CKDOPER_WRTANY && iobuf[17] != CKDOPER_RDANY >+ && iobuf[17] != CKDOPER_RDTSET && num)) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * Request the extended parameter bytes from the channel. If the >+ * channel provides fewer bytes, execution is terminated with status >+ * that includes unit check (Command Reject, format X'03', CCW byte >+ * count less than required). >+ */ >+ if (count < 20 + num) >+ { >+ *residual = 0; >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_3); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ *residual -= num; >+ /* >+ * For `Read Any' (0x0A) or `Write Any' (0x09) the extended >+ * length must be one and the extended parameter value (set size) >+ * must be one. Otherwise the Locate Record Extended command is >+ * terminated with status that includes unit check (Command Reject, >+ * format X'04', Invalid Parameter). >+ */ >+ if ((iobuf[17] == CKDOPER_WRTANY && iobuf[20] != 1) >+ || (iobuf[17] == CKDOPER_RDANY && iobuf[20] != 1)) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* >+ * Read Trackset - X'0E': The Read Trackset Operation Code prepares >+ * the Storage Director to transfer all records from one or more >+ * tracks to the channel. The tracks to be transferred are >+ * specified by the Extended Parameter and the number of tracks to >+ * be transferred is specified by the Count Parameter (byte 3). >+ * >+ * The maximum length of the Extended Parameter is specified in byte >+ * 43 of the Device Characteristics Information. >+ * >+ * The Extended Parameter contains a bit map that represents a set >+ * of sequentially addressed tracks within the defined extent. Each >+ * bit in the parameter represent one track. A '1' bit indicates the >+ * data associated with the corresponding track is to be read. A '0' >+ * bit indicates the track is to be skipped. >+ * >+ * The first bit must be a '1' and represents the track whose >+ * address is specified in the Seek Address parameter (bytes 4-7). >+ * Subsequent bits represent consecutively addressed tracks in >+ * ascending order. If the first bit is not a '1', the Locate Record >+ * Extended command is terminated with status that includes unit >+ * check (Command Reject, format X'04', Invalid Parameter). >+ * >+ * The number of '1' bits in the bit map must be equal to the value >+ * in the count parameter (byte 3); otherwise Locate Record Extended >+ * is terminated with status that includes unit check (Command >+ * Reject, format X'04', Invalid Parameter). >+ * >+ * All tracks in the bit map represented by the '1' bits must be >+ * contained within the defined extent; otherwise the Locate Record >+ * Extended command is terminated with status that includes unit >+ * check (File Protected). >+ * >+ * Track access is initiated using the Seek Address and Sector >+ * Number parameters. >+ * >+ * When track access is completed, the search operation specified by >+ * the Search Argument and the orientation modifiers (byte 0, bits >+ * 0-1) is performed. >+ * >+ * Locate Record Extended must be followed by the number of Read >+ * Track commands specified in the count parameter (byte 3). If any >+ * other command sequence is detected within the Locate Record >+ * domain, the non-conforming command will be rejected with status >+ * that includes Unit Check (Command Reject, format X'02', Invalid >+ * Command Sequence). >+ */ >+ if (iobuf[17] == CKDOPER_RDTSET) >+ { >+ U16 lastcyl, lasthead; >+ U16 mask = iobuf[20] << 8; >+ if (num > 1) >+ mask |= iobuf[21]; >+ if (!(mask & 0x8000)) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ dev->ckdlmask = mask; >+ /* >+ * Count the one bits in mask. There are elegant but obscure >+ * ways to do this but just keeping it simple here. Plus we >+ * also figure out the last track we will read. >+ */ >+ for (i = j = 0; mask; mask <<= 1) >+ { >+ j++; >+ if (mask & 0x8000) >+ i++; >+ } >+ /* Number of one bits must match count */ >+ if (i != dev->ckdlcount) >+ { >+ ckd_build_sense (dev, SENSE_CR, 0, 0, FORMAT_0, MESSAGE_4); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ /* Check extent of last track to be read */ >+ lastcyl = cyl; >+ lasthead = head + j - 1; >+ while (lasthead >= dev->ckdheads) >+ { >+ lastcyl++; >+ lasthead -= dev->ckdheads; >+ } >+ if ( EXTENT_CHECK(dev, lastcyl, lasthead) ) >+ { >+ ckd_build_sense (dev, 0, SENSE1_FP, 0, 0, 0); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ break; >+ } >+ } >+ >+ /* Seek to the required track */ >+ rc = ckd_seek (dev, cyl, head, &trkhdr, unitstat); >+ if (rc < 0) >+ { >+ if (dev->syncio_retry) dev->ckdlcount = 0; >+ break; >+ } >+ >+ /* Set normal status */ >+ *unitstat = CSW_CE | CSW_DE; >+ >+ /* Perform search according to specified orientation */ >+ switch ((dev->ckdloper & CKDOPER_ORIENTATION)) { >+ >+ case CKDOPER_ORIENT_HOME: >+ /* For home orientation, compare the search CCHH >+ with the CCHH in the track header */ >+ if (memcmp (&(trkhdr.cyl), cchhr, 4) != 0) >+ { >+ ckd_build_sense (dev, 0, SENSE1_NRF, 0, 0, 0); >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ } >+ break; >+ >+ case CKDOPER_ORIENT_COUNT: >+ case CKDOPER_ORIENT_DATA: >+ /* For count or data orientation, search the track >+ for a count field matching the specified CCHHR */ >+ while (1) >+ { >+ /* Read next count field and exit at end of track >+ with sense data indicating no record found */ >+ rc = ckd_read_count (dev, code, &rechdr, unitstat); >+ if (rc < 0) break; >+ >+ /* Turn off track overflow flag */ >+ rechdr.cyl[0] &= 0x7F; >+ >+ /* For extended op code skip r0 */ >+ if ((iobuf[0] & CKDOPER_CODE) == CKDOPER_EXTOP) >+ { >+ if (rechdr.rec != 0) >+ break; >+ } >+ /* Compare the count field with the search CCHHR */ >+ else if (memcmp (&rechdr, cchhr, 5) == 0) >+ break; >+ } /* end while */ >+ } /* end switch(CKDOPER_ORIENTATION) */ >+ >+ /* Exit if search ended with error status */ >+ if (*unitstat != (CSW_CE | CSW_DE)) >+ break; >+ >+ /* Reorient past data if data orientation is specified */ >+ if ((dev->ckdloper & CKDOPER_ORIENTATION) >+ == CKDOPER_ORIENT_DATA) >+ { >+ /* Skip past key and data fields */ >+ dev->bufoff += dev->ckdcurkl + dev->ckdcurdl; >+ >+ /* Set the device orientation fields */ >+ dev->ckdrem = 0; >+ dev->ckdorient = CKDORIENT_DATA; >+ } >+ >+ /* Set locate record flag and return normal status */ >+ dev->ckdlocat = 1; >+ break; >+ > case 0x63: > /*---------------------------------------------------------------*/ > /* DEFINE EXTENT */ >@@ -5211,7 +5839,7 @@ BYTE trk_ovfl; > > /* If within the domain of a locate record then decrement the > count of CCWs remaining to be processed within the domain */ >- if (dev->ckdlcount > 0 && code != 0x047) >+ if (dev->ckdlcount > 0 && code != 0x047 && code != 0x4B) > { > /* Decrement the count of CCWs remaining in the domain */ > dev->ckdlcount--; >diff -Naupr hercules-3.05/clock.c hercules-20070717/clock.c >--- hercules-3.05/clock.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/clock.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,12 +1,15 @@ > /* CLOCK.C (c) Copyright Jan Jaeger, 2000-2007 */ > /* TOD Clock functions */ > >-// $Id: clock.c,v 1.41 2007/06/23 00:04:04 ivan Exp $ >+// $Id: clock.c,v 1.42 2007/11/21 22:55:49 fish Exp $ > > /* The emulated hardware clock is based on the host clock, adjusted */ > /* by means of an offset and a steering rate. */ > > // $Log: clock.c,v $ >+// Revision 1.42 2007/11/21 22:55:49 fish >+// (untab) >+// > // Revision 1.41 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -93,7 +96,7 @@ static inline U64 hw_adjust(U64 base_tod > if(hw_tod < base_tod) > return base_tod; > else >- return hw_tod += 0x10; >+ return hw_tod += 0x10; > } > > >diff -Naupr hercules-3.05/clock.h hercules-20070717/clock.h >--- hercules-3.05/clock.h 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/clock.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,18 @@ > /* CLOCK.H (c) Copyright Jan Jaeger, 2000-2007 */ > /* TOD Clock functions */ > >-// $Id: clock.h,v 1.25 2007/06/23 00:04:04 ivan Exp $ >+// $Id: clock.h,v 1.28 2007/12/11 15:03:10 rbowler Exp $ > // > // $Log: clock.h,v $ >+// Revision 1.28 2007/12/11 15:03:10 rbowler >+// Fix untab columns >+// >+// Revision 1.27 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.26 2007/11/21 22:55:49 fish >+// (untab) >+// > // Revision 1.25 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -50,6 +59,13 @@ int chk_int_timer(REGS *); > int clock_hsuspend(void *file); /* Hercules suspend */ > int clock_hresume(void *file); /* Hercules resume */ > >+static __inline__ U64 host_tod(void) >+{ >+ struct timeval tv; >+ gettimeofday (&tv, NULL); >+ return (U64)tv.tv_sec*1000000 + tv.tv_usec; >+} >+ > #endif > > DLL_EXPORT void ARCH_DEP(store_int_timer) (REGS *); >@@ -110,13 +126,13 @@ _CLOCK_EXTERN U64 hw_tod; > #if defined(FEATURE_INTERVAL_TIMER) > #define ITIMER_UPDATE(_addr, _len, _regs) \ > do { \ >- if( ITIMER_ACCESS((_addr), (_len)) ) \ >+ if( ITIMER_ACCESS((_addr), (_len)) ) \ > ARCH_DEP(fetch_int_timer) ((_regs)); \ > } while(0) > #define ITIMER_SYNC(_addr, _len, _regs) \ > do { \ > if( ITIMER_ACCESS((_addr), (_len)) ) \ >- ARCH_DEP(store_int_timer) ((_regs)); \ >+ ARCH_DEP(store_int_timer) ((_regs)); \ > } while (0) > #else > #define ITIMER_UPDATE(_addr, _len, _regs) >diff -Naupr hercules-3.05/cmpsc.c hercules-20070717/cmpsc.c >--- hercules-3.05/cmpsc.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cmpsc.c 2008-09-03 13:07:48.000000000 +0200 >@@ -12,9 +12,45 @@ > /* */ > /*----------------------------------------------------------------------------*/ > >-// $Id: cmpsc.c,v 1.51 2007/06/23 00:04:04 ivan Exp $ >+// $Id: cmpsc.c,v 1.62 2008/02/14 07:21:32 bernard Exp $ > // > // $Log: cmpsc.c,v $ >+// Revision 1.62 2008/02/14 07:21:32 bernard >+// added last likely / unlikely >+// >+// Revision 1.61 2008/02/13 08:50:11 bernard >+// The cpu determined amount of data is now 16384 and it is determined >+// on 16k uncompressed data processing in expand and compress. >+// >+// Revision 1.60 2008/02/11 12:15:36 bernard >+// Errors in intermediate registers. They did not harm yet! >+// >+// Revision 1.59 2008/01/19 08:24:47 bernard >+// Grouped data exceptions to the fetching functions. No functional change. >+// >+// Revision 1.58 2008/01/16 22:37:01 fish >+// Data exception test for nonzero bit34 ece entries should ONLY be for UNPRECEDED ece entries, NOT ALL ece entries. >+// >+// Revision 1.57 2008/01/01 16:57:42 bernard >+// Performance patch >+// >+// Revision 1.56 2008/01/01 12:10:18 bernard >+// Added bit34 ece data exception check >+// >+// Revision 1.55 2007/12/31 23:48:21 fish >+// To prevent PC loop, ensure proper Data Exception code is always used: >+// regs->dxc = DXC_DECIMAL; >+// iregs.dxc = DXC_DECIMAL; >+// >+// Revision 1.54 2007/12/31 17:45:15 bernard >+// Data exception on fetching cce, ece and sd >+// >+// Revision 1.53 2007/12/31 13:14:43 bernard >+// Added data exeption during expansion when psl and cls are zero >+// >+// Revision 1.52 2007/12/24 14:06:00 bernard >+// compress check output, input swapped to input (cc0), output (cc1) >+// > // Revision 1.51 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -82,11 +118,13 @@ > /*----------------------------------------------------------------------------*/ > /* Expansion Character Entry macro's (ECE) */ > /*----------------------------------------------------------------------------*/ >+/* bit34 : Value of bits 3 and 4 (what else ;-) */ > /* csl : complete symbol length */ > /* ofst : offset from current position in output area */ > /* pptr : predecessor pointer */ > /* psl : partial symbol length */ > /*----------------------------------------------------------------------------*/ >+#define ECE_bit34(ece) (SBITS((ece), 3, 4)) > #define ECE_csl(ece) (SBITS((ece), 5, 7)) > #define ECE_ofst(ece) ((ece)[7]) > #define ECE_pptr(ece) ((SBITS((ece), 3, 7) << 8) | ((ece)[1])) >@@ -162,7 +200,7 @@ > /* Expansion Character Entry macro's (ECE) */ > /*----------------------------------------------------------------------------*/ > /* ec : address of first extension character */ >-/* upr : indication wheter entry is unpreceeded */ >+/* upr : indication wheter entry is unpreceded */ > /*----------------------------------------------------------------------------*/ > #define ECE_ec(ece) (ECE_upr((ece)) ? &(ece)[1] : &(ece)[2]) > #define ECE_upr(ece) (!ECE_psl((ece))) >@@ -275,50 +313,29 @@ > } > #endif /* !defined(COMMITREGS) */ > >-/*----------------------------------------------------------------------------*/ >-/* Fetch compression character entry. The main idea is that in normal */ >-/* compilation we directly do a vfetchc. But in debugging mode we call */ >-/* function print_cce. */ >-/*----------------------------------------------------------------------------*/ >-#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >-#define FETCH_CCE ARCH_DEP(print_cce) >-static void ARCH_DEP(print_cce)(int r2, REGS *regs, BYTE *cce, int index); >-#else >-#define FETCH_CCE _FETCH_CCE >-#endif >-#define _FETCH_CCE(r2, regs, cce, index) \ >- ARCH_DEP(vfetchc)((cce), 7, (GR1_dictor((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), (r2), (regs)) >- >-/*----------------------------------------------------------------------------*/ >-/* Fetch expansion character entry. The main idea is that in normal */ >-/* compilation we directly do a vfetchc. But in debugging mode we call */ >-/* function print_ece. */ >-/*----------------------------------------------------------------------------*/ >-#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >-#define FETCH_ECE ARCH_DEP(print_ece) >-static void ARCH_DEP(print_ece)(int r2, REGS *regs, BYTE *ece, int index); >-#else >-#define FETCH_ECE _FETCH_ECE >-#endif >-#define _FETCH_ECE(r2, regs, ece, index) \ >- ARCH_DEP(vfetchc)((ece), 7, (GR1_dictor((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), (r2), (regs)) >+#if !defined(INITREGS) >+#define INITREGS(iregs, regs, r1, r2) \ >+{ \ >+ (iregs)->gr[1] = (regs)->gr[1]; \ >+ (iregs)->gr[(r1)] = (regs)->gr[(r1)]; \ >+ (iregs)->gr[(r1) + 1] = (regs)->gr[(r1) + 1]; \ >+ (iregs)->gr[(r2)] = (regs)->gr[(r2)]; \ >+ (iregs)->gr[(r2) + 1] = (regs)->gr[(r2) + 1]; \ >+} >+#endif /* !defined(INITREGS) */ > >-/*----------------------------------------------------------------------------*/ >-/* Fetch sibling descriptor. The main idea is that in normal compilation we */ >-/* directly do a vfetchc. But in debugging mode we call function print_sd. */ >-/*----------------------------------------------------------------------------*/ >-#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >-#define FETCH_SD ARCH_DEP(print_sd) >-static void ARCH_DEP(print_sd)(int r2, REGS *regs, BYTE *sd, int index); >-#else >-#define FETCH_SD _FETCH_SD >-#endif >-#define _FETCH_SD(r2, regs, sd, index) \ >+#if (__GEN_ARCH == 900) >+#undef INITREGS >+#define INITREGS(iregs, regs, r1, r2) \ > { \ >- ARCH_DEP(vfetchc)((sd), 7, (GR1_dictor((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), (r2), (regs)); \ >- if(GR0_f1(regs)) \ >- ARCH_DEP(vfetchc)(&(sd)[8], 7, (GR1_dictor((regs)) + GR0_dctsz((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), r2, (regs)); \ >+ (iregs)->gr[1] = (regs)->gr[1]; \ >+ (iregs)->gr[(r1)] = (regs)->gr[(r1)]; \ >+ (iregs)->gr[(r1) + 1] = (regs)->gr[(r1) + 1]; \ >+ (iregs)->gr[(r2)] = (regs)->gr[(r2)]; \ >+ (iregs)->gr[(r2) + 1] = (regs)->gr[(r2) + 1]; \ >+ (iregs)->psw.amode64 = (regs)->psw.amode64; \ > } >+#endif /* defined(__GEN_ARCH == 900) */ > > /*----------------------------------------------------------------------------*/ > /* During compression and expansion a data exception is recognized on writing */ >@@ -326,11 +343,20 @@ static void ARCH_DEP(print_sd)(int r2, R > /* checking. */ > /*----------------------------------------------------------------------------*/ > #if !defined(TESTCH261) >-#define TESTCH261(regs, processed, length) \ >-{\ >- if(unlikely(((processed) += (length)) > 260)) \ >- ARCH_DEP(program_interrupt)((regs), PGM_DATA_EXCEPTION); \ >-} >+ #if defined(OPTION_CMPSC_DEBUGLVL) && (OPTION_CMPSC_DEBUGLVL & 3) >+ #define TESTCH261(regs, processed, length) \ >+ if(unlikely(((processed) += (length)) > 260)) \ >+ { \ >+ logmsg("writing or searching child 261 -> data exception\n"); \ >+ ARCH_DEP(program_interrupt)((regs), PGM_DATA_EXCEPTION); \ >+ } >+ #else /* !defined(OPTION_CMPSC_DEBUGLVL) || !(OPTION_CMPSC_DEBUGLVL & 3) */ >+ #define TESTCH261(regs, processed, length) \ >+ if(unlikely(((processed) += (length)) > 260)) \ >+ { \ >+ ARCH_DEP(program_interrupt)((regs), PGM_DATA_EXCEPTION); \ >+ } >+ #endif /* defined(OPTION_CMPSC_DEBUGLVL) && (OPTION_CMPSC_DEBUGLVL & 3) */ > #endif /* !defined(TESTCH261) */ > > /******************************************************************************/ >@@ -343,7 +369,7 @@ static void ARCH_DEP(print_sd)(int r2, R > /*----------------------------------------------------------------------------*/ > /* Constants */ > /*----------------------------------------------------------------------------*/ >-#define PROCESS_MAX 4096 /* CPU-determined amount of data */ >+#define PROCESS_MAX 16384 /* CPU-determined amount of data */ > #define TRUEFALSE(boolean) ((boolean) ? "True" : "False") > > /*----------------------------------------------------------------------------*/ >@@ -366,8 +392,11 @@ enum cmpsc_status > /*----------------------------------------------------------------------------*/ > static void ARCH_DEP(compress)(int r1, int r2, REGS *regs, REGS *iregs); > static void ARCH_DEP(expand)(int r1, int r2, REGS *regs, REGS *iregs); >+static void ARCH_DEP(fetch_cce)(int r2, REGS *regs, BYTE *cce, int index); > static int ARCH_DEP(fetch_ch)(int r2, REGS *regs, REGS *iregs, BYTE *ch, int offset); >+static void ARCH_DEP(fetch_ece)(int r2, REGS *regs, BYTE *ece, int index); > static int ARCH_DEP(fetch_is)(int r2, REGS *regs, REGS *iregs, U16 *index_symbol); >+static void ARCH_DEP(fetch_sd)(int r2, REGS *regs, BYTE *sd, int index); > static enum cmpsc_status ARCH_DEP(search_cce)(int r2, REGS *regs, REGS *iregs, BYTE *cce, BYTE *next_ch, U16 *last_match); > static enum cmpsc_status ARCH_DEP(search_sd)(int r2, REGS *regs, REGS *iregs, BYTE *cce, BYTE *next_ch, U16 *last_match); > static int ARCH_DEP(store_ch)(int r1, REGS *regs, REGS *iregs, BYTE *data, int length, int offset); >@@ -387,31 +416,39 @@ static void ARCH_DEP(compress)(int r1, i > { > BYTE cce[8]; /* compression character entry */ > int eos; /* indication end of source */ >+ GREG exit_value; /* return cc=3 on this value */ > U16 last_match; /* Last matched index symbol */ > BYTE next_ch=0; /* next character read */ >- int xlated; /* number of bytes processed */ > > /* Initialize end of source */ > eos = 0; > > /* Try to process the CPU-determined amount of data */ >- xlated = 0; >- while(xlated++ < PROCESS_MAX) >+ if(likely(GR_A(r2 + 1, regs) <= PROCESS_MAX)) >+ exit_value = 0; >+ else >+ exit_value = GR_A(r2 + 1, regs) - PROCESS_MAX; >+ while(exit_value <= GR_A(r2 + 1, regs)) > { > >+ /* Get the next character, return on end of source */ >+ if(unlikely(ARCH_DEP(fetch_ch)(r2, regs, iregs, &next_ch, 0))) >+ return; >+ > /* Can we write an index or interchange symbol */ > if(unlikely(((GR1_cbn(iregs) + GR0_smbsz(regs) - 1) / 8) >= GR_A(r1 + 1, iregs))) > { > regs->psw.cc = 1; >- return; >- } > >- /* Get the next character, return on end of source */ >- if(unlikely(ARCH_DEP(fetch_ch)(r2, regs, iregs, &next_ch, 0))) >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("compress : end of output buffer\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 */ >+ > return; >+ } > > /* Get the alphabet entry */ >- FETCH_CCE(r2, regs, cce, next_ch); >+ ARCH_DEP(fetch_cce)(r2, regs, cce, next_ch); > > /* We always match the alpabet entry, so set last match */ > ADJUSTREGS(r2, regs, iregs, 1); >@@ -430,7 +467,7 @@ static void ARCH_DEP(compress)(int r1, i > case search_siblings: > > /* Try to find a child in the sibling descriptors */ >- if(ARCH_DEP(search_sd)(r2, regs, iregs, cce, &next_ch, &last_match) == parent_found) >+ if(likely(ARCH_DEP(search_sd)(r2, regs, iregs, cce, &next_ch, &last_match) == parent_found)) > continue; > break; > >@@ -452,6 +489,10 @@ static void ARCH_DEP(compress)(int r1, i > /* Commit registers, we have completed a full compression */ > COMMITREGS(regs, iregs, r1, r2); > >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("compress : registers committed\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 */ >+ > /* When reached end of source, return to caller */ > if(unlikely(eos)) > return; >@@ -459,6 +500,11 @@ static void ARCH_DEP(compress)(int r1, i > > /* Reached model dependent CPU processing amount */ > regs->psw.cc = 3; >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("compress : reached CPU determined amount of data\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 */ >+ > } > > /*----------------------------------------------------------------------------*/ >@@ -470,13 +516,16 @@ static void ARCH_DEP(expand)(int r1, int > U16 index_symbol=0; /* Index symbol */ > BYTE ece[8]; /* Expansion Character Entry */ > int entries; /* Entries processed */ >+ GREG exit_value; /* return cc=3 on this value */ > U16 pptr; /* predecessor pointer */ > int written; /* Childs written */ >- int xlated; /* number of bytes generated */ >- >+ > /* Try to generate the CPU-determined amount of data */ >- xlated = 0; >- while(xlated++ < PROCESS_MAX) >+ if(likely(GR_A(r1 + 1, regs) <= PROCESS_MAX)) >+ exit_value = 0; >+ else >+ exit_value = GR_A(r1 + 1, regs) - PROCESS_MAX; >+ while(exit_value <= GR_A(r1 + 1, regs)) > { > > /* Get an index symbol, return on end of source */ >@@ -484,7 +533,7 @@ static void ARCH_DEP(expand)(int r1, int > return; > > /* Check if this is an alphabet entry */ >- if(index_symbol <= 0xff) >+ if(unlikely(index_symbol <= 0xff)) > { > > /* Write the alphabet entry, return on trouble */ >@@ -497,12 +546,17 @@ static void ARCH_DEP(expand)(int r1, int > > /* Commit registers, we have completed a expansion! (just a copy) */ > COMMITREGS(regs, iregs, r1, r2); >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >+ logmsg("expand : registers committed\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ >+ > } > else > { > > /* Get the Expansion character entry */ >- FETCH_ECE(r2, regs, ece, index_symbol); >+ ARCH_DEP(fetch_ece)(r2, regs, ece, index_symbol); > > /* Reset child counter */ > written = 0; >@@ -517,20 +571,20 @@ static void ARCH_DEP(expand)(int r1, int > /* Check for writing child 261 */ > TESTCH261(regs, written, ECE_psl(ece)); > >- /* Output extension characters in preceeded entry, return on trouble */ >+ /* Output extension characters in preceded entry, return on trouble */ > if(unlikely(ARCH_DEP(store_ch)(r1, regs, iregs, ECE_ec(ece), ECE_psl(ece), ECE_ofst(ece)))) > return; > >- /* Get the preceeding entry */ >+ /* Get the preceding entry */ > pptr = ECE_pptr(ece); >- FETCH_ECE(r2, regs, ece, pptr); >+ ARCH_DEP(fetch_ece)(r2, regs, ece, pptr); > > /* Check for processing entry 128 */ > if(unlikely(++entries > 127)) > { > > #if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >- logmsg("expand: trying to process entry 128\n"); >+ logmsg("expand : trying to process entry 128\n"); > #endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ > > ARCH_DEP(program_interrupt)(regs, PGM_DATA_EXCEPTION); >@@ -540,7 +594,7 @@ static void ARCH_DEP(expand)(int r1, int > /* Check for writing child 261 */ > TESTCH261(regs, written, ECE_csl(ece)); > >- /* Output extension characters in last or only unpreceeded entry, return on trouble */ >+ /* Output extension characters in last or only unpreceded entry, return on trouble */ > if(unlikely(ARCH_DEP(store_ch)(r1, regs, iregs, ECE_ec(ece), ECE_csl(ece), 0))) > return; > >@@ -549,25 +603,33 @@ static void ARCH_DEP(expand)(int r1, int > > /* Commit registers, we have completed an expansion */ > COMMITREGS(regs, iregs, r1, r2); >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >+ logmsg("expand : registers committed\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ >+ > } > } > > /* CPU-determined amount of data processed */ > regs->psw.cc = 3; >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >+ logmsg("expand : reached CPU determined amount of data\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ > } > >-#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 > /*----------------------------------------------------------------------------*/ >-/* print_cce (compression character entry). This function is only compiled in */ >-/* debugging mode. See the setting of debugging on top of this file. */ >+/* fetch_cce (compression character entry). */ > /*----------------------------------------------------------------------------*/ >-static void ARCH_DEP(print_cce)(int r2, REGS *regs, BYTE *cce, int index) >+static void ARCH_DEP(fetch_cce)(int r2, REGS *regs, BYTE *cce, int index) > { >+ ARCH_DEP(vfetchc)((cce), 7, (GR1_dictor((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), (r2), (regs)); >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 > int i; > int prt_detail; > >- _FETCH_CCE(r2, regs, cce, index); >- > logmsg("fetch_cce: index %04X\n", index); > logmsg(" cce : "); > prt_detail = 0; >@@ -599,9 +661,50 @@ static void ARCH_DEP(print_cce)(int r2, > logmsg(" %02X", CCE_cc(cce, i)); > logmsg("\n"); > } >-} > #endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 */ > >+ /* Check for data exceptions */ >+ if(CCE_cct(cce) < 2) >+ { >+ if(unlikely(CCE_act(cce) > 4)) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("fetch_cce: cct<2 and act>4 -> data exception\n"); >+#endif >+ >+ ARCH_DEP(program_interrupt)(regs, PGM_DATA_EXCEPTION); >+ } >+ } >+ else >+ { >+ if(!CCE_d(cce)) >+ { >+ if(unlikely(CCE_cct(cce) == 7)) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("fetch_cce: cct=7 and d=0 -> data exception\n"); >+#endif >+ >+ ARCH_DEP(program_interrupt)(regs, PGM_DATA_EXCEPTION); >+ } >+ } >+ else >+ { >+ if(unlikely(CCE_cct(cce) > 5)) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("fetch_cce: cct>5 and d=1 -> data exception\n"); >+#endif >+ >+ ARCH_DEP(program_interrupt)(regs, PGM_DATA_EXCEPTION); >+ } >+ } >+ } >+} >+ > /*----------------------------------------------------------------------------*/ > /* fetch_ch (character) */ > /*----------------------------------------------------------------------------*/ >@@ -627,18 +730,17 @@ static int ARCH_DEP(fetch_ch)(int r2, RE > return(0); > } > >-#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 > /*----------------------------------------------------------------------------*/ >-/* print_ece (expansion character entry). This function is only compiled in */ >-/* debugging mode. See the setting of debugging on top of this file. */ >+/* fetch_ece (expansion character entry). */ > /*----------------------------------------------------------------------------*/ >-static void ARCH_DEP(print_ece)(int r2, REGS *regs, BYTE *ece, int index) >+static void ARCH_DEP(fetch_ece)(int r2, REGS *regs, BYTE *ece, int index) > { >+ ARCH_DEP(vfetchc)((ece), 7, (GR1_dictor((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), (r2), (regs)); >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 > int i; > int prt_detail; > >- _FETCH_ECE(r2, regs, ece, index); >- > logmsg("fetch_ece: index %04X\n", index); > logmsg(" ece : "); > prt_detail = 0; >@@ -669,9 +771,35 @@ static void ARCH_DEP(print_ece)(int r2, > } > logmsg("\n"); > } >-} > #endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ > >+ /* Check for data exceptions */ >+ if(!ECE_psl(ece)) >+ { >+ if(unlikely(!ECE_csl(ece) || ECE_bit34(ece))) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >+ logmsg("fetch_ece: psl=0 and (csl=0 or bit34 nonzero) -> data exception\n"); >+#endif >+ >+ ARCH_DEP(program_interrupt)((regs), PGM_DATA_EXCEPTION); >+ } >+ } >+ else >+ { >+ if(unlikely(ECE_psl(ece) > 5)) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >+ logmsg("fetch_ece: psl>5 -> data exception\n"); >+#endif >+ >+ ARCH_DEP(program_interrupt)((regs), PGM_DATA_EXCEPTION); >+ } >+ } >+} >+ > /*----------------------------------------------------------------------------*/ > /* fetch_is (index symbol) */ > /*----------------------------------------------------------------------------*/ >@@ -709,24 +837,25 @@ static int ARCH_DEP(fetch_is)(int r2, RE > GR1_setcbn(iregs, (GR1_cbn(iregs) + GR0_smbsz(regs)) % 8); > > #if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 >- logmsg("fetch_is : %04X, cbn=%d, GR%02d=" F_GREG ", GR%02d=" F_GREG "\n", *index_symbol, GR1_cbn(iregs), r2, iregs->GR(r2), r2 + 1, iregs->GR(r2 + 1)); >+ logmsg("fetch_is : %04X, cbn=%d, GR%02d=" F_VADR ", GR%02d=" F_GREG "\n", *index_symbol, GR1_cbn(iregs), r2, iregs->GR(r2), r2 + 1, iregs->GR(r2 + 1)); > #endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ > > return(0); > } > >-#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 > /*----------------------------------------------------------------------------*/ >-/* print_sd (sibling descriptor). This function is only compiled in debugging */ >-/* mode. See the setting of debugging on top of this file. */ >+/* fetch_sd (sibling descriptor). */ > /*----------------------------------------------------------------------------*/ >-static void ARCH_DEP(print_sd)(int r2, REGS *regs, BYTE *sd, int index) >+static void ARCH_DEP(fetch_sd)(int r2, REGS *regs, BYTE *sd, int index) > { >+ ARCH_DEP(vfetchc)((sd), 7, (GR1_dictor((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), (r2), (regs)); >+ if(GR0_f1(regs)) >+ ARCH_DEP(vfetchc)(&(sd)[8], 7, (GR1_dictor((regs)) + GR0_dctsz((regs)) + (index) * 8) & ADDRESS_MAXWRAP((regs)), r2, (regs)); >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 > int i; > int prt_detail; > >- _FETCH_SD(r2, regs, sd, index); >- > if(GR0_f1(regs)) > { > logmsg("fetch_sd1: index %04X\n", index); >@@ -777,9 +906,20 @@ static void ARCH_DEP(print_sd)(int r2, R > logmsg("\n"); > } > } >-} > #endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 */ > >+ /* Check for data exceptions */ >+ if(unlikely((GR0_f1(regs) && !SD1_sct(sd)))) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("fetch_sd : format-1 sd and sct=0 -> data exception\n"); >+#endif >+ >+ ARCH_DEP(program_interrupt)((regs), PGM_DATA_EXCEPTION); >+ } >+} >+ > /*----------------------------------------------------------------------------*/ > /* search_cce (compression character entry) */ > /*----------------------------------------------------------------------------*/ >@@ -793,18 +933,25 @@ static enum cmpsc_status ARCH_DEP(search > > /* Get the next character when there are children */ > if(unlikely((CCE_ccs(cce) && ARCH_DEP(fetch_ch)(r2, regs, iregs, next_ch, 0)))) >+ { >+ >+#if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >+ logmsg("search_cce: end of source\n"); >+#endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 2 */ >+ > return(end_of_source); >+ } > > /* Now check all children in parent */ > for(i = 0; i < CCE_ccs(cce); i++) > { > > /* Stop searching when child tested and no consecutive child character */ >- if(!ind_search_siblings && !CCE_ccc(cce, i)) >+ if(unlikely(!ind_search_siblings && !CCE_ccc(cce, i))) > return(write_index_symbol); > > /* Compare character with child */ >- if(*next_ch == CCE_cc(cce, i)) >+ if(unlikely(*next_ch == CCE_cc(cce, i))) > { > > /* Child is tested, so stop searching for siblings*/ >@@ -823,10 +970,10 @@ static enum cmpsc_status ARCH_DEP(search > } > > /* Found a child get the character entry */ >- FETCH_CCE(r2, regs, ccce, CCE_cptr(cce) + i); >+ ARCH_DEP(fetch_cce)(r2, regs, ccce, CCE_cptr(cce) + i); > > /* Check if additional extension characters match */ >- if(ARCH_DEP(test_ec)(r2, regs, iregs, ccce)) >+ if(likely(ARCH_DEP(test_ec)(r2, regs, iregs, ccce))) > { > > /* Set last match */ >@@ -847,7 +994,7 @@ static enum cmpsc_status ARCH_DEP(search > } > > /* Are there siblings? */ >- if(CCE_mcc(cce)) >+ if(likely(CCE_mcc(cce))) > return(search_siblings); > > /* No siblings, write found index symbol */ >@@ -884,7 +1031,7 @@ static enum cmpsc_status ARCH_DEP(search > { > > /* Get the sibling descriptor */ >- FETCH_SD(r2, regs, sd, CCE_cptr(cce) + sd_ptr); >+ ARCH_DEP(fetch_sd)(r2, regs, sd, CCE_cptr(cce) + sd_ptr); > > /* Check all children in sibling descriptor */ > for(i = 0; i < SD_scs(regs, sd); i++) >@@ -894,7 +1041,7 @@ static enum cmpsc_status ARCH_DEP(search > if(unlikely(!ind_search_siblings && !SD_ccc(regs, sd, i))) > return(write_index_symbol); > >- if(*next_ch == SD_sc(regs, sd, i)) >+ if(unlikely(*next_ch == SD_sc(regs, sd, i))) > { > > /* Child is tested, so stop searching for siblings*/ >@@ -913,10 +1060,10 @@ static enum cmpsc_status ARCH_DEP(search > } > > /* Found a child get the character entry */ >- FETCH_CCE(r2, regs, ccce, CCE_cptr(cce) + sd_ptr + i + 1); >+ ARCH_DEP(fetch_cce)(r2, regs, ccce, CCE_cptr(cce) + sd_ptr + i + 1); > > /* Check if additional extension characters match */ >- if(ARCH_DEP(test_ec)(r2, regs, iregs, ccce)) >+ if(unlikely(ARCH_DEP(test_ec)(r2, regs, iregs, ccce))) > { > > /* Set last match */ >@@ -1049,7 +1196,7 @@ static void ARCH_DEP(store_is)(int r1, i > GR1_setcbn(iregs, (GR1_cbn(iregs) + GR0_smbsz(regs)) % 8); > > #if defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 >- logmsg("store_is : %04X, cbn=%d, GR%02d=" F_GREG ", GR%02d=" F_GREG "\n", index_symbol, GR1_cbn(iregs), r1, iregs->GR(r1), r1 + 1, iregs->GR(r1 + 1)); >+ logmsg("store_is : %04X, cbn=%d, GR%02d=" F_VADR ", GR%02d=" F_GREG "\n", index_symbol, GR1_cbn(iregs), r1, iregs->GR(r1), r1 + 1, iregs->GR(r1 + 1)); > #endif /* defined(OPTION_CMPSC_DEBUGLVL) && OPTION_CMPSC_DEBUGLVL & 1 */ > } > >@@ -1065,7 +1212,7 @@ static int ARCH_DEP(test_ec)(int r2, REG > { > > /* Get a character return on nomatch or end of source */ >- if(ARCH_DEP(fetch_ch)(r2, regs, iregs, &ch, i + 1) || ch != CCE_ec(cce, i)) >+ if(unlikely(ARCH_DEP(fetch_ch)(r2, regs, iregs, &ch, i + 1) || ch != CCE_ec(cce, i))) > return(0); > } > >@@ -1088,36 +1235,35 @@ DEF_INST(compression_call) > > #ifdef OPTION_CMPSC_DEBUGLVL > logmsg("CMPSC: compression call\n"); >- logmsg(" r1 : GR%02d\n", r1); >- logmsg(" address : " F_VADR "\n", regs->GR(r1)); >- logmsg(" length : " F_GREG "\n", regs->GR(r1 + 1)); >- logmsg(" r2 : GR%02d\n", r2); >- logmsg(" address : " F_VADR "\n", regs->GR(r2)); >- logmsg(" length : " F_GREG "\n", regs->GR(r2 + 1)); >- logmsg(" GR00 : " F_GREG "\n", (regs)->GR(0)); >- logmsg(" st : %s\n", TRUEFALSE(GR0_st((regs)))); >- logmsg(" cdss : %d\n", GR0_cdss((regs))); >- logmsg(" f1 : %s\n", TRUEFALSE(GR0_f1((regs)))); >- logmsg(" e : %s\n", TRUEFALSE(GR0_e((regs)))); >- logmsg(" smbsz > %d\n", GR0_smbsz((regs))); >- logmsg(" dctsz > %08X\n", GR0_dctsz((regs))); >- logmsg(" GR01 : " F_GREG "\n", (regs)->GR(1)); >- logmsg(" dictor: " F_GREG "\n", GR1_dictor((regs))); >- logmsg(" sttoff: %08X\n", GR1_sttoff((regs))); >- logmsg(" cbn : %d\n", GR1_cbn((regs))); >+ logmsg(" r1 : GR%02d\n", r1); >+ logmsg(" address : " F_VADR "\n", regs->GR(r1)); >+ logmsg(" length : " F_GREG "\n", regs->GR(r1 + 1)); >+ logmsg(" r2 : GR%02d\n", r2); >+ logmsg(" address : " F_VADR "\n", regs->GR(r2)); >+ logmsg(" length : " F_GREG "\n", regs->GR(r2 + 1)); >+ logmsg(" GR00 : " F_GREG "\n", regs->GR(0)); >+ logmsg(" st : %s\n", TRUEFALSE(GR0_st(regs))); >+ logmsg(" cdss : %d\n", GR0_cdss(regs)); >+ logmsg(" f1 : %s\n", TRUEFALSE(GR0_f1(regs))); >+ logmsg(" e : %s\n", TRUEFALSE(GR0_e(regs))); >+ logmsg(" smbsz > %d\n", GR0_smbsz(regs)); >+ logmsg(" dctsz > %08X\n", GR0_dctsz(regs)); >+ logmsg(" GR01 : " F_GREG "\n", regs->GR(1)); >+ logmsg(" dictor: " F_GREG "\n", GR1_dictor(regs)); >+ logmsg(" sttoff: %08X\n", GR1_sttoff(regs)); >+ logmsg(" cbn : %d\n", GR1_cbn(regs)); > #endif /* OPTION_CMPSC_DEBUGLVL */ > > /* Check the registers on even-odd pairs and valid compression-data symbol size */ > if(unlikely(r1 & 0x01 || r2 & 0x01 || !GR0_cdss(regs) || GR0_cdss(regs) > 5)) > ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); > >-#if (__GEN_ARCH == 900) >- /* In z/Archtecture we need the 64bit flag */ >- iregs.psw.amode64 = regs->psw.amode64; >-#endif /* (__GEN_ARCH == 900) */ >+ /* Set possible Data Exception code right away */ >+ regs->dxc = DXC_DECIMAL; >+ iregs.dxc = DXC_DECIMAL; > >- /* Initialize intermediate registers using COMMITREGS the other way round */ >- COMMITREGS(&iregs, regs, r1, r2); >+ /* Initialize intermediate registers */ >+ INITREGS(&iregs, regs, r1, r2); > > /* Now go to the requested function */ > if(likely(GR0_e(regs))) >diff -Naupr hercules-3.05/codepage.c hercules-20070717/codepage.c >--- hercules-3.05/codepage.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/codepage.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,12 @@ > /* CODEPAGE.C (c) Copyright Jan Jaeger, 1999-2007 */ > /* Code Page conversion */ > >-// $Id: codepage.c,v 1.24 2007/06/23 00:04:04 ivan Exp $ >+// $Id: codepage.c,v 1.25 2008/01/14 17:25:16 rbowler Exp $ > // > // $Log: codepage.c,v $ >+// Revision 1.25 2008/01/14 17:25:16 rbowler >+// Additional ISO-8859-1 to European EBCDIC codepages >+// > // Revision 1.24 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -187,6 +190,350 @@ cp_273_to_850[] = { > }; > > >+ /* 819 (ISO-8859-1 Latin-1) to 273 (EBCDIC CECP Germany) */ >+static unsigned char >+cp_819_to_273[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x15\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x4F\x7F\x7B\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\xB5\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\x63\xEC\xFC\x5F\x6D" >+ /* 6x */ "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\x43\xBB\xDC\x59\x07" >+ /* 8x */ "\x04\x06\x08\x09\x0A\x14\x17\x1A\x1B\x20\x21\x22\x23\x24\x25\x28" >+ /* 9x */ "\x29\x2A\x2B\x2C\x30\x31\x33\x34\x35\x36\x38\x39\x3A\x3B\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\xB1\x9F\xB2\xCC\x7C\xBD\xB4\x9A\x8A\xBA\xCA\xAF\xBC" >+ /* Bx */ "\x90\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x4A\x67\x9E\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\xE0\xBF\x80\xFD\xFE\xFB\x5A\xAD\xAE\xA1" >+ /* Ex */ "\x44\x45\x42\x46\xC0\x47\x9C\x48\x54\x51\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x49\xCD\xCE\xCB\xCF\x6A\xE1\x70\xDD\xDE\xDB\xD0\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_273_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x80\x09\x81\x7F\x82\x83\x84\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x85\x0A\x08\x86\x18\x19\x87\x88\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x89\x8A\x8B\x8C\x8D\x8E\x17\x1B\x8F\x90\x91\x92\x93\x05\x06\x07" >+ /* 3x */ "\x94\x95\x16\x96\x97\x98\x99\x04\x9A\x9B\x9C\x9D\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\x7B\xE0\xE1\xE3\xE5\xE7\xF1\xC4\x2E\x3C\x28\x2B\x21" >+ /* 5x */ "\x26\xE9\xEA\xEB\xE8\xED\xEE\xEF\xEC\x7E\xDC\x24\x2A\x29\x3B\x5E" >+ /* 6x */ "\x2D\x2F\xC2\x5B\xC0\xC1\xC3\xC5\xC7\xD1\xF6\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\x60\x3A\x23\xA7\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\xB0\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\xA4" >+ /* Ax */ "\xB5\xDF\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\xA3\xA5\xB7\xA9\x40\xB6\xBC\xBD\xBE\xAC\x7C\xAF\xA8\xB4\xD7" >+ /* Cx */ "\xE4\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xA6\xF2\xF3\xF5" >+ /* Dx */ "\xFC\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\x7D\xF9\xFA\xFF" >+ /* Ex */ "\xD6\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\x5C\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\x5D\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 277 (EBCDIC CECP Denmark, Norway) */ >+static unsigned char >+cp_819_to_277[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x25\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x4F\x7F\x4A\x67\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\x80\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\x9E\xE0\x9F\x5F\x6D" >+ /* 6x */ "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\x9C\xBB\x47\xDC\x07" >+ /* 8x */ "\x20\x21\x22\x23\x24\x15\x06\x17\x28\x29\x2A\x2B\x2C\x09\x0A\x1B" >+ /* 9x */ "\x30\x31\x1A\x33\x34\x35\x36\x08\x38\x39\x3A\x3B\x04\x14\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\xB1\x5A\xB2\x70\xB5\xBD\xB4\x9A\x8A\xBA\xCA\xAF\xBC" >+ /* Bx */ "\x90\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x63\x5B\x7B\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\xEC\xBF\x7C\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\x44\x45\x42\x46\x43\xD0\xC0\x48\x54\x51\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x49\xCD\xCE\xCB\xCF\xCC\xE1\x6A\xDD\xDE\xDB\xA1\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_277_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x9C\x09\x86\x7F\x97\x8D\x8E\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x9D\x85\x08\x87\x18\x19\x92\x8F\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x80\x81\x82\x83\x84\x0A\x17\x1B\x88\x89\x8A\x8B\x8C\x05\x06\x07" >+ /* 3x */ "\x90\x91\x16\x93\x94\x95\x96\x04\x98\x99\x9A\x9B\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\xE4\xE0\xE1\xE3\x7D\xE7\xF1\x23\x2E\x3C\x28\x2B\x21" >+ /* 5x */ "\x26\xE9\xEA\xEB\xE8\xED\xEE\xEF\xEC\xDF\xA4\xC5\x2A\x29\x3B\x5E" >+ /* 6x */ "\x2D\x2F\xC2\xC4\xC0\xC1\xC3\x24\xC7\xD1\xF8\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xA6\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\x60\x3A\xC6\xD8\x27\x3D\x22" >+ /* 8x */ "\x40\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\xB0\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\x7B\xB8\x5B\x5D" >+ /* Ax */ "\xB5\xFC\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\xA3\xA5\xB7\xA9\xA7\xB6\xBC\xBD\xBE\xAC\x7C\xAF\xA8\xB4\xD7" >+ /* Cx */ "\xE6\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xF6\xF2\xF3\xF5" >+ /* Dx */ "\xE5\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\x7E\xF9\xFA\xFF" >+ /* Ex */ "\x5C\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\xD6\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 278 (EBCDIC CECP Finland, Sweden) */ >+static unsigned char >+cp_819_to_278[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x15\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x4F\x7F\x63\x67\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\xEC\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xB5\x71\x9F\x5F\x6D" >+ /* 6x */ "\x51\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\x43\xBB\x47\xDC\x07" >+ /* 8x */ "\x04\x06\x08\x09\x0A\x14\x17\x1A\x1B\x20\x21\x22\x23\x24\x25\x28" >+ /* 9x */ "\x29\x2A\x2B\x2C\x30\x31\x33\x34\x35\x36\x38\x39\x3A\x3B\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\xB1\x5A\xB2\xCC\x4A\xBD\xB4\x9A\x8A\xBA\xCA\xAF\xBC" >+ /* Bx */ "\x90\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x7B\x5B\x9E\x68\x74\xE0\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\x7C\xBF\x80\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\x44\x45\x42\x46\xC0\xD0\x9C\x48\x54\x79\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x49\xCD\xCE\xCB\xCF\x6A\xE1\x70\xDD\xDE\xDB\xA1\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_278_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x80\x09\x81\x7F\x82\x83\x84\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x85\x0A\x08\x86\x18\x19\x87\x88\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x89\x8A\x8B\x8C\x8D\x8E\x17\x1B\x8F\x90\x91\x92\x93\x05\x06\x07" >+ /* 3x */ "\x94\x95\x16\x96\x97\x98\x99\x04\x9A\x9B\x9C\x9D\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\x7B\xE0\xE1\xE3\x7D\xE7\xF1\xA7\x2E\x3C\x28\x2B\x21" >+ /* 5x */ "\x26\x60\xEA\xEB\xE8\xED\xEE\xEF\xEC\xDF\xA4\xC5\x2A\x29\x3B\x5E" >+ /* 6x */ "\x2D\x2F\xC2\x23\xC0\xC1\xC3\x24\xC7\xD1\xF6\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\x5C\xCA\xCB\xC8\xCD\xCE\xCF\xCC\xE9\x3A\xC4\xD6\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\xB0\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\x5D" >+ /* Ax */ "\xB5\xFC\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\xA3\xA5\xB7\xA9\x5B\xB6\xBC\xBD\xBE\xAC\x7C\xAF\xA8\xB4\xD7" >+ /* Cx */ "\xE4\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xA6\xF2\xF3\xF5" >+ /* Dx */ "\xE5\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\x7E\xF9\xFA\xFF" >+ /* Ex */ "\xC9\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\x40\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 280 (EBCDIC CECP Italy) */ >+static unsigned char >+cp_819_to_280[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x25\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x4F\x7F\xB1\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\xB5\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\x90\x48\x51\x5F\x6D" >+ /* 6x */ "\xDD\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\x44\xBB\x54\x58\x07" >+ /* 8x */ "\x20\x21\x22\x23\x24\x15\x06\x17\x28\x29\x2A\x2B\x2C\x09\x0A\x1B" >+ /* 9x */ "\x30\x31\x1A\x33\x34\x35\x36\x08\x38\x39\x3A\x3B\x04\x14\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\x7B\x9F\xB2\xCD\x7C\xBD\xB4\x9A\x8A\xBA\xCA\xAF\xBC" >+ /* Bx */ "\x4A\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x63\x67\x9E\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\xEC\xBF\x80\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\xC0\x45\x42\x46\x43\x47\x9C\xE0\xD0\x5A\x52\x53\xA1\x55\x56\x57" >+ /* Fx */ "\x8C\x49\x6A\xCE\xCB\xCF\xCC\xE1\x70\x79\xDE\xDB\xDC\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_280_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x9C\x09\x86\x7F\x97\x8D\x8E\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x9D\x85\x08\x87\x18\x19\x92\x8F\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x80\x81\x82\x83\x84\x0A\x17\x1B\x88\x89\x8A\x8B\x8C\x05\x06\x07" >+ /* 3x */ "\x90\x91\x16\x93\x94\x95\x96\x04\x98\x99\x9A\x9B\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\xE4\x7B\xE1\xE3\xE5\x5C\xF1\xB0\x2E\x3C\x28\x2B\x21" >+ /* 5x */ "\x26\x5D\xEA\xEB\x7D\xED\xEE\xEF\x7E\xDF\xE9\x24\x2A\x29\x3B\x5E" >+ /* 6x */ "\x2D\x2F\xC2\xC4\xC0\xC1\xC3\xC5\xC7\xD1\xF2\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\xF9\x3A\xA3\xA7\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\x5B\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\xA4" >+ /* Ax */ "\xB5\xEC\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\x23\xA5\xB7\xA9\x40\xB6\xBC\xBD\xBE\xAC\x7C\xAF\xA8\xB4\xD7" >+ /* Cx */ "\xE0\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xF6\xA6\xF3\xF5" >+ /* Dx */ "\xE8\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\xFC\x60\xFA\xFF" >+ /* Ex */ "\xE7\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\xD6\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 284 (EBCDIC CECP Spain) */ >+static unsigned char >+cp_819_to_284[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x15\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\xBB\x7F\x69\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\x7C\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\x4A\xE0\x5A\xBA\x6D" >+ /* 6x */ "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xC0\x4F\xD0\xBD\x07" >+ /* 8x */ "\x04\x06\x08\x09\x0A\x14\x17\x1A\x1B\x20\x21\x22\x23\x24\x25\x28" >+ /* 9x */ "\x29\x2A\x2B\x2C\x30\x31\x33\x34\x35\x36\x38\x39\x3A\x3B\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\xB1\x9F\xB2\x49\xB5\xA1\xB4\x9A\x8A\x5F\xCA\xAF\xBC" >+ /* Bx */ "\x90\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x63\x67\x9E\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x7B\xED\xEE\xEB\xEF\xEC\xBF\x80\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\x44\x45\x42\x46\x43\x47\x9C\x48\x54\x51\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x6A\xCD\xCE\xCB\xCF\xCC\xE1\x70\xDD\xDE\xDB\xDC\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_284_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x80\x09\x81\x7F\x82\x83\x84\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x85\x0A\x08\x86\x18\x19\x87\x88\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x89\x8A\x8B\x8C\x8D\x8E\x17\x1B\x8F\x90\x91\x92\x93\x05\x06\x07" >+ /* 3x */ "\x94\x95\x16\x96\x97\x98\x99\x04\x9A\x9B\x9C\x9D\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\xE4\xE0\xE1\xE3\xE5\xE7\xA6\x5B\x2E\x3C\x28\x2B\x7C" >+ /* 5x */ "\x26\xE9\xEA\xEB\xE8\xED\xEE\xEF\xEC\xDF\x5D\x24\x2A\x29\x3B\xAC" >+ /* 6x */ "\x2D\x2F\xC2\xC4\xC0\xC1\xC3\xC5\xC7\x23\xF1\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\x60\x3A\xD1\x40\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\xB0\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\xA4" >+ /* Ax */ "\xB5\xA8\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\xA3\xA5\xB7\xA9\xA7\xB6\xBC\xBD\xBE\x5E\x21\xAF\x7E\xB4\xD7" >+ /* Cx */ "\x7B\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xF6\xF2\xF3\xF5" >+ /* Dx */ "\x7D\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\xFC\xF9\xFA\xFF" >+ /* Ex */ "\x5C\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\xD6\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 285 (EBCDIC CECP UK) */ >+static unsigned char >+cp_819_to_285[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x15\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x5A\x7F\x7B\x4A\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\x7C\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xB1\xE0\xBB\xBA\x6D" >+ /* 6x */ "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xC0\x4F\xD0\xBC\x07" >+ /* 8x */ "\x04\x06\x08\x09\x0A\x14\x17\x1A\x1B\x20\x21\x22\x23\x24\x25\x28" >+ /* 9x */ "\x29\x2A\x2B\x2C\x30\x31\x33\x34\x35\x36\x38\x39\x3A\x3B\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\x5B\x9F\xB2\x6A\xB5\xBD\xB4\x9A\x8A\x5F\xCA\xAF\xA1" >+ /* Bx */ "\x90\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x63\x67\x9E\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\xEC\xBF\x80\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\x44\x45\x42\x46\x43\x47\x9C\x48\x54\x51\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x49\xCD\xCE\xCB\xCF\xCC\xE1\x70\xDD\xDE\xDB\xDC\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_285_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x80\x09\x81\x7F\x82\x83\x84\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x85\x0A\x08\x86\x18\x19\x87\x88\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x89\x8A\x8B\x8C\x8D\x8E\x17\x1B\x8F\x90\x91\x92\x93\x05\x06\x07" >+ /* 3x */ "\x94\x95\x16\x96\x97\x98\x99\x04\x9A\x9B\x9C\x9D\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\xE4\xE0\xE1\xE3\xE5\xE7\xF1\x24\x2E\x3C\x28\x2B\x7C" >+ /* 5x */ "\x26\xE9\xEA\xEB\xE8\xED\xEE\xEF\xEC\xDF\x21\xA3\x2A\x29\x3B\xAC" >+ /* 6x */ "\x2D\x2F\xC2\xC4\xC0\xC1\xC3\xC5\xC7\xD1\xA6\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\x60\x3A\x23\x40\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\xB0\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\xA4" >+ /* Ax */ "\xB5\xAF\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\x5B\xA5\xB7\xA9\xA7\xB6\xBC\xBD\xBE\x5E\x5D\x7E\xA8\xB4\xD7" >+ /* Cx */ "\x7B\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xF6\xF2\xF3\xF5" >+ /* Dx */ "\x7D\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\xFC\xF9\xFA\xFF" >+ /* Ex */ "\x5C\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\xD6\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 297 (EBCDIC CECP France) */ >+static unsigned char >+cp_819_to_297[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x15\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x4F\x7F\xB1\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\x44\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\x90\x48\xB5\x5F\x6D" >+ /* 6x */ "\xA0\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\x51\xBB\x54\xBD\x07" >+ /* 8x */ "\x04\x06\x08\x09\x0A\x14\x17\x1A\x1B\x20\x21\x22\x23\x24\x25\x28" >+ /* 9x */ "\x29\x2A\x2B\x2C\x30\x31\x33\x34\x35\x36\x38\x39\x3A\x3B\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\x7B\x9F\xB2\xDD\x5A\xA1\xB4\x9A\x8A\xBA\xCA\xAF\xBC" >+ /* Bx */ "\x4A\x8F\xEA\xFA\xBE\x79\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x63\x67\x9E\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\xEC\xBF\x80\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\x7C\x45\x42\x46\x43\x47\x9C\xE0\xD0\xC0\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x49\xCD\xCE\xCB\xCF\xCC\xE1\x70\x6A\xDE\xDB\xDC\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_297_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x80\x09\x81\x7F\x82\x83\x84\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x85\x0A\x08\x86\x18\x19\x87\x88\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x89\x8A\x8B\x8C\x8D\x8E\x17\x1B\x8F\x90\x91\x92\x93\x05\x06\x07" >+ /* 3x */ "\x94\x95\x16\x96\x97\x98\x99\x04\x9A\x9B\x9C\x9D\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\xE4\x40\xE1\xE3\xE5\x5C\xF1\xB0\x2E\x3C\x28\x2B\x21" >+ /* 5x */ "\x26\x7B\xEA\xEB\x7D\xED\xEE\xEF\xEC\xDF\xA7\x24\x2A\x29\x3B\x5E" >+ /* 6x */ "\x2D\x2F\xC2\xC4\xC0\xC1\xC3\xC5\xC7\xD1\xF9\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\xB5\x3A\xA3\xE0\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\x5B\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\xA4" >+ /* Ax */ "\x60\xA8\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\x23\xA5\xB7\xA9\x5D\xB6\xBC\xBD\xBE\xAC\x7C\xAF\x7E\xB4\xD7" >+ /* Cx */ "\xE9\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xF6\xF2\xF3\xF5" >+ /* Dx */ "\xE8\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\xFC\xA6\xFA\xFF" >+ /* Ex */ "\xE7\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\xD6\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ >+ /* 819 (ISO-8859-1 Latin-1) to 500 (EBCDIC CECP International) */ >+static unsigned char >+cp_819_to_500[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x37\x2D\x2E\x2F\x16\x05\x15\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x3C\x3D\x32\x26\x18\x19\x3F\x27\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x40\x4F\x7F\x7B\x5B\x6C\x50\x7D\x4D\x5D\x5C\x4E\x6B\x60\x4B\x61" >+ /* 3x */ "\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\x7A\x5E\x4C\x7E\x6E\x6F" >+ /* 4x */ "\x7C\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xD1\xD2\xD3\xD4\xD5\xD6" >+ /* 5x */ "\xD7\xD8\xD9\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\x4A\xE0\x5A\x5F\x6D" >+ /* 6x */ "\x79\x81\x82\x83\x84\x85\x86\x87\x88\x89\x91\x92\x93\x94\x95\x96" >+ /* 7x */ "\x97\x98\x99\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xC0\xBB\xD0\xA1\x07" >+ /* 8x */ "\x04\x06\x08\x09\x0A\x14\x17\x1A\x1B\x20\x21\x22\x23\x24\x25\x28" >+ /* 9x */ "\x29\x2A\x2B\x2C\x30\x31\x33\x34\x35\x36\x38\x39\x3A\x3B\x3E\xFF" >+ /* Ax */ "\x41\xAA\xB0\xB1\x9F\xB2\x6A\xB5\xBD\xB4\x9A\x8A\xBA\xCA\xAF\xBC" >+ /* Bx */ "\x90\x8F\xEA\xFA\xBE\xA0\xB6\xB3\x9D\xDA\x9B\x8B\xB7\xB8\xB9\xAB" >+ /* Cx */ "\x64\x65\x62\x66\x63\x67\x9E\x68\x74\x71\x72\x73\x78\x75\x76\x77" >+ /* Dx */ "\xAC\x69\xED\xEE\xEB\xEF\xEC\xBF\x80\xFD\xFE\xFB\xFC\xAD\xAE\x59" >+ /* Ex */ "\x44\x45\x42\x46\x43\x47\x9C\x48\x54\x51\x52\x53\x58\x55\x56\x57" >+ /* Fx */ "\x8C\x49\xCD\xCE\xCB\xCF\xCC\xE1\x70\xDD\xDE\xDB\xDC\x8D\x8E\xDF" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+static unsigned char >+cp_500_to_819[] = { >+ /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ /* 0x */ "\x00\x01\x02\x03\x80\x09\x81\x7F\x82\x83\x84\x0B\x0C\x0D\x0E\x0F" >+ /* 1x */ "\x10\x11\x12\x13\x85\x0A\x08\x86\x18\x19\x87\x88\x1C\x1D\x1E\x1F" >+ /* 2x */ "\x89\x8A\x8B\x8C\x8D\x8E\x17\x1B\x8F\x90\x91\x92\x93\x05\x06\x07" >+ /* 3x */ "\x94\x95\x16\x96\x97\x98\x99\x04\x9A\x9B\x9C\x9D\x14\x15\x9E\x1A" >+ /* 4x */ "\x20\xA0\xE2\xE4\xE0\xE1\xE3\xE5\xE7\xF1\x5B\x2E\x3C\x28\x2B\x21" >+ /* 5x */ "\x26\xE9\xEA\xEB\xE8\xED\xEE\xEF\xEC\xDF\x5D\x24\x2A\x29\x3B\x5E" >+ /* 6x */ "\x2D\x2F\xC2\xC4\xC0\xC1\xC3\xC5\xC7\xD1\xA6\x2C\x25\x5F\x3E\x3F" >+ /* 7x */ "\xF8\xC9\xCA\xCB\xC8\xCD\xCE\xCF\xCC\x60\x3A\x23\x40\x27\x3D\x22" >+ /* 8x */ "\xD8\x61\x62\x63\x64\x65\x66\x67\x68\x69\xAB\xBB\xF0\xFD\xFE\xB1" >+ /* 9x */ "\xB0\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\xAA\xBA\xE6\xB8\xC6\xA4" >+ /* Ax */ "\xB5\x7E\x73\x74\x75\x76\x77\x78\x79\x7A\xA1\xBF\xD0\xDD\xDE\xAE" >+ /* Bx */ "\xA2\xA3\xA5\xB7\xA9\xA7\xB6\xBC\xBD\xBE\xAC\x7C\xAF\xA8\xB4\xD7" >+ /* Cx */ "\x7B\x41\x42\x43\x44\x45\x46\x47\x48\x49\xAD\xF4\xF6\xF2\xF3\xF5" >+ /* Dx */ "\x7D\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\xB9\xFB\xFC\xF9\xFA\xFF" >+ /* Ex */ "\x5C\xF7\x53\x54\x55\x56\x57\x58\x59\x5A\xB2\xD4\xD6\xD2\xD3\xD5" >+ /* Fx */ "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\xB3\xDB\xDC\xD9\xDA\x9F" >+ }; /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ >+ >+ > /* 437 to 1047 */ > static unsigned char > cp_437_to_1047[] = { >@@ -383,6 +730,14 @@ static CPCONV cpconv[] = { > { "437/037", cp_437_to_037, cp_037_to_437 }, > { "437/500", cp_437_to_500, cp_500_to_437 }, > { "850/273", cp_850_to_273, cp_273_to_850 }, >+ { "819/273", cp_819_to_273, cp_273_to_819 }, >+ { "819/277", cp_819_to_277, cp_277_to_819 }, >+ { "819/278", cp_819_to_278, cp_278_to_819 }, >+ { "819/280", cp_819_to_280, cp_280_to_819 }, >+ { "819/284", cp_819_to_284, cp_284_to_819 }, >+ { "819/285", cp_819_to_285, cp_285_to_819 }, >+ { "819/297", cp_819_to_297, cp_297_to_819 }, >+ { "819/500", cp_819_to_500, cp_500_to_819 }, > { "437/1047", cp_437_to_1047, cp_1047_to_437 }, > { "819/1047", cp_819_to_1047, cp_1047_to_819 }, > { "1252/1047", cp_1252_to_1047, cp_1047_to_1252 }, >diff -Naupr hercules-3.05/commadpt.c hercules-20070717/commadpt.c >--- hercules-3.05/commadpt.c 2006-12-30 16:18:26.000000000 +0100 >+++ hercules-20070717/commadpt.c 2008-09-03 13:07:48.000000000 +0200 >@@ -6,9 +6,25 @@ > /* Prime Maintainer : Ivan Warren */ > /*-------------------------------------------------------------------*/ > >-// $Id: commadpt.c,v 1.39 2006/12/08 09:43:18 jj Exp $ >+// $Id: commadpt.c,v 1.44 2008/03/04 01:10:29 ivan Exp $ > // > // $Log: commadpt.c,v $ >+// Revision 1.44 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.43 2008/02/15 22:51:39 rbowler >+// Move Solaris specific definition of INADDR_NONE to hostopts.h >+// >+// Revision 1.42 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// >+// Revision 1.41 2007/12/14 17:48:52 rbowler >+// Enable SENSE ID CCW for 2703,3410,3420 >+// >+// Revision 1.40 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.39 2006/12/08 09:43:18 jj > // Add CVS message log > // >@@ -1610,6 +1626,16 @@ static int commadpt_init_handler (DEVBLK > dev->fd=100; /* Ensures 'close' function called */ > dev->commadpt->devnum=dev->devnum; > >+ /* Initialize the device identifier bytes */ >+ dev->numdevid = sysblk.legacysenseid ? 7 : 0; >+ dev->devid[0] = 0xFF; >+ dev->devid[1] = dev->devtype >> 8; >+ dev->devid[2] = dev->devtype & 0xFF; >+ dev->devid[3] = 0x00; >+ dev->devid[4] = dev->devtype >> 8; >+ dev->devid[5] = dev->devtype & 0xFF; >+ dev->devid[6] = 0x00; >+ > /* Initialize the CA lock */ > initialize_lock(&dev->commadpt->lock); > >@@ -1679,7 +1705,8 @@ static char *commadpt_lnctl_names[]={ > static void commadpt_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- *class = "LINE"; >+ BEGIN_DEVICE_CLASS_QUERY( "LINE", dev, class, buflen, buffer ); >+ > snprintf(buffer,buflen,"%s STA=%s CN=%s, EIB=%s OP=%s", > commadpt_lnctl_names[dev->commadpt->lnctl], > dev->commadpt->enabled?"ENA":"DISA", >@@ -1781,6 +1808,22 @@ BYTE gotdle; /* Write > break; > > /*---------------------------------------------------------------*/ >+ /* SENSE ID */ >+ /*---------------------------------------------------------------*/ >+ case 0xE4: >+ /* Calculate residual byte count */ >+ num = (count < dev->numdevid) ? count : dev->numdevid; >+ *residual = count - num; >+ *more = count < dev->numdevid ? 1 : 0; >+ >+ /* Copy device identifier bytes to channel I/O Buffer */ >+ memcpy (iobuf, dev->devid, num); >+ >+ /* Return unit status */ >+ *unitstat = CSW_CE | CSW_DE; >+ break; >+ >+ /*---------------------------------------------------------------*/ > /* ENABLE */ > /*---------------------------------------------------------------*/ > case 0x27: >diff -Naupr hercules-3.05/con1052c.c hercules-20070717/con1052c.c >--- hercules-3.05/con1052c.c 2007-06-23 18:13:54.000000000 +0200 >+++ hercules-20070717/con1052c.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,12 @@ > /* CON1052.C (c)Copyright Jan Jaeger, 2004-2007 */ > /* Emulated 1052 on hercules console */ > >-// $Id: con1052c.c,v 1.13 2007/06/23 16:13:54 jmaynard Exp $ >+// $Id: con1052c.c,v 1.14 2007/11/21 22:54:14 fish Exp $ > // > // $Log: con1052c.c,v $ >+// Revision 1.14 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.13 2007/06/23 16:13:54 jmaynard > // Fixing two messages out of internationalization by removing redundant > // carriage returns. >@@ -136,7 +139,7 @@ static void > con1052_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- *class = "CON"; >+ BEGIN_DEVICE_CLASS_QUERY( "CON", dev, class, buflen, buffer ); > > snprintf(buffer, buflen, > "*syscons cmdpref(%s)%s", >diff -Naupr hercules-3.05/config.c hercules-20070717/config.c >--- hercules-3.05/config.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/config.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,13 +1,17 @@ > /* CONFIG.C (c) Copyright Jan Jaeger, 2000-2007 */ > /* Device configuration functions */ > >-// $Id: config.c,v 1.199 2007/06/23 00:04:04 ivan Exp $ >+// $Id: config.c,v 1.200 2008/07/08 05:35:49 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* The original configuration builder is now called bldcfg.c */ > /*-------------------------------------------------------------------*/ > > // $Log: config.c,v $ >+// Revision 1.200 2008/07/08 05:35:49 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// > // Revision 1.199 2007/06/23 00:04:04 ivan > // Update copyright notices to include current year (2007) > // >@@ -1008,6 +1012,7 @@ parse_single_devnum__INTERNAL(const char > return 0; > } > >+DLL_EXPORT > int > parse_single_devnum(const char *spec, > U16 *lcss, >diff -Naupr hercules-3.05/config.h.in hercules-20070717/config.h.in >--- hercules-3.05/config.h.in 2007-06-23 16:59:36.000000000 +0200 >+++ hercules-20070717/config.h.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,702 +0,0 @@ >-/* config.h.in. Generated from configure.ac by autoheader. */ >- >-/* Define if hercifc program is to be built */ >-#undef BUILD_HERCIFC >- >-/* Define if your gcc properly supports C99 flexible arrays */ >-#undef C99_FLEXIBLE_ARRAYS >- >-/* Define to enable bzip2 compression in emulated DASDs */ >-#undef CCKD_BZIP2 >- >-/* Define to provide additional information about this build */ >-#undef CUSTOM_BUILD_STRING >- >-/* Define to enable extra debugging code (TRACE/VERIFY/ASSERT macros) */ >-#undef DEBUG >- >-/* Define to 1 if translation of program messages to the user's native >- language is requested. */ >-#undef ENABLE_NLS >- >-/* Define to build interface to external Windows GUI */ >-#undef EXTERNALGUI >- >-/* Define to debug correct fthreads LOCK handling (requires fthreads) */ >-#undef FISH_HANG >- >-/* Define to 1 if you have the `alphasort' function. */ >-#undef HAVE_ALPHASORT >- >-/* Define to 1 if you have the `argz_append' function. */ >-#undef HAVE_ARGZ_APPEND >- >-/* Define to 1 if you have the `argz_create_sep' function. */ >-#undef HAVE_ARGZ_CREATE_SEP >- >-/* Define to 1 if you have the <argz.h> header file. */ >-#undef HAVE_ARGZ_H >- >-/* Define to 1 if you have the `argz_insert' function. */ >-#undef HAVE_ARGZ_INSERT >- >-/* Define to 1 if you have the `argz_next' function. */ >-#undef HAVE_ARGZ_NEXT >- >-/* Define to 1 if you have the `argz_stringify' function. */ >-#undef HAVE_ARGZ_STRINGIFY >- >-/* Define to 1 if you have the <arpa/inet.h> header file. */ >-#undef HAVE_ARPA_INET_H >- >-/* Define to 1 if you have the <assert.h> header file. */ >-#undef HAVE_ASSERT_H >- >-/* Define if your gcc properly supports __attribute__((regparm(n))) */ >-#undef HAVE_ATTR_REGPARM >- >-/* Define to 1 if you have the `bcopy' function. */ >-#undef HAVE_BCOPY >- >-/* Define to 1 if you have the <byteswap.h> header file. */ >-#undef HAVE_BYTESWAP_H >- >-/* Define to 1 if you have the <bzlib.h> header file. */ >-#undef HAVE_BZLIB_H >- >-/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the >- CoreFoundation framework. */ >-#undef HAVE_CFLOCALECOPYCURRENT >- >-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in >- the CoreFoundation framework. */ >-#undef HAVE_CFPREFERENCESCOPYAPPVALUE >- >-/* Define to 1 if you have the `closedir' function. */ >-#undef HAVE_CLOSEDIR >- >-/* Define to 1 if you have the <ctype.h> header file. */ >-#undef HAVE_CTYPE_H >- >-/* Define if the GNU dcgettext() function is already present or preinstalled. >- */ >-#undef HAVE_DCGETTEXT >- >-/* Define to 1 if you have the declaration of `IFNAMSIZ', and to 0 if you >- don't. */ >-#undef HAVE_DECL_IFNAMSIZ >- >-/* Define to 1 if you have the declaration of `LOGIN_NAME_MAX', and to 0 if >- you don't. */ >-#undef HAVE_DECL_LOGIN_NAME_MAX >- >-/* Define to 1 if you have the declaration of `SIGBUS', and to 0 if you don't. >- */ >-#undef HAVE_DECL_SIGBUS >- >-/* Define to 1 if you have the declaration of `SIGPIPE', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIGPIPE >- >-/* Define to 1 if you have the declaration of `SIGUSR1', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIGUSR1 >- >-/* Define to 1 if you have the declaration of `SIGUSR2', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIGUSR2 >- >-/* Define to 1 if you have the declaration of `SIOCADDRT', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIOCADDRT >- >-/* Define to 1 if you have the declaration of `SIOCDELRT', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIOCDELRT >- >-/* Define to 1 if you have the declaration of `SIOCDIFADDR', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIOCDIFADDR >- >-/* Define to 1 if you have the declaration of `SIOCSIFHWADDR', and to 0 if you >- don't. */ >-#undef HAVE_DECL_SIOCSIFHWADDR >- >-/* Define to 1 if you have the declaration of `SIOCSIFNETMASK', and to 0 if >- you don't. */ >-#undef HAVE_DECL_SIOCSIFNETMASK >- >-/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0 >- if you don't. */ >-#undef HAVE_DECL__SC_NPROCESSORS_CONF >- >-/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0 >- if you don't. */ >-#undef HAVE_DECL__SC_NPROCESSORS_ONLN >- >-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. >- */ >-#undef HAVE_DIRENT_H >- >-/* Define if you have the GNU dld library. */ >-#undef HAVE_DLD >- >-/* Define to 1 if you have the <dld.h> header file. */ >-#undef HAVE_DLD_H >- >-/* Define to 1 if you have the `dlerror' function. */ >-#undef HAVE_DLERROR >- >-/* Define to 1 if you have the <dlfcn.h> header file. */ >-#undef HAVE_DLFCN_H >- >-/* Define to 1 if you have the <dl.h> header file. */ >-#undef HAVE_DL_H >- >-/* Define if you have the _dyld_func_lookup function. */ >-#undef HAVE_DYLD >- >-/* Define to 1 if you have the <errno.h> header file. */ >-#undef HAVE_ERRNO_H >- >-/* Define to 1 if the system has the type `error_t'. */ >-#undef HAVE_ERROR_T >- >-/* Define to 1 if you have the `fabsf' function. */ >-#undef HAVE_FABSF >- >-/* Define to 1 if you have the `fabsl' function. */ >-#undef HAVE_FABSL >- >-/* Define to 1 if you have the `fdatasync' function. */ >-#undef HAVE_FDATASYNC >- >-/* Define to 1 if you have the <fenv.h> header file. */ >-#undef HAVE_FENV_H >- >-/* Define to 1 if you have the `fmodl' function. */ >-#undef HAVE_FMODL >- >-/* Define to 1 if you have the `fork' function. */ >-#undef HAVE_FORK >- >-/* Define to 1 if you have the `frexpf' function. */ >-#undef HAVE_FREXPF >- >-/* Define to 1 if you have the `frexpl' function. */ >-#undef HAVE_FREXPL >- >-/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ >-#undef HAVE_FSEEKO >- >-/* Define to 1 if you have the `fsync' function. */ >-#undef HAVE_FSYNC >- >-/* Define to 1 if you have the `ftruncate' function. */ >-#undef HAVE_FTRUNCATE >- >-/* Define to 1 if you have the `geteuid' function. */ >-#undef HAVE_GETEUID >- >-/* Define to 1 if you have the `getlogin' function. */ >-#undef HAVE_GETLOGIN >- >-/* Define to 1 if you have the `getlogin_r' function. */ >-#undef HAVE_GETLOGIN_R >- >-/* Define to 1 if you have the `getopt_long' function. */ >-#undef HAVE_GETOPT_LONG >- >-/* Define to 1 if you have the `getpgrp' function. */ >-#undef HAVE_GETPGRP >- >-/* Define to 1 if you have the `getresuid' function. */ >-#undef HAVE_GETRESUID >- >-/* Define if the GNU gettext() function is already present or preinstalled. */ >-#undef HAVE_GETTEXT >- >-/* Define to 1 if you have the `gettimeofday' function. */ >-#undef HAVE_GETTIMEOFDAY >- >-/* Define to 1 if you have the `getuid' function. */ >-#undef HAVE_GETUID >- >-/* Define to 1 if you have the `iconv' function. */ >-#undef HAVE_ICONV >- >-/* Define to 1 if you have the <iconv.h> header file. */ >-#undef HAVE_ICONV_H >- >-/* Define to 1 if the system has the type `id_t'. */ >-#undef HAVE_ID_T >- >-/* Define to 1 if you have the `index' function. */ >-#undef HAVE_INDEX >- >-/* Define to 1 if you have the `inet_aton' function. */ >-#undef HAVE_INET_ATON >- >-/* Define to 1 if you have the `InitializeCriticalSectionAndSpinCount' >- function. */ >-#undef HAVE_INITIALIZECRITICALSECTIONANDSPINCOUNT >- >-/* Define to 1 if you have the <inttypes.h> header file. */ >-#undef HAVE_INTTYPES_H >- >-/* Define to 1 if the system has the type `in_addr_t'. */ >-#undef HAVE_IN_ADDR_T >- >-/* Define to 1 if you have the `ldexpf' function. */ >-#undef HAVE_LDEXPF >- >-/* Define to 1 if you have the `ldexpl' function. */ >-#undef HAVE_LDEXPL >- >-/* Define to 1 if you have the `dl' library (-ldl). */ >-#undef HAVE_LIBDL >- >-/* Define to 1 if you have the `iconv' library (-liconv). */ >-#undef HAVE_LIBICONV >- >-/* Define to 1 if you have the <libintl.h> header file. */ >-#undef HAVE_LIBINTL_H >- >-/* Define to 1 if you have the `m' library (-lm). */ >-#undef HAVE_LIBM >- >-/* Define to 1 if you have the `msvcrt' library (-lmsvcrt). */ >-#undef HAVE_LIBMSVCRT >- >-/* Define to 1 if you have the `nsl' library (-lnsl). */ >-#undef HAVE_LIBNSL >- >-/* Define to 1 if you have the `resolv' library (-lresolv). */ >-#undef HAVE_LIBRESOLV >- >-/* Define to 1 if you have the `socket' library (-lsocket). */ >-#undef HAVE_LIBSOCKET >- >-/* Define to 1 if you have the `z' library (-lz). */ >-#undef HAVE_LIBZ >- >-/* Define to 1 if you have the <linux/if_tun.h> header file. */ >-#undef HAVE_LINUX_IF_TUN_H >- >-/* Define to 1 if you have the <locale.h> header file. */ >-#undef HAVE_LOCALE_H >- >-/* Define to 1 if you have the <ltdl.h> header file. */ >-#undef HAVE_LTDL_H >- >-/* Define to 1 if you have the <mach-o/dyld.h> header file. */ >-#undef HAVE_MACH_O_DYLD_H >- >-/* Define to 1 if you have the <malloc.h> header file. */ >-#undef HAVE_MALLOC_H >- >-/* Define to 1 if you have the <math.h> header file. */ >-#undef HAVE_MATH_H >- >-/* Define to 1 if you have the `memcpy' function. */ >-#undef HAVE_MEMCPY >- >-/* Define to 1 if you have the `memmove' function. */ >-#undef HAVE_MEMMOVE >- >-/* Define to 1 if you have the <memory.h> header file. */ >-#undef HAVE_MEMORY_H >- >-/* Define to 1 if you have the `memrchr' function. */ >-#undef HAVE_MEMRCHR >- >-/* Define to 1 if you have the `nanosleep' function. */ >-#undef HAVE_NANOSLEEP >- >-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ >-#undef HAVE_NDIR_H >- >-/* Define to 1 if you have the <netdb.h> header file. */ >-#undef HAVE_NETDB_H >- >-/* Define to 1 if you have the <netinet/in.h> header file. */ >-#undef HAVE_NETINET_IN_H >- >-/* Define to 1 if you have the <netinet/tcp.h> header file. */ >-#undef HAVE_NETINET_TCP_H >- >-/* Define to 1 if you have the <net/if.h> header file. */ >-#undef HAVE_NET_IF_H >- >-/* Define to 1 if you have the <net/route.h> header file. */ >-#undef HAVE_NET_ROUTE_H >- >-/* Define to 1 if you have the `opendir' function. */ >-#undef HAVE_OPENDIR >- >-/* Define to 1 if you have the `pipe' function. */ >-#undef HAVE_PIPE >- >-/* Define if libtool can extract symbol lists from object files. */ >-#undef HAVE_PRELOADED_SYMBOLS >- >-/* Define to 1 if you have the <pwd.h> header file. */ >-#undef HAVE_PWD_H >- >-/* Define to 1 if you have the `readdir' function. */ >-#undef HAVE_READDIR >- >-/* Define to 1 if you have the `realpath' function. */ >-#undef HAVE_REALPATH >- >-/* Define to 1 if you have the <regex.h> header file. */ >-#undef HAVE_REGEX_H >- >-/* Define to 1 if you have the `rindex' function. */ >-#undef HAVE_RINDEX >- >-/* Define to 1 if you have the `rint' function. */ >-#undef HAVE_RINT >- >-/* Define to 1 if you have the `scandir' function. */ >-#undef HAVE_SCANDIR >- >-/* Define to 1 if you have the <sched.h> header file. */ >-#undef HAVE_SCHED_H >- >-/* Define to 1 if you have the `sched_yield' function. */ >-#undef HAVE_SCHED_YIELD >- >-/* Define to 1 if you have the `setresuid' function. */ >-#undef HAVE_SETRESUID >- >-/* Define to 1 if you have the `setreuid' function. */ >-#undef HAVE_SETREUID >- >-/* Define if you have the shl_load function. */ >-#undef HAVE_SHL_LOAD >- >-/* Define to 1 if you have the <signal.h> header file. */ >-#undef HAVE_SIGNAL_H >- >-/* Define to 1 if you have the `sleep' function. */ >-#undef HAVE_SLEEP >- >-/* Define to 1 if you have the `socketpair' function. */ >-#undef HAVE_SOCKETPAIR >- >-/* Define to 1 if the system has the type `socklen_t'. */ >-#undef HAVE_SOCKLEN_T >- >-/* Define to 1 if you have the `sqrtl' function. */ >-#undef HAVE_SQRTL >- >-/* Define to 1 if you have the <stdint.h> header file. */ >-#undef HAVE_STDINT_H >- >-/* Define to 1 if you have the <stdio.h> header file. */ >-#undef HAVE_STDIO_H >- >-/* Define to 1 if you have the <stdlib.h> header file. */ >-#undef HAVE_STDLIB_H >- >-/* Define to 1 if you have the `strchr' function. */ >-#undef HAVE_STRCHR >- >-/* Define to 1 if you have the `strcmp' function. */ >-#undef HAVE_STRCMP >- >-/* Define to 1 if you have the `strerror_r' function. */ >-#undef HAVE_STRERROR_R >- >-/* Define to 1 if you have the <strings.h> header file. */ >-#undef HAVE_STRINGS_H >- >-/* Define to 1 if you have the <string.h> header file. */ >-#undef HAVE_STRING_H >- >-/* Define to 1 if you have the `strlcat' function. */ >-#undef HAVE_STRLCAT >- >-/* Define to 1 if you have the `strlcpy' function. */ >-#undef HAVE_STRLCPY >- >-/* Define to 1 if you have the `strrchr' function. */ >-#undef HAVE_STRRCHR >- >-/* Define to 1 if you have the `strsignal' function. */ >-#undef HAVE_STRSIGNAL >- >-/* Define to 1 if you have the `strtok_r' function. */ >-#undef HAVE_STRTOK_R >- >-/* Define to 1 if `s_addr' is member of `struct in_addr'. */ >-#undef HAVE_STRUCT_IN_ADDR_S_ADDR >- >-/* Define to 1 if `sa_sigaction' is member of `struct sigaction'. */ >-#undef HAVE_STRUCT_SIGACTION_SA_SIGACTION >- >-/* Define to 1 if `sin_len' is member of `struct sockaddr_in'. */ >-#undef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN >- >-/* Define to 1 if `tv_nsec' is member of `struct timespec'. */ >-#undef HAVE_STRUCT_TIMESPEC_TV_NSEC >- >-/* Define to 1 if you have the `sysconf' function. */ >-#undef HAVE_SYSCONF >- >-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. >- */ >-#undef HAVE_SYS_DIR_H >- >-/* Define to 1 if you have the <sys/dl.h> header file. */ >-#undef HAVE_SYS_DL_H >- >-/* Define to 1 if you have the <sys/ioctl.h> header file. */ >-#undef HAVE_SYS_IOCTL_H >- >-/* Define to 1 if you have the <sys/mman.h> header file. */ >-#undef HAVE_SYS_MMAN_H >- >-/* Define to 1 if you have the <sys/mount.h> header file. */ >-#undef HAVE_SYS_MOUNT_H >- >-/* Define to 1 if you have the <sys/mtio.h> header file. */ >-#undef HAVE_SYS_MTIO_H >- >-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. >- */ >-#undef HAVE_SYS_NDIR_H >- >-/* Define to 1 if you have the <sys/param.h> header file. */ >-#undef HAVE_SYS_PARAM_H >- >-/* Define to 1 if you have the <sys/resource.h> header file. */ >-#undef HAVE_SYS_RESOURCE_H >- >-/* Define to 1 if you have the `sys_siglist' function. */ >-#undef HAVE_SYS_SIGLIST >- >-/* Define to 1 if you have the <sys/socket.h> header file. */ >-#undef HAVE_SYS_SOCKET_H >- >-/* Define to 1 if you have the <sys/stat.h> header file. */ >-#undef HAVE_SYS_STAT_H >- >-/* Define to 1 if you have the <sys/types.h> header file. */ >-#undef HAVE_SYS_TYPES_H >- >-/* Define to 1 if you have the <sys/uio.h> header file. */ >-#undef HAVE_SYS_UIO_H >- >-/* Define to 1 if you have the <sys/un.h> header file. */ >-#undef HAVE_SYS_UN_H >- >-/* Define to 1 if you have the <sys/utsname.h> header file. */ >-#undef HAVE_SYS_UTSNAME_H >- >-/* Define to 1 if you have the <sys/wait.h> header file. */ >-#undef HAVE_SYS_WAIT_H >- >-/* Define to 1 if you have the <termios.h> header file. */ >-#undef HAVE_TERMIOS_H >- >-/* Define to 1 if you have the <time.h> header file. */ >-#undef HAVE_TIME_H >- >-/* Define to 1 if you have the <unistd.h> header file. */ >-#undef HAVE_UNISTD_H >- >-/* Define to 1 if the system has the type `useconds_t'. */ >-#undef HAVE_USECONDS_T >- >-/* Define to 1 if you have the `usleep' function. */ >-#undef HAVE_USLEEP >- >-/* Define to 1 if the system has the type `u_char'. */ >-#undef HAVE_U_CHAR >- >-/* Define to 1 if the system has the type `u_int'. */ >-#undef HAVE_U_INT >- >-/* Define to 1 if the system has the type `u_int8_t'. */ >-#undef HAVE_U_INT8_T >- >-/* Define to 1 if the system has the type `u_long'. */ >-#undef HAVE_U_LONG >- >-/* Define to 1 if the system has the type `u_short'. */ >-#undef HAVE_U_SHORT >- >-/* Define to 1 if you have the `vsscanf' function. */ >-#undef HAVE_VSSCANF >- >-/* Define to 1 if you have the <zlib.h> header file. */ >-#undef HAVE_ZLIB_H >- >-/* Define to 1 if you have the <\ > header file. */ >-#undef HAVE___ >- >-/* Define to indicate shared libraries are being used */ >-#undef HDL_BUILD_SHARED >- >-/* Define to cause dynamic loader to use libtool instead of dlopen */ >-#undef HDL_USE_LIBTOOL >- >-/* Directory where to find NLS data */ >-#undef HERC_LOCALEDIR >- >-/* Define to enable bzip2 compression in emulated tapes */ >-#undef HET_BZIP2 >- >-/* Define as const if the declaration of iconv() needs const. */ >-#undef ICONV_CONST >- >-/* Define if the OS needs help to load dependent libraries for dlopen(). */ >-#undef LTDL_DLOPEN_DEPLIBS >- >-/* Define to the sub-directory in which libtool stores uninstalled libraries. >- */ >-#undef LTDL_OBJDIR >- >-/* Define to the name of the environment variable that determines the dynamic >- library search path. */ >-#undef LTDL_SHLIBPATH_VAR >- >-/* Define to the extension used for shared libraries, say, ".so". */ >-#undef LTDL_SHLIB_EXT >- >-/* Define to the system default library search path. */ >-#undef LTDL_SYSSEARCHPATH >- >-/* Defines the maximum number of emulated CPU engines */ >-#undef MAX_CPU_ENGINES >- >-/* Directory where HERCULES modules are installed */ >-#undef MODULESDIR >- >-/* Define to indicate optreset exists */ >-#undef NEED_GETOPT_OPTRESET >- >-/* Define to indicate a wrapper for getopt is needed */ >-#undef NEED_GETOPT_WRAPPER >- >-/* Define if dlsym() requires a leading underscore in symbol names. */ >-#undef NEED_USCORE >- >-/* Define if 'gettimeofday' returns non-unique values */ >-#undef NON_UNIQUE_GETTIMEOFDAY >- >-/* Define to disable assembler routines for byte swapping */ >-#undef NO_ASM_BYTESWAP >- >-/* Define to disable IEEE floating point support */ >-#undef NO_IEEE_SUPPORT >- >-/* Define to disable setuid operation */ >-#undef NO_SETUID >- >-/* Define to disable sigabend_handler (please describe this better) */ >-#undef NO_SIGABEND_HANDLER >- >-/* Define to enable symbolic substitutions in configuration file */ >-#undef OPTION_CONFIG_SYMBOLS >- >-/* Define to enable Hercules Dynamic Loader feature */ >-#undef OPTION_DYNAMIC_LOAD >- >-/* Define to enable enhanced-mode 'include' file support in configuration file >- */ >-#undef OPTION_ENHANCED_CONFIG_INCLUDE >- >-/* Define to enable enhanced-mode symbolic substitutions in configuration file >- */ >-#undef OPTION_ENHANCED_CONFIG_SYMBOLS >- >-/* Define to use included threads implementation (fthreads) */ >-#undef OPTION_FTHREADS >- >-/* Define to enable Hercules Automatic Operator feature */ >-#undef OPTION_HAO >- >-/* Name of package */ >-#undef PACKAGE >- >-/* Define to the address where bug reports for this package should be sent. */ >-#undef PACKAGE_BUGREPORT >- >-/* Define to the full name of this package. */ >-#undef PACKAGE_NAME >- >-/* Define to the full name and version of this package. */ >-#undef PACKAGE_STRING >- >-/* Define to the one symbol short name of this package. */ >-#undef PACKAGE_TARNAME >- >-/* Define to the version of this package. */ >-#undef PACKAGE_VERSION >- >-/* Directory where the HTTP server will find documents */ >-#undef PKGDATADIR >- >-/* The size of a `int', as computed by sizeof. */ >-#undef SIZEOF_INT >- >-/* The size of a `int *', as computed by sizeof. */ >-#undef SIZEOF_INT_P >- >-/* The size of a `long', as computed by sizeof. */ >-#undef SIZEOF_LONG >- >-/* The size of a `off_t', as computed by sizeof. */ >-#undef SIZEOF_OFF_T >- >-/* The size of a `size_t', as computed by sizeof. */ >-#undef SIZEOF_SIZE_T >- >-/* The size of a `struct bytestruct', as computed by sizeof. */ >-#undef SIZEOF_STRUCT_BYTESTRUCT >- >-/* Define to 1 if you have the ANSI C header files. */ >-#undef STDC_HEADERS >- >-/* Define if 'struct timespec' defined in <sys/types.h> */ >-#undef TIMESPEC_IN_SYS_TYPES_H >- >-/* Define if 'struct timespec' defined in <time.h> */ >-#undef TIMESPEC_IN_TIME_H >- >-/* Version number of package */ >-#undef VERSION >- >-/* Define when building under Win32 (MinGW or Cygwin) */ >-#undef WIN32 >- >-/* Define to 1 if your processor stores words with the most significant byte >- first (like Motorola and SPARC, unlike Intel and VAX). */ >-#undef WORDS_BIGENDIAN >- >-/* Define missing macro on apple darwin (osx) platform */ >-#undef _BSD_SOCKLEN_T_ >- >-/* Number of bits in a file offset, on hosts where this is settable. */ >-#undef _FILE_OFFSET_BITS >- >-/* Define to 1 if non-Intel architecture (gettext) */ >-#undef _INTL_REDIRECT_MACROS >- >-/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ >-#undef _LARGEFILE_SOURCE >- >-/* Define for large files, on AIX-style hosts. */ >-#undef _LARGE_FILES >- >-/* Define to empty if `const' does not conform to ANSI C. */ >-#undef const >- >-/* Define to a type to use for `error_t' if it is not otherwise available. */ >-#undef error_t >- >-/* Define to `long' if <sys/types.h> does not define. */ >-#undef off_t >diff -Naupr hercules-3.05/configure hercules-20070717/configure >--- hercules-3.05/configure 2007-06-23 16:59:42.000000000 +0200 >+++ hercules-20070717/configure 1970-01-01 01:00:00.000000000 +0100 >@@ -1,45367 +0,0 @@ >-#! /bin/sh >-# From configure.ac Revision: 1.192 . >-# Guess values for system-dependent variables and create Makefiles. >-# Generated by GNU Autoconf 2.59. >-# >-# Copyright (C) 2003 Free Software Foundation, Inc. >-# This configure script is free software; the Free Software Foundation >-# gives unlimited permission to copy, distribute and modify it. >-## --------------------- ## >-## M4sh Initialization. ## >-## --------------------- ## >- >-# Be Bourne compatible >-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then >- emulate sh >- NULLCMD=: >- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which >- # is contrary to our usage. Disable this feature. >- alias -g '${1+"$@"}'='"$@"' >-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then >- set -o posix >-fi >-DUALCASE=1; export DUALCASE # for MKS sh >- >-# Support unset when possible. >-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then >- as_unset=unset >-else >- as_unset=false >-fi >- >- >-# Work around bugs in pre-3.0 UWIN ksh. >-$as_unset ENV MAIL MAILPATH >-PS1='$ ' >-PS2='> ' >-PS4='+ ' >- >-# NLS nuisances. >-for as_var in \ >- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ >- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ >- LC_TELEPHONE LC_TIME >-do >- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then >- eval $as_var=C; export $as_var >- else >- $as_unset $as_var >- fi >-done >- >-# Required to use basename. >-if expr a : '\(a\)' >/dev/null 2>&1; then >- as_expr=expr >-else >- as_expr=false >-fi >- >-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then >- as_basename=basename >-else >- as_basename=false >-fi >- >- >-# Name of the executable. >-as_me=`$as_basename "$0" || >-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ >- X"$0" : 'X\(//\)$' \| \ >- X"$0" : 'X\(/\)$' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X/"$0" | >- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } >- /^X\/\(\/\/\)$/{ s//\1/; q; } >- /^X\/\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- >- >-# PATH needs CR, and LINENO needs CR and PATH. >-# Avoid depending upon Character Ranges. >-as_cr_letters='abcdefghijklmnopqrstuvwxyz' >-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' >-as_cr_Letters=$as_cr_letters$as_cr_LETTERS >-as_cr_digits='0123456789' >-as_cr_alnum=$as_cr_Letters$as_cr_digits >- >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >- else >- PATH_SEPARATOR=: >- fi >- rm -f conf$$.sh >-fi >- >- >- as_lineno_1=$LINENO >- as_lineno_2=$LINENO >- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` >- test "x$as_lineno_1" != "x$as_lineno_2" && >- test "x$as_lineno_3" = "x$as_lineno_2" || { >- # Find who we are. Look in the path if we contain no path at all >- # relative or not. >- case $0 in >- *[\\/]* ) as_myself=$0 ;; >- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break >-done >- >- ;; >- esac >- # We did not find ourselves, most probably we were run as `sh COMMAND' >- # in which case we are not to be found in the path. >- if test "x$as_myself" = x; then >- as_myself=$0 >- fi >- if test ! -f "$as_myself"; then >- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 >- { (exit 1); exit 1; }; } >- fi >- case $CONFIG_SHELL in >- '') >- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for as_base in sh bash ksh sh5; do >- case $as_dir in >- /*) >- if ("$as_dir/$as_base" -c ' >- as_lineno_1=$LINENO >- as_lineno_2=$LINENO >- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` >- test "x$as_lineno_1" != "x$as_lineno_2" && >- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then >- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } >- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } >- CONFIG_SHELL=$as_dir/$as_base >- export CONFIG_SHELL >- exec "$CONFIG_SHELL" "$0" ${1+"$@"} >- fi;; >- esac >- done >-done >-;; >- esac >- >- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO >- # uniformly replaced by the line number. The first 'sed' inserts a >- # line-number line before each line; the second 'sed' does the real >- # work. The second script uses 'N' to pair each line-number line >- # with the numbered line, and appends trailing '-' during >- # substitution so that $LINENO is not a special case at line end. >- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the >- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) >- sed '=' <$as_myself | >- sed ' >- N >- s,$,-, >- : loop >- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, >- t loop >- s,-$,, >- s,^['$as_cr_digits']*\n,, >- ' >$as_me.lineno && >- chmod +x $as_me.lineno || >- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 >- { (exit 1); exit 1; }; } >- >- # Don't try to exec as it changes $[0], causing all sort of problems >- # (the dirname of $[0] is not the place where we might find the >- # original and so on. Autoconf is especially sensible to this). >- . ./$as_me.lineno >- # Exit status is that of the last command. >- exit >-} >- >- >-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in >- *c*,-n*) ECHO_N= ECHO_C=' >-' ECHO_T=' ' ;; >- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; >- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; >-esac >- >-if expr a : '\(a\)' >/dev/null 2>&1; then >- as_expr=expr >-else >- as_expr=false >-fi >- >-rm -f conf$$ conf$$.exe conf$$.file >-echo >conf$$.file >-if ln -s conf$$.file conf$$ 2>/dev/null; then >- # We could just check for DJGPP; but this test a) works b) is more generic >- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). >- if test -f conf$$.exe; then >- # Don't use ln at all; we don't have any links >- as_ln_s='cp -p' >- else >- as_ln_s='ln -s' >- fi >-elif ln conf$$.file conf$$ 2>/dev/null; then >- as_ln_s=ln >-else >- as_ln_s='cp -p' >-fi >-rm -f conf$$ conf$$.exe conf$$.file >- >-if mkdir -p . 2>/dev/null; then >- as_mkdir_p=: >-else >- test -d ./-p && rmdir ./-p >- as_mkdir_p=false >-fi >- >-as_executable_p="test -f" >- >-# Sed expression to map a string onto a valid CPP name. >-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" >- >-# Sed expression to map a string onto a valid variable name. >-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" >- >- >-# IFS >-# We need space, tab and new line, in precisely that order. >-as_nl=' >-' >-IFS=" $as_nl" >- >-# CDPATH. >-$as_unset CDPATH >- >- >- >-# Check that we are running under the correct shell. >-SHELL=${CONFIG_SHELL-/bin/sh} >- >-case X$ECHO in >-X*--fallback-echo) >- # Remove one level of quotation (which was required for Make). >- ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` >- ;; >-esac >- >-echo=${ECHO-echo} >-if test "X$1" = X--no-reexec; then >- # Discard the --no-reexec flag, and continue. >- shift >-elif test "X$1" = X--fallback-echo; then >- # Avoid inline document here, it may be left over >- : >-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then >- # Yippee, $echo works! >- : >-else >- # Restart under the correct shell. >- exec $SHELL "$0" --no-reexec ${1+"$@"} >-fi >- >-if test "X$1" = X--fallback-echo; then >- # used as fallback echo >- shift >- cat <<EOF >-$* >-EOF >- exit 0 >-fi >- >-# The HP-UX ksh and POSIX shell print the target directory to stdout >-# if CDPATH is set. >-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi >- >-if test -z "$ECHO"; then >-if test "X${echo_test_string+set}" != Xset; then >-# find a string as large as possible, as long as the shell can cope with it >- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do >- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... >- if (echo_test_string="`eval $cmd`") 2>/dev/null && >- echo_test_string="`eval $cmd`" && >- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null >- then >- break >- fi >- done >-fi >- >-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && >- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && >- test "X$echo_testing_string" = "X$echo_test_string"; then >- : >-else >- # The Solaris, AIX, and Digital Unix default echo programs unquote >- # backslashes. This makes it impossible to quote backslashes using >- # echo "$something" | sed 's/\\/\\\\/g' >- # >- # So, first we look for a working echo in the user's PATH. >- >- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR >- for dir in $PATH /usr/ucb; do >- IFS="$lt_save_ifs" >- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && >- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && >- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && >- test "X$echo_testing_string" = "X$echo_test_string"; then >- echo="$dir/echo" >- break >- fi >- done >- IFS="$lt_save_ifs" >- >- if test "X$echo" = Xecho; then >- # We didn't find a better echo, so look for alternatives. >- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && >- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && >- test "X$echo_testing_string" = "X$echo_test_string"; then >- # This shell has a builtin print -r that does the trick. >- echo='print -r' >- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && >- test "X$CONFIG_SHELL" != X/bin/ksh; then >- # If we have ksh, try running configure again with it. >- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} >- export ORIGINAL_CONFIG_SHELL >- CONFIG_SHELL=/bin/ksh >- export CONFIG_SHELL >- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} >- else >- # Try using printf. >- echo='printf %s\n' >- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && >- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && >- test "X$echo_testing_string" = "X$echo_test_string"; then >- # Cool, printf works >- : >- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && >- test "X$echo_testing_string" = 'X\t' && >- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && >- test "X$echo_testing_string" = "X$echo_test_string"; then >- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL >- export CONFIG_SHELL >- SHELL="$CONFIG_SHELL" >- export SHELL >- echo="$CONFIG_SHELL $0 --fallback-echo" >- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && >- test "X$echo_testing_string" = 'X\t' && >- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && >- test "X$echo_testing_string" = "X$echo_test_string"; then >- echo="$CONFIG_SHELL $0 --fallback-echo" >- else >- # maybe with a smaller string... >- prev=: >- >- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do >- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null >- then >- break >- fi >- prev="$cmd" >- done >- >- if test "$prev" != 'sed 50q "$0"'; then >- echo_test_string=`eval $prev` >- export echo_test_string >- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} >- else >- # Oops. We lost completely, so just stick with echo. >- echo=echo >- fi >- fi >- fi >- fi >-fi >-fi >- >-# Copy echo and quote the copy suitably for passing to libtool from >-# the Makefile, instead of quoting the original, which is used later. >-ECHO=$echo >-if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then >- ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" >-fi >- >- >- >- >-tagnames=${tagnames+${tagnames},}CXX >- >-tagnames=${tagnames+${tagnames},}F77 >- >-# Name of the host. >-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, >-# so uname gets run too. >-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` >- >-exec 6>&1 >- >-# >-# Initializations. >-# >-ac_default_prefix=/usr/local >-ac_config_libobj_dir=. >-cross_compiling=no >-subdirs= >-MFLAGS= >-MAKEFLAGS= >-SHELL=${CONFIG_SHELL-/bin/sh} >- >-# Maximum number of lines to put in a shell here document. >-# This variable seems obsolete. It should probably be removed, and >-# only ac_max_sed_lines should be used. >-: ${ac_max_here_lines=38} >- >-# Identity of this package. >-PACKAGE_NAME= >-PACKAGE_TARNAME= >-PACKAGE_VERSION= >-PACKAGE_STRING= >-PACKAGE_BUGREPORT= >- >-ac_unique_file="hercules.h" >-# Factoring default headers for most tests. >-ac_includes_default="\ >-#include <stdio.h> >-#if HAVE_SYS_TYPES_H >-# include <sys/types.h> >-#endif >-#if HAVE_SYS_STAT_H >-# include <sys/stat.h> >-#endif >-#if STDC_HEADERS >-# include <stdlib.h> >-# include <stddef.h> >-#else >-# if HAVE_STDLIB_H >-# include <stdlib.h> >-# endif >-#endif >-#if HAVE_STRING_H >-# if !STDC_HEADERS && HAVE_MEMORY_H >-# include <memory.h> >-# endif >-# include <string.h> >-#endif >-#if HAVE_STRINGS_H >-# include <strings.h> >-#endif >-#if HAVE_INTTYPES_H >-# include <inttypes.h> >-#else >-# if HAVE_STDINT_H >-# include <stdint.h> >-# endif >-#endif >-#if HAVE_UNISTD_H >-# include <unistd.h> >-#endif" >- >-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE modexecdir EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL INSTALL_LTDL_TRUE INSTALL_LTDL_FALSE CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_FALSE LIBADD_DL LIBTOOL_DEPS MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB OPTION_DYNAMIC_LOAD_TRUE OPTION_DYNAMIC_LOAD_FALSE BUILD_FTHREADS_TRUE BUILD_FTHREADS_FALSE BUILD_FISHHANG_TRUE BUILD_FISHHANG_FALSE BUILD_HERCIFC_TRUE BUILD_HERCIFC_FALSE SETUID_HERCIFC_TRUE SETUID_HERCIFC_FALSE BUILD_SHARED_TRUE BUILD_SHARED_FALSE USE_DLLTOOL_TRUE USE_DLLTOOL_FALSE LIBOBJS LTLIBOBJS' >-ac_subst_files='' >- >-# Initialize some variables set by options. >-ac_init_help= >-ac_init_version=false >-# The variables have the same names as the options, with >-# dashes changed to underlines. >-cache_file=/dev/null >-exec_prefix=NONE >-no_create= >-no_recursion= >-prefix=NONE >-program_prefix=NONE >-program_suffix=NONE >-program_transform_name=s,x,x, >-silent= >-site= >-srcdir= >-verbose= >-x_includes=NONE >-x_libraries=NONE >- >-# Installation directory options. >-# These are left unexpanded so users can "make install exec_prefix=/foo" >-# and all the variables that are supposed to be based on exec_prefix >-# by default will actually change. >-# Use braces instead of parens because sh, perl, etc. also accept them. >-bindir='${exec_prefix}/bin' >-sbindir='${exec_prefix}/sbin' >-libexecdir='${exec_prefix}/libexec' >-datadir='${prefix}/share' >-sysconfdir='${prefix}/etc' >-sharedstatedir='${prefix}/com' >-localstatedir='${prefix}/var' >-libdir='${exec_prefix}/lib' >-includedir='${prefix}/include' >-oldincludedir='/usr/include' >-infodir='${prefix}/info' >-mandir='${prefix}/man' >- >-ac_prev= >-for ac_option >-do >- # If the previous option needs an argument, assign it. >- if test -n "$ac_prev"; then >- eval "$ac_prev=\$ac_option" >- ac_prev= >- continue >- fi >- >- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` >- >- # Accept the important Cygnus configure options, so we can diagnose typos. >- >- case $ac_option in >- >- -bindir | --bindir | --bindi | --bind | --bin | --bi) >- ac_prev=bindir ;; >- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) >- bindir=$ac_optarg ;; >- >- -build | --build | --buil | --bui | --bu) >- ac_prev=build_alias ;; >- -build=* | --build=* | --buil=* | --bui=* | --bu=*) >- build_alias=$ac_optarg ;; >- >- -cache-file | --cache-file | --cache-fil | --cache-fi \ >- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) >- ac_prev=cache_file ;; >- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ >- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) >- cache_file=$ac_optarg ;; >- >- --config-cache | -C) >- cache_file=config.cache ;; >- >- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) >- ac_prev=datadir ;; >- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ >- | --da=*) >- datadir=$ac_optarg ;; >- >- -disable-* | --disable-*) >- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` >- # Reject names that are not valid shell variable names. >- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 >- { (exit 1); exit 1; }; } >- ac_feature=`echo $ac_feature | sed 's/-/_/g'` >- eval "enable_$ac_feature=no" ;; >- >- -enable-* | --enable-*) >- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` >- # Reject names that are not valid shell variable names. >- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 >- { (exit 1); exit 1; }; } >- ac_feature=`echo $ac_feature | sed 's/-/_/g'` >- case $ac_option in >- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; >- *) ac_optarg=yes ;; >- esac >- eval "enable_$ac_feature='$ac_optarg'" ;; >- >- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ >- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ >- | --exec | --exe | --ex) >- ac_prev=exec_prefix ;; >- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ >- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ >- | --exec=* | --exe=* | --ex=*) >- exec_prefix=$ac_optarg ;; >- >- -gas | --gas | --ga | --g) >- # Obsolete; use --with-gas. >- with_gas=yes ;; >- >- -help | --help | --hel | --he | -h) >- ac_init_help=long ;; >- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) >- ac_init_help=recursive ;; >- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) >- ac_init_help=short ;; >- >- -host | --host | --hos | --ho) >- ac_prev=host_alias ;; >- -host=* | --host=* | --hos=* | --ho=*) >- host_alias=$ac_optarg ;; >- >- -includedir | --includedir | --includedi | --included | --include \ >- | --includ | --inclu | --incl | --inc) >- ac_prev=includedir ;; >- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ >- | --includ=* | --inclu=* | --incl=* | --inc=*) >- includedir=$ac_optarg ;; >- >- -infodir | --infodir | --infodi | --infod | --info | --inf) >- ac_prev=infodir ;; >- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) >- infodir=$ac_optarg ;; >- >- -libdir | --libdir | --libdi | --libd) >- ac_prev=libdir ;; >- -libdir=* | --libdir=* | --libdi=* | --libd=*) >- libdir=$ac_optarg ;; >- >- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ >- | --libexe | --libex | --libe) >- ac_prev=libexecdir ;; >- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ >- | --libexe=* | --libex=* | --libe=*) >- libexecdir=$ac_optarg ;; >- >- -localstatedir | --localstatedir | --localstatedi | --localstated \ >- | --localstate | --localstat | --localsta | --localst \ >- | --locals | --local | --loca | --loc | --lo) >- ac_prev=localstatedir ;; >- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ >- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ >- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) >- localstatedir=$ac_optarg ;; >- >- -mandir | --mandir | --mandi | --mand | --man | --ma | --m) >- ac_prev=mandir ;; >- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) >- mandir=$ac_optarg ;; >- >- -nfp | --nfp | --nf) >- # Obsolete; use --without-fp. >- with_fp=no ;; >- >- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ >- | --no-cr | --no-c | -n) >- no_create=yes ;; >- >- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ >- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) >- no_recursion=yes ;; >- >- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ >- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ >- | --oldin | --oldi | --old | --ol | --o) >- ac_prev=oldincludedir ;; >- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ >- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ >- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) >- oldincludedir=$ac_optarg ;; >- >- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) >- ac_prev=prefix ;; >- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) >- prefix=$ac_optarg ;; >- >- -program-prefix | --program-prefix | --program-prefi | --program-pref \ >- | --program-pre | --program-pr | --program-p) >- ac_prev=program_prefix ;; >- -program-prefix=* | --program-prefix=* | --program-prefi=* \ >- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) >- program_prefix=$ac_optarg ;; >- >- -program-suffix | --program-suffix | --program-suffi | --program-suff \ >- | --program-suf | --program-su | --program-s) >- ac_prev=program_suffix ;; >- -program-suffix=* | --program-suffix=* | --program-suffi=* \ >- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) >- program_suffix=$ac_optarg ;; >- >- -program-transform-name | --program-transform-name \ >- | --program-transform-nam | --program-transform-na \ >- | --program-transform-n | --program-transform- \ >- | --program-transform | --program-transfor \ >- | --program-transfo | --program-transf \ >- | --program-trans | --program-tran \ >- | --progr-tra | --program-tr | --program-t) >- ac_prev=program_transform_name ;; >- -program-transform-name=* | --program-transform-name=* \ >- | --program-transform-nam=* | --program-transform-na=* \ >- | --program-transform-n=* | --program-transform-=* \ >- | --program-transform=* | --program-transfor=* \ >- | --program-transfo=* | --program-transf=* \ >- | --program-trans=* | --program-tran=* \ >- | --progr-tra=* | --program-tr=* | --program-t=*) >- program_transform_name=$ac_optarg ;; >- >- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ >- | -silent | --silent | --silen | --sile | --sil) >- silent=yes ;; >- >- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) >- ac_prev=sbindir ;; >- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ >- | --sbi=* | --sb=*) >- sbindir=$ac_optarg ;; >- >- -sharedstatedir | --sharedstatedir | --sharedstatedi \ >- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ >- | --sharedst | --shareds | --shared | --share | --shar \ >- | --sha | --sh) >- ac_prev=sharedstatedir ;; >- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ >- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ >- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ >- | --sha=* | --sh=*) >- sharedstatedir=$ac_optarg ;; >- >- -site | --site | --sit) >- ac_prev=site ;; >- -site=* | --site=* | --sit=*) >- site=$ac_optarg ;; >- >- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) >- ac_prev=srcdir ;; >- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) >- srcdir=$ac_optarg ;; >- >- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ >- | --syscon | --sysco | --sysc | --sys | --sy) >- ac_prev=sysconfdir ;; >- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ >- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) >- sysconfdir=$ac_optarg ;; >- >- -target | --target | --targe | --targ | --tar | --ta | --t) >- ac_prev=target_alias ;; >- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) >- target_alias=$ac_optarg ;; >- >- -v | -verbose | --verbose | --verbos | --verbo | --verb) >- verbose=yes ;; >- >- -version | --version | --versio | --versi | --vers | -V) >- ac_init_version=: ;; >- >- -with-* | --with-*) >- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` >- # Reject names that are not valid shell variable names. >- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid package name: $ac_package" >&2 >- { (exit 1); exit 1; }; } >- ac_package=`echo $ac_package| sed 's/-/_/g'` >- case $ac_option in >- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; >- *) ac_optarg=yes ;; >- esac >- eval "with_$ac_package='$ac_optarg'" ;; >- >- -without-* | --without-*) >- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` >- # Reject names that are not valid shell variable names. >- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid package name: $ac_package" >&2 >- { (exit 1); exit 1; }; } >- ac_package=`echo $ac_package | sed 's/-/_/g'` >- eval "with_$ac_package=no" ;; >- >- --x) >- # Obsolete; use --with-x. >- with_x=yes ;; >- >- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ >- | --x-incl | --x-inc | --x-in | --x-i) >- ac_prev=x_includes ;; >- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ >- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) >- x_includes=$ac_optarg ;; >- >- -x-libraries | --x-libraries | --x-librarie | --x-librari \ >- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) >- ac_prev=x_libraries ;; >- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ >- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) >- x_libraries=$ac_optarg ;; >- >- -*) { echo "$as_me: error: unrecognized option: $ac_option >-Try \`$0 --help' for more information." >&2 >- { (exit 1); exit 1; }; } >- ;; >- >- *=*) >- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` >- # Reject names that are not valid shell variable names. >- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 >- { (exit 1); exit 1; }; } >- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` >- eval "$ac_envvar='$ac_optarg'" >- export $ac_envvar ;; >- >- *) >- # FIXME: should be removed in autoconf 3.0. >- echo "$as_me: WARNING: you should use --build, --host, --target" >&2 >- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && >- echo "$as_me: WARNING: invalid host type: $ac_option" >&2 >- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} >- ;; >- >- esac >-done >- >-if test -n "$ac_prev"; then >- ac_option=--`echo $ac_prev | sed 's/_/-/g'` >- { echo "$as_me: error: missing argument to $ac_option" >&2 >- { (exit 1); exit 1; }; } >-fi >- >-# Be sure to have absolute paths. >-for ac_var in exec_prefix prefix >-do >- eval ac_val=$`echo $ac_var` >- case $ac_val in >- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; >- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 >- { (exit 1); exit 1; }; };; >- esac >-done >- >-# Be sure to have absolute paths. >-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ >- localstatedir libdir includedir oldincludedir infodir mandir >-do >- eval ac_val=$`echo $ac_var` >- case $ac_val in >- [\\/$]* | ?:[\\/]* ) ;; >- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 >- { (exit 1); exit 1; }; };; >- esac >-done >- >-# There might be people who depend on the old broken behavior: `$host' >-# used to hold the argument of --host etc. >-# FIXME: To remove some day. >-build=$build_alias >-host=$host_alias >-target=$target_alias >- >-# FIXME: To remove some day. >-if test "x$host_alias" != x; then >- if test "x$build_alias" = x; then >- cross_compiling=maybe >- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. >- If a cross compiler is detected then cross compile mode will be used." >&2 >- elif test "x$build_alias" != "x$host_alias"; then >- cross_compiling=yes >- fi >-fi >- >-ac_tool_prefix= >-test -n "$host_alias" && ac_tool_prefix=$host_alias- >- >-test "$silent" = yes && exec 6>/dev/null >- >- >-# Find the source files, if location was not specified. >-if test -z "$srcdir"; then >- ac_srcdir_defaulted=yes >- # Try the directory containing this script, then its parent. >- ac_confdir=`(dirname "$0") 2>/dev/null || >-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$0" : 'X\(//\)[^/]' \| \ >- X"$0" : 'X\(//\)$' \| \ >- X"$0" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$0" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- srcdir=$ac_confdir >- if test ! -r $srcdir/$ac_unique_file; then >- srcdir=.. >- fi >-else >- ac_srcdir_defaulted=no >-fi >-if test ! -r $srcdir/$ac_unique_file; then >- if test "$ac_srcdir_defaulted" = yes; then >- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 >- { (exit 1); exit 1; }; } >- else >- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 >- { (exit 1); exit 1; }; } >- fi >-fi >-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || >- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 >- { (exit 1); exit 1; }; } >-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` >-ac_env_build_alias_set=${build_alias+set} >-ac_env_build_alias_value=$build_alias >-ac_cv_env_build_alias_set=${build_alias+set} >-ac_cv_env_build_alias_value=$build_alias >-ac_env_host_alias_set=${host_alias+set} >-ac_env_host_alias_value=$host_alias >-ac_cv_env_host_alias_set=${host_alias+set} >-ac_cv_env_host_alias_value=$host_alias >-ac_env_target_alias_set=${target_alias+set} >-ac_env_target_alias_value=$target_alias >-ac_cv_env_target_alias_set=${target_alias+set} >-ac_cv_env_target_alias_value=$target_alias >-ac_env_CC_set=${CC+set} >-ac_env_CC_value=$CC >-ac_cv_env_CC_set=${CC+set} >-ac_cv_env_CC_value=$CC >-ac_env_CFLAGS_set=${CFLAGS+set} >-ac_env_CFLAGS_value=$CFLAGS >-ac_cv_env_CFLAGS_set=${CFLAGS+set} >-ac_cv_env_CFLAGS_value=$CFLAGS >-ac_env_LDFLAGS_set=${LDFLAGS+set} >-ac_env_LDFLAGS_value=$LDFLAGS >-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} >-ac_cv_env_LDFLAGS_value=$LDFLAGS >-ac_env_CPPFLAGS_set=${CPPFLAGS+set} >-ac_env_CPPFLAGS_value=$CPPFLAGS >-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} >-ac_cv_env_CPPFLAGS_value=$CPPFLAGS >-ac_env_CPP_set=${CPP+set} >-ac_env_CPP_value=$CPP >-ac_cv_env_CPP_set=${CPP+set} >-ac_cv_env_CPP_value=$CPP >-ac_env_CXX_set=${CXX+set} >-ac_env_CXX_value=$CXX >-ac_cv_env_CXX_set=${CXX+set} >-ac_cv_env_CXX_value=$CXX >-ac_env_CXXFLAGS_set=${CXXFLAGS+set} >-ac_env_CXXFLAGS_value=$CXXFLAGS >-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} >-ac_cv_env_CXXFLAGS_value=$CXXFLAGS >-ac_env_CXXCPP_set=${CXXCPP+set} >-ac_env_CXXCPP_value=$CXXCPP >-ac_cv_env_CXXCPP_set=${CXXCPP+set} >-ac_cv_env_CXXCPP_value=$CXXCPP >-ac_env_F77_set=${F77+set} >-ac_env_F77_value=$F77 >-ac_cv_env_F77_set=${F77+set} >-ac_cv_env_F77_value=$F77 >-ac_env_FFLAGS_set=${FFLAGS+set} >-ac_env_FFLAGS_value=$FFLAGS >-ac_cv_env_FFLAGS_set=${FFLAGS+set} >-ac_cv_env_FFLAGS_value=$FFLAGS >- >-# >-# Report the --help message. >-# >-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 this package to adapt to many kinds of systems. >- >-Usage: $0 [OPTION]... [VAR=VALUE]... >- >-To assign environment variables (e.g., CC, CFLAGS...), specify them as >-VAR=VALUE. See below for descriptions of some of the useful variables. >- >-Defaults for the options are specified in brackets. >- >-Configuration: >- -h, --help display this help and exit >- --help=short display options specific to this package >- --help=recursive display the short help of all the included packages >- -V, --version display version information and exit >- -q, --quiet, --silent do not print \`checking...' messages >- --cache-file=FILE cache test results in FILE [disabled] >- -C, --config-cache alias for \`--cache-file=config.cache' >- -n, --no-create do not create output files >- --srcdir=DIR find the sources in DIR [configure dir or \`..'] >- >-_ACEOF >- >- cat <<_ACEOF >-Installation directories: >- --prefix=PREFIX install architecture-independent files in PREFIX >- [$ac_default_prefix] >- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX >- [PREFIX] >- >-By default, \`make install' will install all the files in >-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify >-an installation prefix other than \`$ac_default_prefix' using \`--prefix', >-for instance \`--prefix=\$HOME'. >- >-For better control, use the options below. >- >-Fine tuning of the installation directories: >- --bindir=DIR user executables [EPREFIX/bin] >- --sbindir=DIR system admin executables [EPREFIX/sbin] >- --libexecdir=DIR program executables [EPREFIX/libexec] >- --datadir=DIR read-only architecture-independent data [PREFIX/share] >- --sysconfdir=DIR read-only single-machine data [PREFIX/etc] >- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] >- --localstatedir=DIR modifiable single-machine data [PREFIX/var] >- --libdir=DIR object code libraries [EPREFIX/lib] >- --includedir=DIR C header files [PREFIX/include] >- --oldincludedir=DIR C header files for non-gcc [/usr/include] >- --infodir=DIR info documentation [PREFIX/info] >- --mandir=DIR man documentation [PREFIX/man] >-_ACEOF >- >- cat <<\_ACEOF >- >-Program names: >- --program-prefix=PREFIX prepend PREFIX to installed program names >- --program-suffix=SUFFIX append SUFFIX to installed program names >- --program-transform-name=PROGRAM run sed PROGRAM on installed program names >- >-System types: >- --build=BUILD configure for building on BUILD [guessed] >- --host=HOST cross-compile to build programs to run on HOST [BUILD] >-_ACEOF >-fi >- >-if test -n "$ac_init_help"; then >- >- cat <<\_ACEOF >- >-Optional Features: >- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) >- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] >- --enable-maintainer-mode enable make rules and dependencies not useful >- (and sometimes confusing) to the casual installer >- --disable-dependency-tracking speeds up one-time build >- --enable-dependency-tracking do not reject slow dependency extractors >- --enable-static[=PKGS] >- build static libraries [default=no] >- --enable-shared[=PKGS] >- build shared libraries [default=yes] >- --enable-fast-install[=PKGS] >- optimize for fast installation [default=yes] >- --disable-libtool-lock avoid locking (might break parallel builds) >- --enable-ltdl-install install libltdl >- --disable-nls do not use Native Language Support >- --disable-rpath do not hardcode runtime library paths >- --disable-largefile omit support for large files >- --disable-dynamic-load disable dynamic loader option >- --enable-cckd-bzip2 enable bzip2 compression for emulated dasd >- --enable-het-bzip2 enable bzip2 compression for emulated tapes >- --enable-debug enable debugging (TRACE/VERIFY/ASSERT macros) >- --enable-optimization=yes|no|FLAGS >- enable automatic optimization, or specify flags >- --disable-configsymbols disable symbolic substitutions in configuration file >- --disable-enhanced-configsymbols >- disable enhanced-mode symbolic substitutions in >- configuration file >- --disable-enhanced-configincludes >- disable enhanced-mode 'include' file support in >- configuration file >- --disable-automatic-operator >- disable Hercules Automatic Operator feature >- --disable-external-gui disable external Windows GUI interface >- --disable-fthreads disable use of fish threads instead of posix threads >- --enable-fishhang debug correct lock handling (fthreads only) >- --enable-multi-cpu=yes|no|NUMBER >- enable/disable multi-cpu support (1-32, default 8) >- --enable-custom=STRING provide a custom description for this build >- --enable-setuid-hercifc install hercifc setuid root >- --enable-universal-binary >- build Mac OS X universal binary >- --enable-getoptwrapper force use of the getopt wrapper kludge >- >-Optional Packages: >- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] >- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) >- --with-gnu-ld assume the C compiler uses GNU ld [default=no] >- --with-pic try to use only PIC/non-PIC objects [default=use >- both] >- --with-tags[=TAGS] >- include additional configurations [automatic] >- --with-gnu-ld assume the C compiler uses GNU ld default=no >- --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib >- --without-libiconv-prefix don't search for libiconv in includedir and libdir >- --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib >- --without-libintl-prefix don't search for libintl in includedir and libdir >- >-Some influential environment variables: >- CC C compiler command >- CFLAGS C compiler flags >- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a >- nonstandard directory <lib dir> >- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have >- headers in a nonstandard directory <include dir> >- CPP C preprocessor >- CXX C++ compiler command >- CXXFLAGS C++ compiler flags >- CXXCPP C++ preprocessor >- F77 Fortran 77 compiler command >- FFLAGS Fortran 77 compiler flags >- >-Use these variables to override the choices made by `configure' or to help >-it to find libraries and programs with nonstandard names/locations. >- >-_ACEOF >-fi >- >-if test "$ac_init_help" = "recursive"; then >- # If there are subdirs, report their specific --help. >- ac_popdir=`pwd` >- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue >- test -d $ac_dir || continue >- ac_builddir=. >- >-if test "$ac_dir" != .; then >- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` >- # A "../" for each directory in $ac_dir_suffix. >- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` >-else >- ac_dir_suffix= ac_top_builddir= >-fi >- >-case $srcdir in >- .) # No --srcdir option. We are building in place. >- ac_srcdir=. >- if test -z "$ac_top_builddir"; then >- ac_top_srcdir=. >- else >- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` >- fi ;; >- [\\/]* | ?:[\\/]* ) # Absolute path. >- ac_srcdir=$srcdir$ac_dir_suffix; >- ac_top_srcdir=$srcdir ;; >- *) # Relative path. >- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix >- ac_top_srcdir=$ac_top_builddir$srcdir ;; >-esac >- >-# Do not use `cd foo && pwd` to compute absolute paths, because >-# the directories may not exist. >-case `pwd` in >-.) ac_abs_builddir="$ac_dir";; >-*) >- case "$ac_dir" in >- .) ac_abs_builddir=`pwd`;; >- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; >- *) ac_abs_builddir=`pwd`/"$ac_dir";; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_top_builddir=${ac_top_builddir}.;; >-*) >- case ${ac_top_builddir}. in >- .) ac_abs_top_builddir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; >- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_srcdir=$ac_srcdir;; >-*) >- case $ac_srcdir in >- .) ac_abs_srcdir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; >- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_top_srcdir=$ac_top_srcdir;; >-*) >- case $ac_top_srcdir in >- .) ac_abs_top_srcdir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; >- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; >- esac;; >-esac >- >- cd $ac_dir >- # Check for guested configure; otherwise get Cygnus style configure. >- if test -f $ac_srcdir/configure.gnu; then >- echo >- $SHELL $ac_srcdir/configure.gnu --help=recursive >- elif test -f $ac_srcdir/configure; then >- echo >- $SHELL $ac_srcdir/configure --help=recursive >- elif test -f $ac_srcdir/configure.ac || >- test -f $ac_srcdir/configure.in; then >- echo >- $ac_configure --help >- else >- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 >- fi >- cd $ac_popdir >- done >-fi >- >-test -n "$ac_init_help" && exit 0 >-if $ac_init_version; then >- cat <<\_ACEOF >- >-Copyright (C) 2003 Free Software Foundation, Inc. >-This configure script is free software; the Free Software Foundation >-gives unlimited permission to copy, distribute and modify it. >-_ACEOF >- exit 0 >-fi >-exec 5>config.log >-cat >&5 <<_ACEOF >-This file contains any messages produced by compilers while >-running configure, to aid debugging if configure makes a mistake. >- >-It was created by $as_me, which was >-generated by GNU Autoconf 2.59. Invocation command line was >- >- $ $0 $@ >- >-_ACEOF >-{ >-cat <<_ASUNAME >-## --------- ## >-## Platform. ## >-## --------- ## >- >-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` >-uname -m = `(uname -m) 2>/dev/null || echo unknown` >-uname -r = `(uname -r) 2>/dev/null || echo unknown` >-uname -s = `(uname -s) 2>/dev/null || echo unknown` >-uname -v = `(uname -v) 2>/dev/null || echo unknown` >- >-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` >-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` >- >-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` >-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` >-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` >-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` >-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` >-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` >-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` >- >-_ASUNAME >- >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- echo "PATH: $as_dir" >-done >- >-} >&5 >- >-cat >&5 <<_ACEOF >- >- >-## ----------- ## >-## Core tests. ## >-## ----------- ## >- >-_ACEOF >- >- >-# Keep a trace of the command line. >-# Strip out --no-create and --no-recursion so they do not pile up. >-# Strip out --silent because we don't want to record it for future runs. >-# Also quote any args containing shell meta-characters. >-# Make two passes to allow for proper duplicate-argument suppression. >-ac_configure_args= >-ac_configure_args0= >-ac_configure_args1= >-ac_sep= >-ac_must_keep_next=false >-for ac_pass in 1 2 >-do >- for ac_arg >- do >- case $ac_arg in >- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; >- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ >- | -silent | --silent | --silen | --sile | --sil) >- continue ;; >- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) >- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; >- esac >- case $ac_pass in >- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; >- 2) >- ac_configure_args1="$ac_configure_args1 '$ac_arg'" >- if test $ac_must_keep_next = true; then >- ac_must_keep_next=false # Got value, back to normal. >- else >- case $ac_arg in >- *=* | --config-cache | -C | -disable-* | --disable-* \ >- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ >- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ >- | -with-* | --with-* | -without-* | --without-* | --x) >- case "$ac_configure_args0 " in >- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; >- esac >- ;; >- -* ) ac_must_keep_next=true ;; >- esac >- fi >- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" >- # Get rid of the leading space. >- ac_sep=" " >- ;; >- esac >- done >-done >-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } >-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } >- >-# When interrupted or exit'd, cleanup temporary files, and complete >-# config.log. We remove comments because anyway the quotes in there >-# would cause problems or look ugly. >-# WARNING: Be sure not to use single quotes in there, as some shells, >-# such as our DU 5.0 friend, will then `close' the trap. >-trap 'exit_status=$? >- # Save into config.log some information that might help in debugging. >- { >- echo >- >- cat <<\_ASBOX >-## ---------------- ## >-## Cache variables. ## >-## ---------------- ## >-_ASBOX >- echo >- # The following way of writing the cache mishandles newlines in values, >-{ >- (set) 2>&1 | >- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- sed -n \ >- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" >- ;; >- *) >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} >- echo >- >- cat <<\_ASBOX >-## ----------------- ## >-## Output variables. ## >-## ----------------- ## >-_ASBOX >- echo >- for ac_var in $ac_subst_vars >- do >- eval ac_val=$`echo $ac_var` >- echo "$ac_var='"'"'$ac_val'"'"'" >- done | sort >- echo >- >- if test -n "$ac_subst_files"; then >- cat <<\_ASBOX >-## ------------- ## >-## Output files. ## >-## ------------- ## >-_ASBOX >- echo >- for ac_var in $ac_subst_files >- do >- eval ac_val=$`echo $ac_var` >- echo "$ac_var='"'"'$ac_val'"'"'" >- done | sort >- echo >- fi >- >- if test -s confdefs.h; then >- cat <<\_ASBOX >-## ----------- ## >-## confdefs.h. ## >-## ----------- ## >-_ASBOX >- echo >- sed "/^$/d" confdefs.h | sort >- echo >- fi >- test "$ac_signal" != 0 && >- echo "$as_me: caught signal $ac_signal" >- echo "$as_me: exit $exit_status" >- } >&5 >- rm -f core *.core && >- rm -rf conftest* confdefs* conf$$* $ac_clean_files && >- exit $exit_status >- ' 0 >-for ac_signal in 1 2 13 15; do >- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal >-done >-ac_signal=0 >- >-# confdefs.h avoids OS command line length limits that DEFS can exceed. >-rm -rf conftest* confdefs.h >-# AIX cpp loses on an empty file, so make sure it contains at least a newline. >-echo >confdefs.h >- >-# Predefined preprocessor variables. >- >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_NAME "$PACKAGE_NAME" >-_ACEOF >- >- >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_TARNAME "$PACKAGE_TARNAME" >-_ACEOF >- >- >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_VERSION "$PACKAGE_VERSION" >-_ACEOF >- >- >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_STRING "$PACKAGE_STRING" >-_ACEOF >- >- >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" >-_ACEOF >- >- >-# Let the site file select an alternate cache file if it wants to. >-# Prefer explicitly selected file to automatically selected ones. >-if test -z "$CONFIG_SITE"; then >- if test "x$prefix" != xNONE; then >- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" >- else >- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" >- fi >-fi >-for ac_site_file in $CONFIG_SITE; do >- if test -r "$ac_site_file"; then >- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 >-echo "$as_me: loading site script $ac_site_file" >&6;} >- sed 's/^/| /' "$ac_site_file" >&5 >- . "$ac_site_file" >- fi >-done >- >-if test -r "$cache_file"; then >- # Some versions of bash will fail to source /dev/null (special >- # files actually), so we avoid doing that. >- if test -f "$cache_file"; then >- { echo "$as_me:$LINENO: loading cache $cache_file" >&5 >-echo "$as_me: loading cache $cache_file" >&6;} >- case $cache_file in >- [\\/]* | ?:[\\/]* ) . $cache_file;; >- *) . ./$cache_file;; >- esac >- fi >-else >- { echo "$as_me:$LINENO: creating cache $cache_file" >&5 >-echo "$as_me: creating cache $cache_file" >&6;} >- >$cache_file >-fi >- >-# Check that the precious variables saved in the cache have kept the same >-# value. >-ac_cache_corrupted=false >-for ac_var in `(set) 2>&1 | >- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do >- eval ac_old_set=\$ac_cv_env_${ac_var}_set >- eval ac_new_set=\$ac_env_${ac_var}_set >- eval ac_old_val="\$ac_cv_env_${ac_var}_value" >- eval ac_new_val="\$ac_env_${ac_var}_value" >- case $ac_old_set,$ac_new_set in >- set,) >- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 >-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} >- ac_cache_corrupted=: ;; >- ,set) >- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 >-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} >- ac_cache_corrupted=: ;; >- ,);; >- *) >- if test "x$ac_old_val" != "x$ac_new_val"; then >- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 >-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} >- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 >-echo "$as_me: former value: $ac_old_val" >&2;} >- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 >-echo "$as_me: current value: $ac_new_val" >&2;} >- ac_cache_corrupted=: >- fi;; >- esac >- # Pass precious variables to config.status. >- if test "$ac_new_set" = set; then >- case $ac_new_val in >- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) >- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; >- *) ac_arg=$ac_var=$ac_new_val ;; >- esac >- case " $ac_configure_args " in >- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. >- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; >- esac >- fi >-done >-if $ac_cache_corrupted; then >- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 >-echo "$as_me: error: changes in the environment can compromise the build" >&2;} >- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 >-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- # (package, version, bugreport email, etc) >- # (the version of this configure.ac) >-ac_aux_dir= >-for ac_dir in autoconf $srcdir/autoconf; do >- if test -f $ac_dir/install-sh; then >- ac_aux_dir=$ac_dir >- ac_install_sh="$ac_aux_dir/install-sh -c" >- break >- elif test -f $ac_dir/install.sh; then >- ac_aux_dir=$ac_dir >- ac_install_sh="$ac_aux_dir/install.sh -c" >- break >- elif test -f $ac_dir/shtool; then >- ac_aux_dir=$ac_dir >- ac_install_sh="$ac_aux_dir/shtool install -c" >- break >- fi >-done >-if test -z "$ac_aux_dir"; then >- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in autoconf $srcdir/autoconf" >&5 >-echo "$as_me: error: cannot find install-sh or install.sh in autoconf $srcdir/autoconf" >&2;} >- { (exit 1); exit 1; }; } >-fi >-ac_config_guess="$SHELL $ac_aux_dir/config.guess" >-ac_config_sub="$SHELL $ac_aux_dir/config.sub" >-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. >- # (directory containing auxillary build tools) >-am__api_version="1.9" >-# Find a good install program. We prefer a C program (faster), >-# so one script is as good as another. But avoid the broken or >-# incompatible versions: >-# SysV /etc/install, /usr/sbin/install >-# SunOS /usr/etc/install >-# IRIX /sbin/install >-# AIX /bin/install >-# AmigaOS /C/install, which installs bootblocks on floppy discs >-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag >-# AFS /usr/afsws/bin/install, which mishandles nonexistent args >-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" >-# OS/2's system install, which has a completely different semantic >-# ./install, which can be erroneously created by make from ./install.sh. >-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 >-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 >-if test -z "$INSTALL"; then >-if test "${ac_cv_path_install+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- # Account for people who put trailing slashes in PATH elements. >-case $as_dir/ in >- ./ | .// | /cC/* | \ >- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ >- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ >- /usr/ucb/* ) ;; >- *) >- # OSF1 and SCO ODT 3.0 have their own names for install. >- # Don't use installbsd from OSF since it installs stuff as root >- # by default. >- for ac_prog in ginstall scoinst install; do >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then >- if test $ac_prog = install && >- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then >- # AIX install. It has an incompatible calling convention. >- : >- elif test $ac_prog = install && >- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then >- # program-specific install script used by HP pwplus--don't use. >- : >- else >- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" >- break 3 >- fi >- fi >- done >- done >- ;; >-esac >-done >- >- >-fi >- if test "${ac_cv_path_install+set}" = set; then >- INSTALL=$ac_cv_path_install >- else >- # As a last resort, use the slow shell script. We don't cache a >- # path for INSTALL within a source directory, because that will >- # break other packages using the cache if that directory is >- # removed, or if the path is relative. >- INSTALL=$ac_install_sh >- fi >-fi >-echo "$as_me:$LINENO: result: $INSTALL" >&5 >-echo "${ECHO_T}$INSTALL" >&6 >- >-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. >-# It thinks the first close brace ends the variable substitution. >-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' >- >-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' >- >-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' >- >-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 >-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 >-# Just in case >-sleep 1 >-echo timestamp > conftest.file >-# Do `set' in a subshell so we don't clobber the current shell's >-# arguments. Must try -L first in case configure is actually a >-# symlink; some systems play weird games with the mod time of symlinks >-# (eg FreeBSD returns the mod time of the symlink's containing >-# directory). >-if ( >- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` >- if test "$*" = "X"; then >- # -L didn't work. >- set X `ls -t $srcdir/configure conftest.file` >- fi >- rm -f conftest.file >- if test "$*" != "X $srcdir/configure conftest.file" \ >- && test "$*" != "X conftest.file $srcdir/configure"; then >- >- # If neither matched, then we have a broken ls. This can happen >- # if, for instance, CONFIG_SHELL is bash and it inherits a >- # broken ls alias from the environment. This has actually >- # happened. Such a system could not be considered "sane". >- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken >-alias in your environment" >&5 >-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken >-alias in your environment" >&2;} >- { (exit 1); exit 1; }; } >- fi >- >- test "$2" = conftest.file >- ) >-then >- # Ok. >- : >-else >- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! >-Check your system clock" >&5 >-echo "$as_me: error: newly created file is older than distributed files! >-Check your system clock" >&2;} >- { (exit 1); exit 1; }; } >-fi >-echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >-test "$program_prefix" != NONE && >- program_transform_name="s,^,$program_prefix,;$program_transform_name" >-# Use a double $ so make ignores it. >-test "$program_suffix" != NONE && >- program_transform_name="s,\$,$program_suffix,;$program_transform_name" >-# Double any \ or $. echo might interpret backslashes. >-# By default was `s,x,x', remove it if useless. >-cat <<\_ACEOF >conftest.sed >-s/[\\$]/&&/g;s/;s,x,x,$// >-_ACEOF >-program_transform_name=`echo $program_transform_name | sed -f conftest.sed` >-rm conftest.sed >- >-# expand $ac_aux_dir to an absolute path >-am_aux_dir=`cd $ac_aux_dir && pwd` >- >-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" >-# Use eval to expand $SHELL >-if eval "$MISSING --run true"; then >- am_missing_run="$MISSING --run " >-else >- am_missing_run= >- { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 >-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} >-fi >- >-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then >- # We used to keeping the `.' as first argument, in order to >- # allow $(mkdir_p) to be used without argument. As in >- # $(mkdir_p) $(somedir) >- # where $(somedir) is conditionally defined. However this is wrong >- # for two reasons: >- # 1. if the package is installed by a user who cannot write `.' >- # make install will fail, >- # 2. the above comment should most certainly read >- # $(mkdir_p) $(DESTDIR)$(somedir) >- # so it does not work when $(somedir) is undefined and >- # $(DESTDIR) is not. >- # To support the latter case, we have to write >- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), >- # so the `.' trick is pointless. >- mkdir_p='mkdir -p --' >-else >- # On NextStep and OpenStep, the `mkdir' command does not >- # recognize any option. It will interpret all options as >- # directories to create, and then abort because `.' already >- # exists. >- for d in ./-p ./--version; >- do >- test -d $d && rmdir $d >- done >- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. >- if test -f "$ac_aux_dir/mkinstalldirs"; then >- mkdir_p='$(mkinstalldirs)' >- else >- mkdir_p='$(install_sh) -d' >- fi >-fi >- >-for ac_prog in gawk mawk nawk awk >-do >- # Extract the first word of "$ac_prog", so it can be a program name with args. >-set dummy $ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_AWK+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$AWK"; then >- ac_cv_prog_AWK="$AWK" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_AWK="$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-AWK=$ac_cv_prog_AWK >-if test -n "$AWK"; then >- echo "$as_me:$LINENO: result: $AWK" >&5 >-echo "${ECHO_T}$AWK" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$AWK" && break >-done >- >-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 >-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 >-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` >-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.make <<\_ACEOF >-all: >- @echo 'ac_maketemp="$(MAKE)"' >-_ACEOF >-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. >-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` >-if test -n "$ac_maketemp"; then >- eval ac_cv_prog_make_${ac_make}_set=yes >-else >- eval ac_cv_prog_make_${ac_make}_set=no >-fi >-rm -f conftest.make >-fi >-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- SET_MAKE= >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- SET_MAKE="MAKE=${MAKE-make}" >-fi >- >-rm -rf .tst 2>/dev/null >-mkdir .tst 2>/dev/null >-if test -d .tst; then >- am__leading_dot=. >-else >- am__leading_dot=_ >-fi >-rmdir .tst 2>/dev/null >- >-# test to see if srcdir already configured >-if test "`cd $srcdir && pwd`" != "`pwd`" && >- test -f $srcdir/config.status; then >- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 >-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-# test whether we have cygpath >-if test -z "$CYGPATH_W"; then >- if (cygpath --version) >/dev/null 2>/dev/null; then >- CYGPATH_W='cygpath -w' >- else >- CYGPATH_W=echo >- fi >-fi >- >- >-# Define the identity of the package. >- PACKAGE=hercules >- VERSION=3.05 >- >- >-cat >>confdefs.h <<_ACEOF >-#define PACKAGE "$PACKAGE" >-_ACEOF >- >- >-cat >>confdefs.h <<_ACEOF >-#define VERSION "$VERSION" >-_ACEOF >- >-# Some tools Automake needs. >- >-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} >- >- >-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} >- >- >-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} >- >- >-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} >- >- >-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} >- >-install_sh=${install_sh-"$am_aux_dir/install-sh"} >- >-# Installed binaries are usually stripped using `strip' when the user >-# run `make install-strip'. However `strip' might not be the right >-# tool to use in cross-compilation environments, therefore Automake >-# will honor the `STRIP' environment variable to overrule this program. >-if test "$cross_compiling" != no; then >- if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. >-set dummy ${ac_tool_prefix}strip; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_STRIP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$STRIP"; then >- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_STRIP="${ac_tool_prefix}strip" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-STRIP=$ac_cv_prog_STRIP >-if test -n "$STRIP"; then >- echo "$as_me:$LINENO: result: $STRIP" >&5 >-echo "${ECHO_T}$STRIP" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_STRIP"; then >- ac_ct_STRIP=$STRIP >- # Extract the first word of "strip", so it can be a program name with args. >-set dummy strip; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_STRIP"; then >- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_STRIP="strip" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" >-fi >-fi >-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP >-if test -n "$ac_ct_STRIP"; then >- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 >-echo "${ECHO_T}$ac_ct_STRIP" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- STRIP=$ac_ct_STRIP >-else >- STRIP="$ac_cv_prog_STRIP" >-fi >- >-fi >-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" >- >-# We need awk for the "check" target. The system "awk" is bad on >-# some platforms. >-# Always define AMTAR for backward compatibility. >- >-AMTAR=${AMTAR-"${am_missing_run}tar"} >- >-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' >- >- >- >- >- # (the version of our software package) >-# Don't forget to change it in makefile-dllmod.msvc, too! >- ac_config_headers="$ac_config_headers config.h" >- # (the file the resulting configure script will produce) >-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 >-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 >- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. >-if test "${enable_maintainer_mode+set}" = set; then >- enableval="$enable_maintainer_mode" >- USE_MAINTAINER_MODE=$enableval >-else >- USE_MAINTAINER_MODE=no >-fi; >- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 >-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 >- >- >-if test $USE_MAINTAINER_MODE = yes; then >- MAINTAINER_MODE_TRUE= >- MAINTAINER_MODE_FALSE='#' >-else >- MAINTAINER_MODE_TRUE='#' >- MAINTAINER_MODE_FALSE= >-fi >- >- MAINT=$MAINTAINER_MODE_TRUE >- >- >-# Make sure we can run config.sub. >-$ac_config_sub sun4 >/dev/null 2>&1 || >- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 >-echo "$as_me: error: cannot run $ac_config_sub" >&2;} >- { (exit 1); exit 1; }; } >- >-echo "$as_me:$LINENO: checking build system type" >&5 >-echo $ECHO_N "checking build system type... $ECHO_C" >&6 >-if test "${ac_cv_build+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_build_alias=$build_alias >-test -z "$ac_cv_build_alias" && >- ac_cv_build_alias=`$ac_config_guess` >-test -z "$ac_cv_build_alias" && >- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 >-echo "$as_me: error: cannot guess build type; you must specify one" >&2;} >- { (exit 1); exit 1; }; } >-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || >- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 >-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} >- { (exit 1); exit 1; }; } >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 >-echo "${ECHO_T}$ac_cv_build" >&6 >-build=$ac_cv_build >-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` >-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` >-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` >- >- >-echo "$as_me:$LINENO: checking host system type" >&5 >-echo $ECHO_N "checking host system type... $ECHO_C" >&6 >-if test "${ac_cv_host+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_host_alias=$host_alias >-test -z "$ac_cv_host_alias" && >- ac_cv_host_alias=$ac_cv_build_alias >-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || >- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 >-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} >- { (exit 1); exit 1; }; } >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 >-echo "${ECHO_T}$ac_cv_host" >&6 >-host=$ac_cv_host >-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` >-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` >-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` >- >- # (sets $host_cpu, $host_vendor, and $host_os) >- >-############################################################################### >-# Programs section... >-############################################################################### >- >-#HC_PROG_CC() # ((( DEPRECATED ))) >-# >-# CFLAGS *MUST* BE SET 1ST - BEFORE CALL AC_PROG_CC OTHERWISE AUTOCONF TRIES TO IMPOSE >-# ITS OWN CHOICES... >-# FIXME : >-# Unfortunatelly, these are gcc flags.. so going to have >-# to find something better... >-# >-CFLAGS="$CFLAGS -W -Wall" >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >-if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. >-set dummy ${ac_tool_prefix}gcc; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$CC"; then >- ac_cv_prog_CC="$CC" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_CC="${ac_tool_prefix}gcc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-CC=$ac_cv_prog_CC >-if test -n "$CC"; then >- echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_CC"; then >- ac_ct_CC=$CC >- # Extract the first word of "gcc", so it can be a program name with args. >-set dummy gcc; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_CC"; then >- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_CC="gcc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-ac_ct_CC=$ac_cv_prog_ac_ct_CC >-if test -n "$ac_ct_CC"; then >- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >-echo "${ECHO_T}$ac_ct_CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- CC=$ac_ct_CC >-else >- CC="$ac_cv_prog_CC" >-fi >- >-if test -z "$CC"; then >- if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. >-set dummy ${ac_tool_prefix}cc; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$CC"; then >- ac_cv_prog_CC="$CC" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_CC="${ac_tool_prefix}cc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-CC=$ac_cv_prog_CC >-if test -n "$CC"; then >- echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_CC"; then >- ac_ct_CC=$CC >- # Extract the first word of "cc", so it can be a program name with args. >-set dummy cc; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_CC"; then >- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_CC="cc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-ac_ct_CC=$ac_cv_prog_ac_ct_CC >-if test -n "$ac_ct_CC"; then >- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >-echo "${ECHO_T}$ac_ct_CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- CC=$ac_ct_CC >-else >- CC="$ac_cv_prog_CC" >-fi >- >-fi >-if test -z "$CC"; then >- # Extract the first word of "cc", so it can be a program name with args. >-set dummy cc; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$CC"; then >- ac_cv_prog_CC="$CC" # Let the user override the test. >-else >- ac_prog_rejected=no >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then >- ac_prog_rejected=yes >- continue >- fi >- ac_cv_prog_CC="cc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-if test $ac_prog_rejected = yes; then >- # We found a bogon in the path, so make sure we never use it. >- set dummy $ac_cv_prog_CC >- shift >- if test $# != 0; then >- # We chose a different compiler from the bogus one. >- # However, it has the same basename, so the bogon will be chosen >- # first if we set CC to just the basename; use the full file name. >- shift >- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" >- fi >-fi >-fi >-fi >-CC=$ac_cv_prog_CC >-if test -n "$CC"; then >- echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$CC"; then >- if test -n "$ac_tool_prefix"; then >- for ac_prog in cl >- do >- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. >-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$CC"; then >- ac_cv_prog_CC="$CC" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_CC="$ac_tool_prefix$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-CC=$ac_cv_prog_CC >-if test -n "$CC"; then >- echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$CC" && break >- done >-fi >-if test -z "$CC"; then >- ac_ct_CC=$CC >- for ac_prog in cl >-do >- # Extract the first word of "$ac_prog", so it can be a program name with args. >-set dummy $ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_CC"; then >- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_CC="$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-ac_ct_CC=$ac_cv_prog_ac_ct_CC >-if test -n "$ac_ct_CC"; then >- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >-echo "${ECHO_T}$ac_ct_CC" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$ac_ct_CC" && break >-done >- >- CC=$ac_ct_CC >-fi >- >-fi >- >- >-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH >-See \`config.log' for more details." >&5 >-echo "$as_me: error: no acceptable C compiler found in \$PATH >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >- >-# Provide some information about the compiler. >-echo "$as_me:$LINENO:" \ >- "checking for C compiler version" >&5 >-ac_compiler=`set X $ac_compile; echo $2` >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 >- (eval $ac_compiler --version </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 >- (eval $ac_compiler -v </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 >- (eval $ac_compiler -V </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-ac_clean_files_save=$ac_clean_files >-ac_clean_files="$ac_clean_files a.out a.exe b.out" >-# Try to create an executable without -o first, disregard a.out. >-# It will help us diagnose broken compilers, and finding out an intuition >-# of exeext. >-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 >-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 >-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` >-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 >- (eval $ac_link_default) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- # Find the output, starting from the most likely. This scheme is >-# not robust to junk in `.', hence go to wildcards (a.*) only as a last >-# resort. >- >-# Be careful to initialize this variable, since it used to be cached. >-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. >-ac_cv_exeext= >-# b.out is created by i960 compilers. >-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out >-do >- test -f "$ac_file" || continue >- case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) >- ;; >- conftest.$ac_ext ) >- # This is the source file. >- ;; >- [ab].out ) >- # We found the default executable, but exeext='' is most >- # certainly right. >- break;; >- *.* ) >- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` >- # FIXME: I believe we export ac_cv_exeext for Libtool, >- # but it would be cool to find out if it's true. Does anybody >- # maintain Libtool? --akim. >- export ac_cv_exeext >- break;; >- * ) >- break;; >- esac >-done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables >-See \`config.log' for more details." >&5 >-echo "$as_me: error: C compiler cannot create executables >-See \`config.log' for more details." >&2;} >- { (exit 77); exit 77; }; } >-fi >- >-ac_exeext=$ac_cv_exeext >-echo "$as_me:$LINENO: result: $ac_file" >&5 >-echo "${ECHO_T}$ac_file" >&6 >- >-# Check the compiler produces executables we can run. If not, either >-# the compiler is broken, or we cross compile. >-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 >-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 >-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 >-# If not cross compiling, check that we can run a simple program. >-if test "$cross_compiling" != yes; then >- if { ac_try='./$ac_file' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- cross_compiling=no >- else >- if test "$cross_compiling" = maybe; then >- cross_compiling=yes >- else >- { { echo "$as_me:$LINENO: error: cannot run C compiled programs. >-If you meant to cross compile, use \`--host'. >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run C compiled programs. >-If you meant to cross compile, use \`--host'. >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >- fi >- fi >-fi >-echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- >-rm -f a.out a.exe conftest$ac_cv_exeext b.out >-ac_clean_files=$ac_clean_files_save >-# Check the compiler produces executables we can run. If not, either >-# the compiler is broken, or we cross compile. >-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 >-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 >-echo "$as_me:$LINENO: result: $cross_compiling" >&5 >-echo "${ECHO_T}$cross_compiling" >&6 >- >-echo "$as_me:$LINENO: checking for suffix of executables" >&5 >-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- # If both `conftest.exe' and `conftest' are `present' (well, observable) >-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will >-# work properly (i.e., refer to `conftest.exe'), while it won't with >-# `rm'. >-for ac_file in conftest.exe conftest conftest.*; do >- test -f "$ac_file" || continue >- case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; >- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` >- export ac_cv_exeext >- break;; >- * ) break;; >- esac >-done >-else >- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-rm -f conftest$ac_cv_exeext >-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 >-echo "${ECHO_T}$ac_cv_exeext" >&6 >- >-rm -f conftest.$ac_ext >-EXEEXT=$ac_cv_exeext >-ac_exeext=$EXEEXT >-echo "$as_me:$LINENO: checking for suffix of object files" >&5 >-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 >-if test "${ac_cv_objext+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.o conftest.obj >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do >- case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; >- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` >- break;; >- esac >-done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute suffix of object files: cannot compile >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-rm -f conftest.$ac_cv_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 >-echo "${ECHO_T}$ac_cv_objext" >&6 >-OBJEXT=$ac_cv_objext >-ac_objext=$OBJEXT >-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 >-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 >-if test "${ac_cv_c_compiler_gnu+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >-#ifndef __GNUC__ >- choke me >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_compiler_gnu=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_compiler_gnu=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-ac_cv_c_compiler_gnu=$ac_compiler_gnu >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 >-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 >-GCC=`test $ac_compiler_gnu = yes && echo yes` >-ac_test_CFLAGS=${CFLAGS+set} >-ac_save_CFLAGS=$CFLAGS >-CFLAGS="-g" >-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 >-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 >-if test "${ac_cv_prog_cc_g+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_prog_cc_g=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_prog_cc_g=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 >-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 >-if test "$ac_test_CFLAGS" = set; then >- CFLAGS=$ac_save_CFLAGS >-elif test $ac_cv_prog_cc_g = yes; then >- if test "$GCC" = yes; then >- CFLAGS="-g -O2" >- else >- CFLAGS="-g" >- fi >-else >- if test "$GCC" = yes; then >- CFLAGS="-O2" >- else >- CFLAGS= >- fi >-fi >-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 >-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 >-if test "${ac_cv_prog_cc_stdc+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_prog_cc_stdc=no >-ac_save_CC=$CC >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdarg.h> >-#include <stdio.h> >-#include <sys/types.h> >-#include <sys/stat.h> >-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ >-struct buf { int x; }; >-FILE * (*rcsopen) (struct buf *, struct stat *, int); >-static char *e (p, i) >- char **p; >- int i; >-{ >- return p[i]; >-} >-static char *f (char * (*g) (char **, int), char **p, ...) >-{ >- char *s; >- va_list v; >- va_start (v,p); >- s = g (p, va_arg (v,int)); >- va_end (v); >- return s; >-} >- >-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has >- function prototypes and stuff, but not '\xHH' hex character constants. >- These don't provoke an error unfortunately, instead are silently treated >- as 'x'. The following induces an error, until -std1 is added to get >- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an >- array size at least. It's necessary to write '\x00'==0 to get something >- that's true only with -std1. */ >-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; >- >-int test (int i, double x); >-struct s1 {int (*f) (int a);}; >-struct s2 {int (*f) (double a);}; >-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); >-int argc; >-char **argv; >-int >-main () >-{ >-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; >- ; >- return 0; >-} >-_ACEOF >-# Don't try gcc -ansi; that turns off useful extensions and >-# breaks some systems' header files. >-# AIX -qlanglvl=ansi >-# Ultrix and OSF/1 -std1 >-# HP-UX 10.20 and later -Ae >-# HP-UX older versions -Aa -D_HPUX_SOURCE >-# SVR4 -Xc -D__EXTENSIONS__ >-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" >-do >- CC="$ac_save_CC $ac_arg" >- rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_prog_cc_stdc=$ac_arg >-break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext >-done >-rm -f conftest.$ac_ext conftest.$ac_objext >-CC=$ac_save_CC >- >-fi >- >-case "x$ac_cv_prog_cc_stdc" in >- x|xno) >- echo "$as_me:$LINENO: result: none needed" >&5 >-echo "${ECHO_T}none needed" >&6 ;; >- *) >- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 >-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 >- CC="$CC $ac_cv_prog_cc_stdc" ;; >-esac >- >-# Some people use a C++ compiler to compile C. Since we use `exit', >-# in C++ we need to declare it. In case someone uses the same compiler >-# for both compiling C and C++ we need to have the C++ compiler decide >-# the declaration of exit, since it's the most demanding environment. >-cat >conftest.$ac_ext <<_ACEOF >-#ifndef __cplusplus >- choke me >-#endif >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- for ac_declaration in \ >- '' \ >- 'extern "C" void std::exit (int) throw (); using std::exit;' \ >- 'extern "C" void std::exit (int); using std::exit;' \ >- 'extern "C" void exit (int) throw ();' \ >- 'extern "C" void exit (int);' \ >- 'void exit (int);' >-do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_declaration >-#include <stdlib.h> >-int >-main () >-{ >-exit (42); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- : >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-continue >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_declaration >-int >-main () >-{ >-exit (42); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-rm -f conftest* >-if test -n "$ac_declaration"; then >- echo '#ifdef __cplusplus' >>confdefs.h >- echo $ac_declaration >>confdefs.h >- echo '#endif' >>confdefs.h >-fi >- >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >-DEPDIR="${am__leading_dot}deps" >- >- ac_config_commands="$ac_config_commands depfiles" >- >- >-am_make=${MAKE-make} >-cat > confinc << 'END' >-am__doit: >- @echo done >-.PHONY: am__doit >-END >-# If we don't find an include directive, just comment out the code. >-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 >-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 >-am__include="#" >-am__quote= >-_am_result=none >-# First try GNU make style include. >-echo "include confinc" > confmf >-# We grep out `Entering directory' and `Leaving directory' >-# messages which can occur if `w' ends up in MAKEFLAGS. >-# In particular we don't look at `^make:' because GNU make might >-# be invoked under some other name (usually "gmake"), in which >-# case it prints its new name instead of `make'. >-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then >- am__include=include >- am__quote= >- _am_result=GNU >-fi >-# Now try BSD make style include. >-if test "$am__include" = "#"; then >- echo '.include "confinc"' > confmf >- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then >- am__include=.include >- am__quote="\"" >- _am_result=BSD >- fi >-fi >- >- >-echo "$as_me:$LINENO: result: $_am_result" >&5 >-echo "${ECHO_T}$_am_result" >&6 >-rm -f confinc confmf >- >-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. >-if test "${enable_dependency_tracking+set}" = set; then >- enableval="$enable_dependency_tracking" >- >-fi; >-if test "x$enable_dependency_tracking" != xno; then >- am_depcomp="$ac_aux_dir/depcomp" >- AMDEPBACKSLASH='\' >-fi >- >- >-if test "x$enable_dependency_tracking" != xno; then >- AMDEP_TRUE= >- AMDEP_FALSE='#' >-else >- AMDEP_TRUE='#' >- AMDEP_FALSE= >-fi >- >- >- >- >-depcc="$CC" am_compiler_list= >- >-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 >-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 >-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then >- # We make a subdir and do the tests there. Otherwise we can end up >- # making bogus files that we don't know about and never remove. For >- # instance it was reported that on HP-UX the gcc test will end up >- # making a dummy file named `D' -- because `-MD' means `put the output >- # in D'. >- mkdir conftest.dir >- # Copy depcomp to subdir because otherwise we won't find it if we're >- # using a relative directory. >- cp "$am_depcomp" conftest.dir >- cd conftest.dir >- # We will build objects and dependencies in a subdirectory because >- # it helps to detect inapplicable dependency modes. For instance >- # both Tru64's cc and ICC support -MD to output dependencies as a >- # side effect of compilation, but ICC will put the dependencies in >- # the current directory while Tru64 will put them in the object >- # directory. >- mkdir sub >- >- am_cv_CC_dependencies_compiler_type=none >- if test "$am_compiler_list" = ""; then >- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` >- fi >- for depmode in $am_compiler_list; do >- # Setup a source with many dependencies, because some compilers >- # like to wrap large dependency lists on column 80 (with \), and >- # we should not choose a depcomp mode which is confused by this. >- # >- # We need to recreate these files for each test, as the compiler may >- # overwrite some of them when testing with obscure command lines. >- # This happens at least with the AIX C compiler. >- : > sub/conftest.c >- for i in 1 2 3 4 5 6; do >- echo '#include "conftst'$i'.h"' >> sub/conftest.c >- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with >- # Solaris 8's {/usr,}/bin/sh. >- touch sub/conftst$i.h >- done >- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf >- >- case $depmode in >- nosideeffect) >- # after this tag, mechanisms are not by side-effect, so they'll >- # only be used when explicitly requested >- if test "x$enable_dependency_tracking" = xyes; then >- continue >- else >- break >- fi >- ;; >- none) break ;; >- esac >- # We check with `-c' and `-o' for the sake of the "dashmstdout" >- # mode. It turns out that the SunPro C++ compiler does not properly >- # handle `-M -o', and we need to detect this. >- if depmode=$depmode \ >- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ >- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ >- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >- >/dev/null 2>conftest.err && >- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && >- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && >- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then >- # icc doesn't choke on unknown options, it will just issue warnings >- # or remarks (even with -Werror). So we grep stderr for any message >- # that says an option was ignored or not supported. >- # When given -MP, icc 7.0 and 7.1 complain thusly: >- # icc: Command line warning: ignoring option '-M'; no argument required >- # The diagnosis changed in icc 8.0: >- # icc: Command line remark: option '-MP' not supported >- if (grep 'ignoring option' conftest.err || >- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else >- am_cv_CC_dependencies_compiler_type=$depmode >- break >- fi >- fi >- done >- >- cd .. >- rm -rf conftest.dir >-else >- am_cv_CC_dependencies_compiler_type=none >-fi >- >-fi >-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 >-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 >-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type >- >- >- >-if >- test "x$enable_dependency_tracking" != xno \ >- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then >- am__fastdepCC_TRUE= >- am__fastdepCC_FALSE='#' >-else >- am__fastdepCC_TRUE='#' >- am__fastdepCC_FALSE= >-fi >- >- # (back to using this again) >- >-# ----------------------------------------------------------------------------- >-# PROGRAMMING NOTE: The below 'AC_SUBST' macro causes AC_OUTPUT to replace >-# all instances of "@xxxxxx@" in input files with the value that the shell >-# variable "xxxxxx" has when AC_OUTPUT is called. Thus, the variable name >-# used ("modexecdir" in our case) *is* significant and cannot be changed >-# unless you change the "@modexecdir@" strings in all of the input files. >-# ----------------------------------------------------------------------------- >- >-modexecdir=${libdir}/${PACKAGE} >- >- >- >-# ----------------------------------------------------------------------------- >-# >-# AC_LIBTOOL_DLOPEN >-# >-# Enable checking for dlopen support. This macro should be used if the >-# package makes use of the '-dlopen' and '-dlpreopen' flags, otherwise >-# libtool will assume that the system does not support dlopening. The >-# macro must be called before AC_PROG_LIBTOOL. >-# >-# ----------------------------------------------------------------------------- >- >- >- # (we need libtool's dlopen support) >- >- >-# ----------------------------------------------------------------------------- >-# >-# AC_LIBTOOL_WIN32_DLL >-# >-# This macro should be used if the package has been ported to build >-# clean dlls on win32 platforms. Usually this means that any library >-# data items are exported with __declspec(dllexport) and imported with >-# __declspec(dllimport). If this macro is not used, libtool will assume >-# that the package libraries are not dll clean and will build only static >-# libraries on win32 hosts. >-# >-# This macro must be called before AC_PROG_LIBTOOL, and provision must >-# be made to pass '-no-undefined' to libtool in link mode from the package >-# Makefile. Naturally, if you pass '-no-undefined', you must ensure that >-# all the library symbols really are defined at link time! >-# >-# ----------------------------------------------------------------------------- >- >- >- # (we need Win32 support in libtool) >- >- >-# ----------------------------------------------------------------------------- >-# See: 'AC_PROG_LIBTOOL' below. >-# ----------------------------------------------------------------------------- >- >-# Check whether --enable-static or --disable-static was given. >-if test "${enable_static+set}" = set; then >- enableval="$enable_static" >- p=${PACKAGE-default} >- case $enableval in >- yes) enable_static=yes ;; >- no) enable_static=no ;; >- *) >- enable_static=no >- # Look at the argument we got. We use all the common list separators. >- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," >- for pkg in $enableval; do >- IFS="$lt_save_ifs" >- if test "X$pkg" = "X$p"; then >- enable_static=yes >- fi >- done >- IFS="$lt_save_ifs" >- ;; >- esac >-else >- enable_static=no >-fi; >- >- # (forces libtool to build shared >- >- # libraries instead of static ones) >-# ----------------------------------------------------------------------------- >-# AC_PROG_LIBTOOL >-# >-# Add support for the '--enable-shared' and '--disable-shared' >-# configure flags. By default, this macro turns on shared libraries >-# if they are available, and also enables static libraries if they >-# don't conflict with the shared libraries. You can modify these >-# defaults by calling either the AC_DISABLE_SHARED or AC_DISABLE_STATIC >-# macros. >-# >-# Hercules REQUIRES shared libraries (i.e. DLLs), so we do indeed use >-# the AC_DISABLE_STATIC macro above. >-# >-# ----------------------------------------------------------------------------- >- >-# Check whether --enable-shared or --disable-shared was given. >-if test "${enable_shared+set}" = set; then >- enableval="$enable_shared" >- p=${PACKAGE-default} >- case $enableval in >- yes) enable_shared=yes ;; >- no) enable_shared=no ;; >- *) >- enable_shared=no >- # Look at the argument we got. We use all the common list separators. >- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," >- for pkg in $enableval; do >- IFS="$lt_save_ifs" >- if test "X$pkg" = "X$p"; then >- enable_shared=yes >- fi >- done >- IFS="$lt_save_ifs" >- ;; >- esac >-else >- enable_shared=yes >-fi; >- >-# Check whether --enable-fast-install or --disable-fast-install was given. >-if test "${enable_fast_install+set}" = set; then >- enableval="$enable_fast_install" >- p=${PACKAGE-default} >- case $enableval in >- yes) enable_fast_install=yes ;; >- no) enable_fast_install=no ;; >- *) >- enable_fast_install=no >- # Look at the argument we got. We use all the common list separators. >- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," >- for pkg in $enableval; do >- IFS="$lt_save_ifs" >- if test "X$pkg" = "X$p"; then >- enable_fast_install=yes >- fi >- done >- IFS="$lt_save_ifs" >- ;; >- esac >-else >- enable_fast_install=yes >-fi; >- >-echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 >-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 >-if test "${lt_cv_path_SED+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # Loop through the user's path and test for sed and gsed. >-# Then use that list of sed's as ones to test for truncation. >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for lt_ac_prog in sed gsed; do >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then >- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" >- fi >- done >- done >-done >-lt_ac_max=0 >-lt_ac_count=0 >-# Add /usr/xpg4/bin/sed as it is typically found on Solaris >-# along with /bin/sed that truncates output. >-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do >- test ! -f $lt_ac_sed && break >- cat /dev/null > conftest.in >- lt_ac_count=0 >- echo $ECHO_N "0123456789$ECHO_C" >conftest.in >- # Check for GNU sed and select it if it is found. >- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then >- lt_cv_path_SED=$lt_ac_sed >- break >- fi >- while true; do >- cat conftest.in conftest.in >conftest.tmp >- mv conftest.tmp conftest.in >- cp conftest.in conftest.nl >- echo >>conftest.nl >- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break >- cmp -s conftest.out conftest.nl || break >- # 10000 chars as input seems more than enough >- test $lt_ac_count -gt 10 && break >- lt_ac_count=`expr $lt_ac_count + 1` >- if test $lt_ac_count -gt $lt_ac_max; then >- lt_ac_max=$lt_ac_count >- lt_cv_path_SED=$lt_ac_sed >- fi >- done >-done >-SED=$lt_cv_path_SED >- >-fi >- >-echo "$as_me:$LINENO: result: $SED" >&5 >-echo "${ECHO_T}$SED" >&6 >- >-echo "$as_me:$LINENO: checking for egrep" >&5 >-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 >-if test "${ac_cv_prog_egrep+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 >- then ac_cv_prog_egrep='grep -E' >- else ac_cv_prog_egrep='egrep' >- fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 >-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 >- EGREP=$ac_cv_prog_egrep >- >- >- >-# Check whether --with-gnu-ld or --without-gnu-ld was given. >-if test "${with_gnu_ld+set}" = set; then >- withval="$with_gnu_ld" >- test "$withval" = no || with_gnu_ld=yes >-else >- with_gnu_ld=no >-fi; >-ac_prog=ld >-if test "$GCC" = yes; then >- # Check if gcc -print-prog-name=ld gives a path. >- echo "$as_me:$LINENO: checking for ld used by $CC" >&5 >-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 >- case $host in >- *-*-mingw*) >- # gcc leaves a trailing carriage return which upsets mingw >- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; >- *) >- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; >- esac >- case $ac_prog in >- # Accept absolute paths. >- [\\/]* | ?:[\\/]*) >- re_direlt='/[^/][^/]*/\.\./' >- # Canonicalize the pathname of ld >- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` >- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do >- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` >- done >- test -z "$LD" && LD="$ac_prog" >- ;; >- "") >- # If it fails, then pretend we aren't using GCC. >- ac_prog=ld >- ;; >- *) >- # If it is relative, then search for the first ld in PATH. >- with_gnu_ld=unknown >- ;; >- esac >-elif test "$with_gnu_ld" = yes; then >- echo "$as_me:$LINENO: checking for GNU ld" >&5 >-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 >-else >- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 >-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 >-fi >-if test "${lt_cv_path_LD+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -z "$LD"; then >- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in $PATH; do >- IFS="$lt_save_ifs" >- test -z "$ac_dir" && ac_dir=. >- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then >- lt_cv_path_LD="$ac_dir/$ac_prog" >- # Check to see if the program is GNU ld. I'd rather use --version, >- # but apparently some GNU ld's only accept -v. >- # Break only if it was the GNU/non-GNU ld that we prefer. >- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in >- *GNU* | *'with BFD'*) >- test "$with_gnu_ld" != no && break >- ;; >- *) >- test "$with_gnu_ld" != yes && break >- ;; >- esac >- fi >- done >- IFS="$lt_save_ifs" >-else >- lt_cv_path_LD="$LD" # Let the user override the test with a path. >-fi >-fi >- >-LD="$lt_cv_path_LD" >-if test -n "$LD"; then >- echo "$as_me:$LINENO: result: $LD" >&5 >-echo "${ECHO_T}$LD" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 >-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} >- { (exit 1); exit 1; }; } >-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 >-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 >-if test "${lt_cv_prog_gnu_ld+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # I'd rather use --version here, but apparently some GNU ld's only accept -v. >-case `$LD -v 2>&1 </dev/null` in >-*GNU* | *'with BFD'*) >- lt_cv_prog_gnu_ld=yes >- ;; >-*) >- lt_cv_prog_gnu_ld=no >- ;; >-esac >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 >-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 >-with_gnu_ld=$lt_cv_prog_gnu_ld >- >- >-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 >-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 >-if test "${lt_cv_ld_reload_flag+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_ld_reload_flag='-r' >-fi >-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 >-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 >-reload_flag=$lt_cv_ld_reload_flag >-case $reload_flag in >-"" | " "*) ;; >-*) reload_flag=" $reload_flag" ;; >-esac >-reload_cmds='$LD$reload_flag -o $output$reload_objs' >- >-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 >-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 >-if test "${lt_cv_path_NM+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$NM"; then >- # Let the user override the test. >- lt_cv_path_NM="$NM" >-else >- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do >- IFS="$lt_save_ifs" >- test -z "$ac_dir" && ac_dir=. >- tmp_nm="$ac_dir/${ac_tool_prefix}nm" >- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then >- # Check to see if the nm accepts a BSD-compat flag. >- # Adding the `sed 1q' prevents false positives on HP-UX, which says: >- # nm: unknown option "B" ignored >- # Tru64's nm complains that /dev/null is an invalid object file >- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in >- */dev/null* | *'Invalid file or object type'*) >- lt_cv_path_NM="$tmp_nm -B" >- break >- ;; >- *) >- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in >- */dev/null*) >- lt_cv_path_NM="$tmp_nm -p" >- break >- ;; >- *) >- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but >- continue # so that we can try to find one that supports BSD flags >- ;; >- esac >- esac >- fi >- done >- IFS="$lt_save_ifs" >- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm >-fi >-fi >-echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 >-echo "${ECHO_T}$lt_cv_path_NM" >&6 >-NM="$lt_cv_path_NM" >- >-echo "$as_me:$LINENO: checking whether ln -s works" >&5 >-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 >-LN_S=$as_ln_s >-if test "$LN_S" = "ln -s"; then >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >-else >- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 >-echo "${ECHO_T}no, using $LN_S" >&6 >-fi >- >-echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 >-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 >-if test "${lt_cv_deplibs_check_method+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_file_magic_cmd='$MAGIC_CMD' >-lt_cv_file_magic_test_file= >-lt_cv_deplibs_check_method='unknown' >-# Need to set the preceding variable on all platforms that support >-# interlibrary dependencies. >-# 'none' -- dependencies not supported. >-# `unknown' -- same as none, but documents that we really don't know. >-# 'pass_all' -- all dependencies passed with no checks. >-# 'test_compile' -- check by making test program. >-# 'file_magic [[regex]]' -- check by looking for files in library path >-# which responds to the $file_magic_cmd with a given extended regex. >-# If you have `file' or equivalent on your system and you're not sure >-# whether `pass_all' will *always* work, you probably want this one. >- >-case $host_os in >-aix4* | aix5*) >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-beos*) >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-bsdi4*) >- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' >- lt_cv_file_magic_cmd='/usr/bin/file -L' >- lt_cv_file_magic_test_file=/shlib/libc.so >- ;; >- >-cygwin* | mingw* | pw32*) >- # win32_libid is a shell function defined in ltmain.sh >- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' >- lt_cv_file_magic_cmd='win32_libid' >- ;; >- >-darwin* | rhapsody*) >- # this will be overwritten by pass_all, but leave it in just in case >- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' >- lt_cv_file_magic_cmd='/usr/bin/file -L' >- case "$host_os" in >- rhapsody* | darwin1.[012]) >- lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System` >- ;; >- *) # Darwin 1.3 on >- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' >- ;; >- esac >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-freebsd* | kfreebsd*-gnu) >- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then >- case $host_cpu in >- i*86 ) >- # Not sure whether the presence of OpenBSD here was a mistake. >- # Let's accept both of them until this is cleared up. >- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' >- lt_cv_file_magic_cmd=/usr/bin/file >- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` >- ;; >- esac >- else >- lt_cv_deplibs_check_method=pass_all >- fi >- ;; >- >-gnu*) >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-hpux10.20* | hpux11*) >- lt_cv_file_magic_cmd=/usr/bin/file >- case "$host_cpu" in >- ia64*) >- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' >- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so >- ;; >- hppa*64*) >- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' >- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl >- ;; >- *) >- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' >- lt_cv_file_magic_test_file=/usr/lib/libc.sl >- ;; >- esac >- ;; >- >-irix5* | irix6* | nonstopux*) >- case $host_os in >- irix5* | nonstopux*) >- # this will be overridden with pass_all, but let us keep it just in case >- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" >- ;; >- *) >- case $LD in >- *-32|*"-32 ") libmagic=32-bit;; >- *-n32|*"-n32 ") libmagic=N32;; >- *-64|*"-64 ") libmagic=64-bit;; >- *) libmagic=never-match;; >- esac >- # this will be overridden with pass_all, but let us keep it just in case >- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" >- ;; >- esac >- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-# This must be Linux ELF. >-linux*) >- case $host_cpu in >- alpha* | hppa* | i*86 | ia64* | m68* | mips* | powerpc* | sparc* | s390* | sh*) >- lt_cv_deplibs_check_method=pass_all ;; >- *) >- # glibc up to 2.1.1 does not perform some relocations on ARM >- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; >- esac >- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` >- ;; >- >-netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then >- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' >- else >- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' >- fi >- ;; >- >-newos6*) >- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' >- lt_cv_file_magic_cmd=/usr/bin/file >- lt_cv_file_magic_test_file=/usr/lib/libnls.so >- ;; >- >-nto-qnx*) >- lt_cv_deplibs_check_method=unknown >- ;; >- >-openbsd*) >- lt_cv_file_magic_cmd=/usr/bin/file >- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' >- else >- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' >- fi >- ;; >- >-osf3* | osf4* | osf5*) >- # this will be overridden with pass_all, but let us keep it just in case >- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' >- lt_cv_file_magic_test_file=/shlib/libc.so >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-sco3.2v5*) >- lt_cv_deplibs_check_method=pass_all >- ;; >- >-solaris*) >- lt_cv_deplibs_check_method=pass_all >- lt_cv_file_magic_test_file=/lib/libc.so >- ;; >- >-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- case $host_vendor in >- motorola) >- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' >- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` >- ;; >- ncr) >- lt_cv_deplibs_check_method=pass_all >- ;; >- sequent) >- lt_cv_file_magic_cmd='/bin/file' >- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' >- ;; >- sni) >- lt_cv_file_magic_cmd='/bin/file' >- lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" >- lt_cv_file_magic_test_file=/lib/libc.so >- ;; >- siemens) >- lt_cv_deplibs_check_method=pass_all >- ;; >- esac >- ;; >- >-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) >- lt_cv_deplibs_check_method=pass_all >- ;; >-esac >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 >-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 >-file_magic_cmd=$lt_cv_file_magic_cmd >-deplibs_check_method=$lt_cv_deplibs_check_method >-test -z "$deplibs_check_method" && deplibs_check_method=unknown >- >- >- >- >-# If no C compiler was specified, use CC. >-LTCC=${LTCC-"$CC"} >- >-# Allow CC to be a program name with arguments. >-compiler=$CC >- >- >-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. >-if test "${enable_libtool_lock+set}" = set; then >- enableval="$enable_libtool_lock" >- >-fi; >-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes >- >-# Some flags need to be propagated to the compiler or linker for good >-# libtool support. >-case $host in >-ia64-*-hpux*) >- # Find out which ABI we are using. >- echo 'int i;' > conftest.$ac_ext >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- case `/usr/bin/file conftest.$ac_objext` in >- *ELF-32*) >- HPUX_IA64_MODE="32" >- ;; >- *ELF-64*) >- HPUX_IA64_MODE="64" >- ;; >- esac >- fi >- rm -rf conftest* >- ;; >-*-*-irix6*) >- # Find out which ABI we are using. >- echo '#line 3815 "configure"' > conftest.$ac_ext >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- if test "$lt_cv_prog_gnu_ld" = yes; then >- case `/usr/bin/file conftest.$ac_objext` in >- *32-bit*) >- LD="${LD-ld} -melf32bsmip" >- ;; >- *N32*) >- LD="${LD-ld} -melf32bmipn32" >- ;; >- *64-bit*) >- LD="${LD-ld} -melf64bmip" >- ;; >- esac >- else >- case `/usr/bin/file conftest.$ac_objext` in >- *32-bit*) >- LD="${LD-ld} -32" >- ;; >- *N32*) >- LD="${LD-ld} -n32" >- ;; >- *64-bit*) >- LD="${LD-ld} -64" >- ;; >- esac >- fi >- fi >- rm -rf conftest* >- ;; >- >-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) >- # Find out which ABI we are using. >- echo 'int i;' > conftest.$ac_ext >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- case "`/usr/bin/file conftest.o`" in >- *32-bit*) >- case $host in >- x86_64-*linux*) >- LD="${LD-ld} -m elf_i386" >- ;; >- ppc64-*linux*|powerpc64-*linux*) >- LD="${LD-ld} -m elf32ppclinux" >- ;; >- s390x-*linux*) >- LD="${LD-ld} -m elf_s390" >- ;; >- sparc64-*linux*) >- LD="${LD-ld} -m elf32_sparc" >- ;; >- esac >- ;; >- *64-bit*) >- case $host in >- x86_64-*linux*) >- LD="${LD-ld} -m elf_x86_64" >- ;; >- ppc*-*linux*|powerpc*-*linux*) >- LD="${LD-ld} -m elf64ppc" >- ;; >- s390*-*linux*) >- LD="${LD-ld} -m elf64_s390" >- ;; >- sparc*-*linux*) >- LD="${LD-ld} -m elf64_sparc" >- ;; >- esac >- ;; >- esac >- fi >- rm -rf conftest* >- ;; >- >-*-*-sco3.2v5*) >- # On SCO OpenServer 5, we need -belf to get full-featured binaries. >- SAVE_CFLAGS="$CFLAGS" >- CFLAGS="$CFLAGS -belf" >- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 >-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 >-if test "${lt_cv_cc_needs_belf+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- lt_cv_cc_needs_belf=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-lt_cv_cc_needs_belf=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 >-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 >- if test x"$lt_cv_cc_needs_belf" != x"yes"; then >- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf >- CFLAGS="$SAVE_CFLAGS" >- fi >- ;; >-*-*-cygwin* | *-*-mingw* | *-*-pw32*) >- if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. >-set dummy ${ac_tool_prefix}dlltool; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_DLLTOOL+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$DLLTOOL"; then >- ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-DLLTOOL=$ac_cv_prog_DLLTOOL >-if test -n "$DLLTOOL"; then >- echo "$as_me:$LINENO: result: $DLLTOOL" >&5 >-echo "${ECHO_T}$DLLTOOL" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_DLLTOOL"; then >- ac_ct_DLLTOOL=$DLLTOOL >- # Extract the first word of "dlltool", so it can be a program name with args. >-set dummy dlltool; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_DLLTOOL"; then >- ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_DLLTOOL="dlltool" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false" >-fi >-fi >-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL >-if test -n "$ac_ct_DLLTOOL"; then >- echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 >-echo "${ECHO_T}$ac_ct_DLLTOOL" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- DLLTOOL=$ac_ct_DLLTOOL >-else >- DLLTOOL="$ac_cv_prog_DLLTOOL" >-fi >- >- if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. >-set dummy ${ac_tool_prefix}as; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_AS+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$AS"; then >- ac_cv_prog_AS="$AS" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_AS="${ac_tool_prefix}as" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-AS=$ac_cv_prog_AS >-if test -n "$AS"; then >- echo "$as_me:$LINENO: result: $AS" >&5 >-echo "${ECHO_T}$AS" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_AS"; then >- ac_ct_AS=$AS >- # Extract the first word of "as", so it can be a program name with args. >-set dummy as; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_AS"; then >- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_AS="as" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false" >-fi >-fi >-ac_ct_AS=$ac_cv_prog_ac_ct_AS >-if test -n "$ac_ct_AS"; then >- echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 >-echo "${ECHO_T}$ac_ct_AS" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- AS=$ac_ct_AS >-else >- AS="$ac_cv_prog_AS" >-fi >- >- if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. >-set dummy ${ac_tool_prefix}objdump; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_OBJDUMP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$OBJDUMP"; then >- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-OBJDUMP=$ac_cv_prog_OBJDUMP >-if test -n "$OBJDUMP"; then >- echo "$as_me:$LINENO: result: $OBJDUMP" >&5 >-echo "${ECHO_T}$OBJDUMP" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_OBJDUMP"; then >- ac_ct_OBJDUMP=$OBJDUMP >- # Extract the first word of "objdump", so it can be a program name with args. >-set dummy objdump; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_OBJDUMP"; then >- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_OBJDUMP="objdump" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" >-fi >-fi >-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP >-if test -n "$ac_ct_OBJDUMP"; then >- echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 >-echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- OBJDUMP=$ac_ct_OBJDUMP >-else >- OBJDUMP="$ac_cv_prog_OBJDUMP" >-fi >- >- ;; >- >-esac >- >-need_locks="$enable_libtool_lock" >- >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 >-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 >-# On Suns, sometimes $CPP names a directory. >-if test -n "$CPP" && test -d "$CPP"; then >- CPP= >-fi >-if test -z "$CPP"; then >- if test "${ac_cv_prog_CPP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # Double quotes because CPP needs to be expanded >- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" >- do >- ac_preproc_ok=false >-for ac_c_preproc_warn_flag in '' yes >-do >- # Use a header file that comes with gcc, so configuring glibc >- # with a fresh cross-compiler works. >- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- # <limits.h> exists even on freestanding compilers. >- # On the NeXT, cc -E runs the code through the compiler's parser, >- # not just through cpp. "Syntax error" is here to catch this case. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- Syntax error >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- : >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Broken: fails on valid input. >-continue >-fi >-rm -f conftest.err conftest.$ac_ext >- >- # OK, works on sane cases. Now check whether non-existent headers >- # can be detected and how. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <ac_nonexistent.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- # Broken: success on invalid input. >-continue >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Passes both tests. >-ac_preproc_ok=: >-break >-fi >-rm -f conftest.err conftest.$ac_ext >- >-done >-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. >-rm -f conftest.err conftest.$ac_ext >-if $ac_preproc_ok; then >- break >-fi >- >- done >- ac_cv_prog_CPP=$CPP >- >-fi >- CPP=$ac_cv_prog_CPP >-else >- ac_cv_prog_CPP=$CPP >-fi >-echo "$as_me:$LINENO: result: $CPP" >&5 >-echo "${ECHO_T}$CPP" >&6 >-ac_preproc_ok=false >-for ac_c_preproc_warn_flag in '' yes >-do >- # Use a header file that comes with gcc, so configuring glibc >- # with a fresh cross-compiler works. >- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- # <limits.h> exists even on freestanding compilers. >- # On the NeXT, cc -E runs the code through the compiler's parser, >- # not just through cpp. "Syntax error" is here to catch this case. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- Syntax error >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- : >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Broken: fails on valid input. >-continue >-fi >-rm -f conftest.err conftest.$ac_ext >- >- # OK, works on sane cases. Now check whether non-existent headers >- # can be detected and how. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <ac_nonexistent.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- # Broken: success on invalid input. >-continue >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Passes both tests. >-ac_preproc_ok=: >-break >-fi >-rm -f conftest.err conftest.$ac_ext >- >-done >-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. >-rm -f conftest.err conftest.$ac_ext >-if $ac_preproc_ok; then >- : >-else >- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check >-See \`config.log' for more details." >&5 >-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- >-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 >-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 >-if test "${ac_cv_header_stdc+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >-#include <stdarg.h> >-#include <string.h> >-#include <float.h> >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_header_stdc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_header_stdc=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- >-if test $ac_cv_header_stdc = yes; then >- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <string.h> >- >-_ACEOF >-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >- $EGREP "memchr" >/dev/null 2>&1; then >- : >-else >- ac_cv_header_stdc=no >-fi >-rm -f conftest* >- >-fi >- >-if test $ac_cv_header_stdc = yes; then >- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >- >-_ACEOF >-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >- $EGREP "free" >/dev/null 2>&1; then >- : >-else >- ac_cv_header_stdc=no >-fi >-rm -f conftest* >- >-fi >- >-if test $ac_cv_header_stdc = yes; then >- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. >- if test "$cross_compiling" = yes; then >- : >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <ctype.h> >-#if ((' ' & 0x0FF) == 0x020) >-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') >-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) >-#else >-# define ISLOWER(c) \ >- (('a' <= (c) && (c) <= 'i') \ >- || ('j' <= (c) && (c) <= 'r') \ >- || ('s' <= (c) && (c) <= 'z')) >-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) >-#endif >- >-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) >-int >-main () >-{ >- int i; >- for (i = 0; i < 256; i++) >- if (XOR (islower (i), ISLOWER (i)) >- || toupper (i) != TOUPPER (i)) >- exit(2); >- exit (0); >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- : >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-ac_cv_header_stdc=no >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 >-echo "${ECHO_T}$ac_cv_header_stdc" >&6 >-if test $ac_cv_header_stdc = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define STDC_HEADERS 1 >-_ACEOF >- >-fi >- >-# On IRIX 5.3, sys/types and inttypes.h are conflicting. >- >- >- >- >- >- >- >- >- >-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ >- inttypes.h stdint.h unistd.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >- >-done >- >- >- >-for ac_header in dlfcn.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >- >-done >- >-ac_ext=cc >-ac_cpp='$CXXCPP $CPPFLAGS' >-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu >-if test -n "$ac_tool_prefix"; then >- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC >- do >- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. >-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_CXX+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$CXX"; then >- ac_cv_prog_CXX="$CXX" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-CXX=$ac_cv_prog_CXX >-if test -n "$CXX"; then >- echo "$as_me:$LINENO: result: $CXX" >&5 >-echo "${ECHO_T}$CXX" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$CXX" && break >- done >-fi >-if test -z "$CXX"; then >- ac_ct_CXX=$CXX >- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC >-do >- # Extract the first word of "$ac_prog", so it can be a program name with args. >-set dummy $ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_CXX"; then >- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_CXX="$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX >-if test -n "$ac_ct_CXX"; then >- echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 >-echo "${ECHO_T}$ac_ct_CXX" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$ac_ct_CXX" && break >-done >-test -n "$ac_ct_CXX" || ac_ct_CXX="g++" >- >- CXX=$ac_ct_CXX >-fi >- >- >-# Provide some information about the compiler. >-echo "$as_me:$LINENO:" \ >- "checking for C++ compiler version" >&5 >-ac_compiler=`set X $ac_compile; echo $2` >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 >- (eval $ac_compiler --version </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 >- (eval $ac_compiler -v </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 >- (eval $ac_compiler -V </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >- >-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 >-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 >-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >-#ifndef __GNUC__ >- choke me >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_compiler_gnu=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_compiler_gnu=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 >-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 >-GXX=`test $ac_compiler_gnu = yes && echo yes` >-ac_test_CXXFLAGS=${CXXFLAGS+set} >-ac_save_CXXFLAGS=$CXXFLAGS >-CXXFLAGS="-g" >-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 >-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 >-if test "${ac_cv_prog_cxx_g+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_prog_cxx_g=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_prog_cxx_g=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 >-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 >-if test "$ac_test_CXXFLAGS" = set; then >- CXXFLAGS=$ac_save_CXXFLAGS >-elif test $ac_cv_prog_cxx_g = yes; then >- if test "$GXX" = yes; then >- CXXFLAGS="-g -O2" >- else >- CXXFLAGS="-g" >- fi >-else >- if test "$GXX" = yes; then >- CXXFLAGS="-O2" >- else >- CXXFLAGS= >- fi >-fi >-for ac_declaration in \ >- '' \ >- 'extern "C" void std::exit (int) throw (); using std::exit;' \ >- 'extern "C" void std::exit (int); using std::exit;' \ >- 'extern "C" void exit (int) throw ();' \ >- 'extern "C" void exit (int);' \ >- 'void exit (int);' >-do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_declaration >-#include <stdlib.h> >-int >-main () >-{ >-exit (42); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- : >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-continue >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_declaration >-int >-main () >-{ >-exit (42); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-rm -f conftest* >-if test -n "$ac_declaration"; then >- echo '#ifdef __cplusplus' >>confdefs.h >- echo $ac_declaration >>confdefs.h >- echo '#endif' >>confdefs.h >-fi >- >-ac_ext=cc >-ac_cpp='$CXXCPP $CPPFLAGS' >-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu >- >-depcc="$CXX" am_compiler_list= >- >-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 >-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 >-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then >- # We make a subdir and do the tests there. Otherwise we can end up >- # making bogus files that we don't know about and never remove. For >- # instance it was reported that on HP-UX the gcc test will end up >- # making a dummy file named `D' -- because `-MD' means `put the output >- # in D'. >- mkdir conftest.dir >- # Copy depcomp to subdir because otherwise we won't find it if we're >- # using a relative directory. >- cp "$am_depcomp" conftest.dir >- cd conftest.dir >- # We will build objects and dependencies in a subdirectory because >- # it helps to detect inapplicable dependency modes. For instance >- # both Tru64's cc and ICC support -MD to output dependencies as a >- # side effect of compilation, but ICC will put the dependencies in >- # the current directory while Tru64 will put them in the object >- # directory. >- mkdir sub >- >- am_cv_CXX_dependencies_compiler_type=none >- if test "$am_compiler_list" = ""; then >- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` >- fi >- for depmode in $am_compiler_list; do >- # Setup a source with many dependencies, because some compilers >- # like to wrap large dependency lists on column 80 (with \), and >- # we should not choose a depcomp mode which is confused by this. >- # >- # We need to recreate these files for each test, as the compiler may >- # overwrite some of them when testing with obscure command lines. >- # This happens at least with the AIX C compiler. >- : > sub/conftest.c >- for i in 1 2 3 4 5 6; do >- echo '#include "conftst'$i'.h"' >> sub/conftest.c >- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with >- # Solaris 8's {/usr,}/bin/sh. >- touch sub/conftst$i.h >- done >- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf >- >- case $depmode in >- nosideeffect) >- # after this tag, mechanisms are not by side-effect, so they'll >- # only be used when explicitly requested >- if test "x$enable_dependency_tracking" = xyes; then >- continue >- else >- break >- fi >- ;; >- none) break ;; >- esac >- # We check with `-c' and `-o' for the sake of the "dashmstdout" >- # mode. It turns out that the SunPro C++ compiler does not properly >- # handle `-M -o', and we need to detect this. >- if depmode=$depmode \ >- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ >- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ >- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >- >/dev/null 2>conftest.err && >- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && >- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && >- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then >- # icc doesn't choke on unknown options, it will just issue warnings >- # or remarks (even with -Werror). So we grep stderr for any message >- # that says an option was ignored or not supported. >- # When given -MP, icc 7.0 and 7.1 complain thusly: >- # icc: Command line warning: ignoring option '-M'; no argument required >- # The diagnosis changed in icc 8.0: >- # icc: Command line remark: option '-MP' not supported >- if (grep 'ignoring option' conftest.err || >- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else >- am_cv_CXX_dependencies_compiler_type=$depmode >- break >- fi >- fi >- done >- >- cd .. >- rm -rf conftest.dir >-else >- am_cv_CXX_dependencies_compiler_type=none >-fi >- >-fi >-echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 >-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 >-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type >- >- >- >-if >- test "x$enable_dependency_tracking" != xno \ >- && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then >- am__fastdepCXX_TRUE= >- am__fastdepCXX_FALSE='#' >-else >- am__fastdepCXX_TRUE='#' >- am__fastdepCXX_FALSE= >-fi >- >- >-ac_ext=cc >-ac_cpp='$CXXCPP $CPPFLAGS' >-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu >-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 >-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 >-if test -z "$CXXCPP"; then >- if test "${ac_cv_prog_CXXCPP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # Double quotes because CXXCPP needs to be expanded >- for CXXCPP in "$CXX -E" "/lib/cpp" >- do >- ac_preproc_ok=false >-for ac_cxx_preproc_warn_flag in '' yes >-do >- # Use a header file that comes with gcc, so configuring glibc >- # with a fresh cross-compiler works. >- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- # <limits.h> exists even on freestanding compilers. >- # On the NeXT, cc -E runs the code through the compiler's parser, >- # not just through cpp. "Syntax error" is here to catch this case. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- Syntax error >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_cxx_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- : >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Broken: fails on valid input. >-continue >-fi >-rm -f conftest.err conftest.$ac_ext >- >- # OK, works on sane cases. Now check whether non-existent headers >- # can be detected and how. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <ac_nonexistent.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_cxx_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- # Broken: success on invalid input. >-continue >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Passes both tests. >-ac_preproc_ok=: >-break >-fi >-rm -f conftest.err conftest.$ac_ext >- >-done >-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. >-rm -f conftest.err conftest.$ac_ext >-if $ac_preproc_ok; then >- break >-fi >- >- done >- ac_cv_prog_CXXCPP=$CXXCPP >- >-fi >- CXXCPP=$ac_cv_prog_CXXCPP >-else >- ac_cv_prog_CXXCPP=$CXXCPP >-fi >-echo "$as_me:$LINENO: result: $CXXCPP" >&5 >-echo "${ECHO_T}$CXXCPP" >&6 >-ac_preproc_ok=false >-for ac_cxx_preproc_warn_flag in '' yes >-do >- # Use a header file that comes with gcc, so configuring glibc >- # with a fresh cross-compiler works. >- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- # <limits.h> exists even on freestanding compilers. >- # On the NeXT, cc -E runs the code through the compiler's parser, >- # not just through cpp. "Syntax error" is here to catch this case. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- Syntax error >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_cxx_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- : >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Broken: fails on valid input. >-continue >-fi >-rm -f conftest.err conftest.$ac_ext >- >- # OK, works on sane cases. Now check whether non-existent headers >- # can be detected and how. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <ac_nonexistent.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_cxx_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- # Broken: success on invalid input. >-continue >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- # Passes both tests. >-ac_preproc_ok=: >-break >-fi >-rm -f conftest.err conftest.$ac_ext >- >-done >-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. >-rm -f conftest.err conftest.$ac_ext >-if $ac_preproc_ok; then >- : >-else >- { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check >-See \`config.log' for more details." >&5 >-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-ac_ext=cc >-ac_cpp='$CXXCPP $CPPFLAGS' >-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu >- >- >-ac_ext=f >-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' >-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_f77_compiler_gnu >-if test -n "$ac_tool_prefix"; then >- for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran >- do >- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. >-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_F77+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$F77"; then >- ac_cv_prog_F77="$F77" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_F77="$ac_tool_prefix$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-F77=$ac_cv_prog_F77 >-if test -n "$F77"; then >- echo "$as_me:$LINENO: result: $F77" >&5 >-echo "${ECHO_T}$F77" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$F77" && break >- done >-fi >-if test -z "$F77"; then >- ac_ct_F77=$F77 >- for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran >-do >- # Extract the first word of "$ac_prog", so it can be a program name with args. >-set dummy $ac_prog; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_F77+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_F77"; then >- ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_F77="$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-ac_ct_F77=$ac_cv_prog_ac_ct_F77 >-if test -n "$ac_ct_F77"; then >- echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 >-echo "${ECHO_T}$ac_ct_F77" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- test -n "$ac_ct_F77" && break >-done >- >- F77=$ac_ct_F77 >-fi >- >- >-# Provide some information about the compiler. >-echo "$as_me:5629:" \ >- "checking for Fortran 77 compiler version" >&5 >-ac_compiler=`set X $ac_compile; echo $2` >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 >- (eval $ac_compiler --version </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 >- (eval $ac_compiler -v </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 >- (eval $ac_compiler -V </dev/null >&5) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >-rm -f a.out >- >-# If we don't use `.F' as extension, the preprocessor is not run on the >-# input file. (Note that this only needs to work for GNU compilers.) >-ac_save_ext=$ac_ext >-ac_ext=F >-echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 >-echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 >-if test "${ac_cv_f77_compiler_gnu+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >- program main >-#ifndef __GNUC__ >- choke me >-#endif >- >- end >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_f77_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_compiler_gnu=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_compiler_gnu=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-ac_cv_f77_compiler_gnu=$ac_compiler_gnu >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 >-echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 >-ac_ext=$ac_save_ext >-ac_test_FFLAGS=${FFLAGS+set} >-ac_save_FFLAGS=$FFLAGS >-FFLAGS= >-echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 >-echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 >-if test "${ac_cv_prog_f77_g+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- FFLAGS=-g >-cat >conftest.$ac_ext <<_ACEOF >- program main >- >- end >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_f77_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_prog_f77_g=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_prog_f77_g=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 >-echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 >-if test "$ac_test_FFLAGS" = set; then >- FFLAGS=$ac_save_FFLAGS >-elif test $ac_cv_prog_f77_g = yes; then >- if test "x$ac_cv_f77_compiler_gnu" = xyes; then >- FFLAGS="-g -O2" >- else >- FFLAGS="-g" >- fi >-else >- if test "x$ac_cv_f77_compiler_gnu" = xyes; then >- FFLAGS="-O2" >- else >- FFLAGS= >- fi >-fi >- >-G77=`test $ac_compiler_gnu = yes && echo yes` >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- >- >-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! >- >-# find the maximum length of command line arguments >-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 >-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 >-if test "${lt_cv_sys_max_cmd_len+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- i=0 >- testring="ABCD" >- >- case $build_os in >- msdosdjgpp*) >- # On DJGPP, this test can blow up pretty badly due to problems in libc >- # (any single argument exceeding 2000 bytes causes a buffer overrun >- # during glob expansion). Even if it were fixed, the result of this >- # check would be larger than it should be. >- lt_cv_sys_max_cmd_len=12288; # 12K is about right >- ;; >- >- gnu*) >- # Under GNU Hurd, this test is not required because there is >- # no limit to the length of command line arguments. >- # Libtool will interpret -1 as no limit whatsoever >- lt_cv_sys_max_cmd_len=-1; >- ;; >- >- cygwin* | mingw*) >- # On Win9x/ME, this test blows up -- it succeeds, but takes >- # about 5 minutes as the teststring grows exponentially. >- # Worse, since 9x/ME are not pre-emptively multitasking, >- # you end up with a "frozen" computer, even though with patience >- # the test eventually succeeds (with a max line length of 256k). >- # Instead, let's just punt: use the minimum linelength reported by >- # all of the supported platforms: 8192 (on NT/2K/XP). >- lt_cv_sys_max_cmd_len=8192; >- ;; >- >- amigaos*) >- # On AmigaOS with pdksh, this test takes hours, literally. >- # So we just punt and use a minimum line length of 8192. >- lt_cv_sys_max_cmd_len=8192; >- ;; >- >- *) >- # If test is not a shell built-in, we'll probably end up computing a >- # maximum length that is only half of the actual maximum length, but >- # we can't tell. >- while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ >- = "XX$testring") >/dev/null 2>&1 && >- new_result=`expr "X$testring" : ".*" 2>&1` && >- lt_cv_sys_max_cmd_len=$new_result && >- test $i != 17 # 1/2 MB should be enough >- do >- i=`expr $i + 1` >- testring=$testring$testring >- done >- testring= >- # Add a significant safety factor because C++ compilers can tack on massive >- # amounts of additional arguments before passing them to the linker. >- # It appears as though 1/2 is a usable value. >- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` >- ;; >- esac >- >-fi >- >-if test -n $lt_cv_sys_max_cmd_len ; then >- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 >-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 >-else >- echo "$as_me:$LINENO: result: none" >&5 >-echo "${ECHO_T}none" >&6 >-fi >- >- >- >- >-# Check for command to grab the raw symbol name followed by C symbol from nm. >-echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 >-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 >-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >-# These are sane defaults that work on at least a few old systems. >-# [They come from Ultrix. What could be older than Ultrix?!! ;)] >- >-# Character class describing NM global symbol codes. >-symcode='[BCDEGRST]' >- >-# Regexp to match symbols that can be accessed directly from C. >-sympat='\([_A-Za-z][_A-Za-z0-9]*\)' >- >-# Transform the above into a raw symbol and a C symbol. >-symxfrm='\1 \2\3 \3' >- >-# Transform an extracted symbol line into a proper C declaration >-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" >- >-# Transform an extracted symbol line into symbol name and symbol address >-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" >- >-# Define system-specific variables. >-case $host_os in >-aix*) >- symcode='[BCDT]' >- ;; >-cygwin* | mingw* | pw32*) >- symcode='[ABCDGISTW]' >- ;; >-hpux*) # Its linker distinguishes data from code symbols >- if test "$host_cpu" = ia64; then >- symcode='[ABCDEGRST]' >- fi >- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" >- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" >- ;; >-irix* | nonstopux*) >- symcode='[BCDEGRST]' >- ;; >-osf*) >- symcode='[BCDEGQRST]' >- ;; >-solaris* | sysv5*) >- symcode='[BDT]' >- ;; >-sysv4) >- symcode='[DFNSTU]' >- ;; >-esac >- >-# Handle CRLF in mingw tool chain >-opt_cr= >-case $build_os in >-mingw*) >- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp >- ;; >-esac >- >-# If we're using GNU nm, then use its standard symbol codes. >-case `$NM -V 2>&1` in >-*GNU* | *'with BFD'*) >- symcode='[ABCDGISTW]' ;; >-esac >- >-# Try without a prefix undercore, then with it. >-for ac_symprfx in "" "_"; do >- >- # Write the raw and C identifiers. >- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" >- >- # Check to see that the pipe works correctly. >- pipe_works=no >- >- rm -f conftest* >- cat > conftest.$ac_ext <<EOF >-#ifdef __cplusplus >-extern "C" { >-#endif >-char nm_test_var; >-void nm_test_func(){} >-#ifdef __cplusplus >-} >-#endif >-int main(){nm_test_var='a';nm_test_func();return(0);} >-EOF >- >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- # Now try to grab the symbols. >- nlist=conftest.nm >- if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 >- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s "$nlist"; then >- # Try sorting and uniquifying the output. >- if sort "$nlist" | uniq > "$nlist"T; then >- mv -f "$nlist"T "$nlist" >- else >- rm -f "$nlist"T >- fi >- >- # Make sure that we snagged all the symbols we need. >- if grep ' nm_test_var$' "$nlist" >/dev/null; then >- if grep ' nm_test_func$' "$nlist" >/dev/null; then >- cat <<EOF > conftest.$ac_ext >-#ifdef __cplusplus >-extern "C" { >-#endif >- >-EOF >- # Now generate the symbol file. >- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' >- >- cat <<EOF >> conftest.$ac_ext >-#if defined (__STDC__) && __STDC__ >-# define lt_ptr_t void * >-#else >-# define lt_ptr_t char * >-# define const >-#endif >- >-/* The mapping between symbol names and symbols. */ >-const struct { >- const char *name; >- lt_ptr_t address; >-} >-lt_preloaded_symbols[] = >-{ >-EOF >- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext >- cat <<\EOF >> conftest.$ac_ext >- {0, (lt_ptr_t) 0} >-}; >- >-#ifdef __cplusplus >-} >-#endif >-EOF >- # Now try linking the two files. >- mv conftest.$ac_objext conftstm.$ac_objext >- lt_save_LIBS="$LIBS" >- lt_save_CFLAGS="$CFLAGS" >- LIBS="conftstm.$ac_objext" >- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext}; then >- pipe_works=yes >- fi >- LIBS="$lt_save_LIBS" >- CFLAGS="$lt_save_CFLAGS" >- else >- echo "cannot find nm_test_func in $nlist" >&5 >- fi >- else >- echo "cannot find nm_test_var in $nlist" >&5 >- fi >- else >- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 >- fi >- else >- echo "$progname: failed program was:" >&5 >- cat conftest.$ac_ext >&5 >- fi >- rm -f conftest* conftst* >- >- # Do not use the global_symbol_pipe unless it works. >- if test "$pipe_works" = yes; then >- break >- else >- lt_cv_sys_global_symbol_pipe= >- fi >-done >- >-fi >- >-if test -z "$lt_cv_sys_global_symbol_pipe"; then >- lt_cv_sys_global_symbol_to_cdecl= >-fi >-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then >- echo "$as_me:$LINENO: result: failed" >&5 >-echo "${ECHO_T}failed" >&6 >-else >- echo "$as_me:$LINENO: result: ok" >&5 >-echo "${ECHO_T}ok" >&6 >-fi >- >-echo "$as_me:$LINENO: checking for objdir" >&5 >-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 >-if test "${lt_cv_objdir+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- rm -f .libs 2>/dev/null >-mkdir .libs 2>/dev/null >-if test -d .libs; then >- lt_cv_objdir=.libs >-else >- # MS-DOS does not allow filenames that begin with a dot. >- lt_cv_objdir=_libs >-fi >-rmdir .libs 2>/dev/null >-fi >-echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 >-echo "${ECHO_T}$lt_cv_objdir" >&6 >-objdir=$lt_cv_objdir >- >- >- >- >- >-case $host_os in >-aix3*) >- # AIX sometimes has problems with the GCC collect2 program. For some >- # reason, if we set the COLLECT_NAMES environment variable, the problems >- # vanish in a puff of smoke. >- if test "X${COLLECT_NAMES+set}" != Xset; then >- COLLECT_NAMES= >- export COLLECT_NAMES >- fi >- ;; >-esac >- >-# Sed substitution that helps us do robust quoting. It backslashifies >-# metacharacters that are still active within double-quoted strings. >-Xsed='sed -e s/^X//' >-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' >- >-# Same as above, but do not quote variable references. >-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' >- >-# Sed substitution to delay expansion of an escaped shell variable in a >-# double_quote_subst'ed string. >-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' >- >-# Sed substitution to avoid accidental globbing in evaled expressions >-no_glob_subst='s/\*/\\\*/g' >- >-# Constants: >-rm="rm -f" >- >-# Global variables: >-default_ofile=libtool >-can_build_shared=yes >- >-# All known linkers require a `.a' archive for static linking (except M$VC, >-# which needs '.lib'). >-libext=a >-ltmain="$ac_aux_dir/ltmain.sh" >-ofile="$default_ofile" >-with_gnu_ld="$lt_cv_prog_gnu_ld" >- >-if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. >-set dummy ${ac_tool_prefix}ar; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_AR+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$AR"; then >- ac_cv_prog_AR="$AR" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_AR="${ac_tool_prefix}ar" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-AR=$ac_cv_prog_AR >-if test -n "$AR"; then >- echo "$as_me:$LINENO: result: $AR" >&5 >-echo "${ECHO_T}$AR" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_AR"; then >- ac_ct_AR=$AR >- # Extract the first word of "ar", so it can be a program name with args. >-set dummy ar; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_AR"; then >- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_AR="ar" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" >-fi >-fi >-ac_ct_AR=$ac_cv_prog_ac_ct_AR >-if test -n "$ac_ct_AR"; then >- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 >-echo "${ECHO_T}$ac_ct_AR" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- AR=$ac_ct_AR >-else >- AR="$ac_cv_prog_AR" >-fi >- >-if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. >-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_RANLIB+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$RANLIB"; then >- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-RANLIB=$ac_cv_prog_RANLIB >-if test -n "$RANLIB"; then >- echo "$as_me:$LINENO: result: $RANLIB" >&5 >-echo "${ECHO_T}$RANLIB" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_RANLIB"; then >- ac_ct_RANLIB=$RANLIB >- # Extract the first word of "ranlib", so it can be a program name with args. >-set dummy ranlib; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_RANLIB"; then >- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_RANLIB="ranlib" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" >-fi >-fi >-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB >-if test -n "$ac_ct_RANLIB"; then >- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 >-echo "${ECHO_T}$ac_ct_RANLIB" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- RANLIB=$ac_ct_RANLIB >-else >- RANLIB="$ac_cv_prog_RANLIB" >-fi >- >-if test -n "$ac_tool_prefix"; then >- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. >-set dummy ${ac_tool_prefix}strip; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_STRIP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$STRIP"; then >- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_STRIP="${ac_tool_prefix}strip" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >-fi >-fi >-STRIP=$ac_cv_prog_STRIP >-if test -n "$STRIP"; then >- echo "$as_me:$LINENO: result: $STRIP" >&5 >-echo "${ECHO_T}$STRIP" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-fi >-if test -z "$ac_cv_prog_STRIP"; then >- ac_ct_STRIP=$STRIP >- # Extract the first word of "strip", so it can be a program name with args. >-set dummy strip; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$ac_ct_STRIP"; then >- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. >-else >-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_prog_ac_ct_STRIP="strip" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" >-fi >-fi >-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP >-if test -n "$ac_ct_STRIP"; then >- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 >-echo "${ECHO_T}$ac_ct_STRIP" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- STRIP=$ac_ct_STRIP >-else >- STRIP="$ac_cv_prog_STRIP" >-fi >- >- >-old_CC="$CC" >-old_CFLAGS="$CFLAGS" >- >-# Set sane defaults for various variables >-test -z "$AR" && AR=ar >-test -z "$AR_FLAGS" && AR_FLAGS=cru >-test -z "$AS" && AS=as >-test -z "$CC" && CC=cc >-test -z "$LTCC" && LTCC=$CC >-test -z "$DLLTOOL" && DLLTOOL=dlltool >-test -z "$LD" && LD=ld >-test -z "$LN_S" && LN_S="ln -s" >-test -z "$MAGIC_CMD" && MAGIC_CMD=file >-test -z "$NM" && NM=nm >-test -z "$SED" && SED=sed >-test -z "$OBJDUMP" && OBJDUMP=objdump >-test -z "$RANLIB" && RANLIB=: >-test -z "$STRIP" && STRIP=: >-test -z "$ac_objext" && ac_objext=o >- >-# Determine commands to create old-style static archives. >-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' >-old_postinstall_cmds='chmod 644 $oldlib' >-old_postuninstall_cmds= >- >-if test -n "$RANLIB"; then >- case $host_os in >- openbsd*) >- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" >- ;; >- *) >- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" >- ;; >- esac >- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" >-fi >- >-# Only perform the check for file, if the check method requires it >-case $deplibs_check_method in >-file_magic*) >- if test "$file_magic_cmd" = '$MAGIC_CMD'; then >- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 >-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 >-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- case $MAGIC_CMD in >-[\\/*] | ?:[\\/]*) >- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. >- ;; >-*) >- lt_save_MAGIC_CMD="$MAGIC_CMD" >- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR >- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" >- for ac_dir in $ac_dummy; do >- IFS="$lt_save_ifs" >- test -z "$ac_dir" && ac_dir=. >- if test -f $ac_dir/${ac_tool_prefix}file; then >- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" >- if test -n "$file_magic_test_file"; then >- case $deplibs_check_method in >- "file_magic "*) >- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" >- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" >- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | >- $EGREP "$file_magic_regex" > /dev/null; then >- : >- else >- cat <<EOF 1>&2 >- >-*** Warning: the command libtool uses to detect shared libraries, >-*** $file_magic_cmd, produces output that libtool cannot recognize. >-*** The result is that libtool may fail to recognize shared libraries >-*** as such. This will affect the creation of libtool libraries that >-*** depend on shared libraries, but programs linked with such libtool >-*** libraries will work regardless of this problem. Nevertheless, you >-*** may want to report the problem to your system manager and/or to >-*** bug-libtool@gnu.org >- >-EOF >- fi ;; >- esac >- fi >- break >- fi >- done >- IFS="$lt_save_ifs" >- MAGIC_CMD="$lt_save_MAGIC_CMD" >- ;; >-esac >-fi >- >-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" >-if test -n "$MAGIC_CMD"; then >- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 >-echo "${ECHO_T}$MAGIC_CMD" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >-if test -z "$lt_cv_path_MAGIC_CMD"; then >- if test -n "$ac_tool_prefix"; then >- echo "$as_me:$LINENO: checking for file" >&5 >-echo $ECHO_N "checking for file... $ECHO_C" >&6 >-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- case $MAGIC_CMD in >-[\\/*] | ?:[\\/]*) >- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. >- ;; >-*) >- lt_save_MAGIC_CMD="$MAGIC_CMD" >- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR >- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" >- for ac_dir in $ac_dummy; do >- IFS="$lt_save_ifs" >- test -z "$ac_dir" && ac_dir=. >- if test -f $ac_dir/file; then >- lt_cv_path_MAGIC_CMD="$ac_dir/file" >- if test -n "$file_magic_test_file"; then >- case $deplibs_check_method in >- "file_magic "*) >- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" >- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" >- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | >- $EGREP "$file_magic_regex" > /dev/null; then >- : >- else >- cat <<EOF 1>&2 >- >-*** Warning: the command libtool uses to detect shared libraries, >-*** $file_magic_cmd, produces output that libtool cannot recognize. >-*** The result is that libtool may fail to recognize shared libraries >-*** as such. This will affect the creation of libtool libraries that >-*** depend on shared libraries, but programs linked with such libtool >-*** libraries will work regardless of this problem. Nevertheless, you >-*** may want to report the problem to your system manager and/or to >-*** bug-libtool@gnu.org >- >-EOF >- fi ;; >- esac >- fi >- break >- fi >- done >- IFS="$lt_save_ifs" >- MAGIC_CMD="$lt_save_MAGIC_CMD" >- ;; >-esac >-fi >- >-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" >-if test -n "$MAGIC_CMD"; then >- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 >-echo "${ECHO_T}$MAGIC_CMD" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- else >- MAGIC_CMD=: >- fi >-fi >- >- fi >- ;; >-esac >- >-enable_dlopen=yes >-enable_win32_dll=yes >- >-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. >-if test "${enable_libtool_lock+set}" = set; then >- enableval="$enable_libtool_lock" >- >-fi; >-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes >- >- >-# Check whether --with-pic or --without-pic was given. >-if test "${with_pic+set}" = set; then >- withval="$with_pic" >- pic_mode="$withval" >-else >- pic_mode=default >-fi; >-test -z "$pic_mode" && pic_mode=default >- >-# Use C for the default configuration in the libtool script >-tagname= >-lt_save_CC="$CC" >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- >-# Source file extension for C test sources. >-ac_ext=c >- >-# Object file extension for compiled C test sources. >-objext=o >-objext=$objext >- >-# Code to be used in simple compile tests >-lt_simple_compile_test_code="int some_variable = 0;\n" >- >-# Code to be used in simple link tests >-lt_simple_link_test_code='int main(){return(0);}\n' >- >- >-# If no C compiler was specified, use CC. >-LTCC=${LTCC-"$CC"} >- >-# Allow CC to be a program name with arguments. >-compiler=$CC >- >- >-# >-# Check for any special shared library compilation flags. >-# >-lt_prog_cc_shlib= >-if test "$GCC" = no; then >- case $host_os in >- sco3.2v5*) >- lt_prog_cc_shlib='-belf' >- ;; >- esac >-fi >-if test -n "$lt_prog_cc_shlib"; then >- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 >-echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} >- if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : >- else >- { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 >-echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} >- lt_cv_prog_cc_can_build_shared=no >- fi >-fi >- >- >-# >-# Check to make sure the static flag actually works. >-# >-echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 >-echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 >-if test "${lt_prog_compiler_static_works+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_prog_compiler_static_works=no >- save_LDFLAGS="$LDFLAGS" >- LDFLAGS="$LDFLAGS $lt_prog_compiler_static" >- printf "$lt_simple_link_test_code" > conftest.$ac_ext >- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test -s conftest.err; then >- # Append any errors to the config.log. >- cat conftest.err 1>&5 >- else >- lt_prog_compiler_static_works=yes >- fi >- fi >- $rm conftest* >- LDFLAGS="$save_LDFLAGS" >- >-fi >-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 >-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 >- >-if test x"$lt_prog_compiler_static_works" = xyes; then >- : >-else >- lt_prog_compiler_static= >-fi >- >- >- >-## CAVEAT EMPTOR: >-## There is no encapsulation within the following macros, do not change >-## the running order or otherwise move them around unless you know exactly >-## what you are doing... >- >-lt_prog_compiler_no_builtin_flag= >- >-if test "$GCC" = yes; then >- lt_prog_compiler_no_builtin_flag=' -fno-builtin' >- >- >-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 >-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 >-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_prog_compiler_rtti_exceptions=no >- ac_outfile=conftest.$ac_objext >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- lt_compiler_flag="-fno-rtti -fno-exceptions" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- # The option is referenced via a variable to avoid confusing sed. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:6667: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>conftest.err) >- ac_status=$? >- cat conftest.err >&5 >- echo "$as_me:6671: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s "$ac_outfile"; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s conftest.err; then >- lt_cv_prog_compiler_rtti_exceptions=yes >- fi >- fi >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 >-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 >- >-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then >- lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" >-else >- : >-fi >- >-fi >- >-lt_prog_compiler_wl= >-lt_prog_compiler_pic= >-lt_prog_compiler_static= >- >-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 >-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 >- >- if test "$GCC" = yes; then >- lt_prog_compiler_wl='-Wl,' >- lt_prog_compiler_static='-static' >- >- case $host_os in >- aix*) >- # All AIX code is PIC. >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static='-Bstatic' >- fi >- ;; >- >- amigaos*) >- # FIXME: we need at least 68020 code to build shared libraries, but >- # adding the `-m68020' flag to GCC prevents building anything better, >- # like `-m68040'. >- lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' >- ;; >- >- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) >- # PIC is the default for these OSes. >- ;; >- >- mingw* | pw32* | os2*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic='-DDLL_EXPORT' >- ;; >- >- darwin* | rhapsody*) >- # PIC is the default on this platform >- # Common symbols not allowed in MH_DYLIB files >- lt_prog_compiler_pic='-fno-common' >- ;; >- >- msdosdjgpp*) >- # Just because we use GCC doesn't mean we suddenly get shared libraries >- # on systems that don't support them. >- lt_prog_compiler_can_build_shared=no >- enable_shared=no >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec; then >- lt_prog_compiler_pic=-Kconform_pic >- fi >- ;; >- >- hpux*) >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic='-fPIC' >- ;; >- esac >- ;; >- >- *) >- lt_prog_compiler_pic='-fPIC' >- ;; >- esac >- else >- # PORTME Check for flag to pass linker flags through the system compiler. >- case $host_os in >- aix*) >- lt_prog_compiler_wl='-Wl,' >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static='-Bstatic' >- else >- lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' >- fi >- ;; >- >- mingw* | pw32* | os2*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic='-DDLL_EXPORT' >- ;; >- >- hpux9* | hpux10* | hpux11*) >- lt_prog_compiler_wl='-Wl,' >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic='+Z' >- ;; >- esac >- # Is there a better lt_prog_compiler_static that works with the bundled CC? >- lt_prog_compiler_static='${wl}-a ${wl}archive' >- ;; >- >- irix5* | irix6* | nonstopux*) >- lt_prog_compiler_wl='-Wl,' >- # PIC (with -KPIC) is the default. >- lt_prog_compiler_static='-non_shared' >- ;; >- >- newsos6) >- lt_prog_compiler_pic='-KPIC' >- lt_prog_compiler_static='-Bstatic' >- ;; >- >- linux*) >- case $CC in >- icc* | ecc*) >- lt_prog_compiler_wl='-Wl,' >- lt_prog_compiler_pic='-KPIC' >- lt_prog_compiler_static='-static' >- ;; >- ccc*) >- lt_prog_compiler_wl='-Wl,' >- # All Alpha code is PIC. >- lt_prog_compiler_static='-non_shared' >- ;; >- esac >- ;; >- >- osf3* | osf4* | osf5*) >- lt_prog_compiler_wl='-Wl,' >- # All OSF/1 code is PIC. >- lt_prog_compiler_static='-non_shared' >- ;; >- >- sco3.2v5*) >- lt_prog_compiler_pic='-Kpic' >- lt_prog_compiler_static='-dn' >- ;; >- >- solaris*) >- lt_prog_compiler_wl='-Wl,' >- lt_prog_compiler_pic='-KPIC' >- lt_prog_compiler_static='-Bstatic' >- ;; >- >- sunos4*) >- lt_prog_compiler_wl='-Qoption ld ' >- lt_prog_compiler_pic='-PIC' >- lt_prog_compiler_static='-Bstatic' >- ;; >- >- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- lt_prog_compiler_wl='-Wl,' >- lt_prog_compiler_pic='-KPIC' >- lt_prog_compiler_static='-Bstatic' >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec ;then >- lt_prog_compiler_pic='-Kconform_pic' >- lt_prog_compiler_static='-Bstatic' >- fi >- ;; >- >- uts4*) >- lt_prog_compiler_pic='-pic' >- lt_prog_compiler_static='-Bstatic' >- ;; >- >- *) >- lt_prog_compiler_can_build_shared=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic" >&6 >- >-# >-# Check to make sure the PIC flag actually works. >-# >-if test -n "$lt_prog_compiler_pic"; then >- >-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 >-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 >-if test "${lt_prog_compiler_pic_works+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_prog_compiler_pic_works=no >- ac_outfile=conftest.$ac_objext >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- lt_compiler_flag="$lt_prog_compiler_pic -DPIC" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- # The option is referenced via a variable to avoid confusing sed. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:6900: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>conftest.err) >- ac_status=$? >- cat conftest.err >&5 >- echo "$as_me:6904: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s "$ac_outfile"; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s conftest.err; then >- lt_prog_compiler_pic_works=yes >- fi >- fi >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 >- >-if test x"$lt_prog_compiler_pic_works" = xyes; then >- case $lt_prog_compiler_pic in >- "" | " "*) ;; >- *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; >- esac >-else >- lt_prog_compiler_pic= >- lt_prog_compiler_can_build_shared=no >-fi >- >-fi >-case "$host_os" in >- # For platforms which do not support PIC, -DPIC is meaningless: >- *djgpp*) >- lt_prog_compiler_pic= >- ;; >- *) >- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" >- ;; >-esac >- >-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 >-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 >-if test "${lt_cv_prog_compiler_c_o+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_prog_compiler_c_o=no >- $rm -r conftest 2>/dev/null >- mkdir conftest >- cd conftest >- mkdir out >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- # According to Tom Tromey, Ian Lance Taylor reported there are C compilers >- # that will create temporary files in the current directory regardless of >- # the output directory. Thus, making CWD read-only will cause this test >- # to fail, enabling locking or at least warning the user not to do parallel >- # builds. >- chmod -w . >- >- lt_compiler_flag="-o out/conftest2.$ac_objext" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:6967: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>out/conftest.err) >- ac_status=$? >- cat out/conftest.err >&5 >- echo "$as_me:6971: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s out/conftest2.$ac_objext >- then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s out/conftest.err; then >- lt_cv_prog_compiler_c_o=yes >- fi >- fi >- chmod u+w . >- $rm conftest* >- # SGI C++ compiler will create directory out/ii_files/ for >- # template instantiation >- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files >- $rm out/* && rmdir out >- cd .. >- rmdir conftest >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 >-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 >- >- >-hard_links="nottested" >-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then >- # do not overwrite the value of need_locks provided by the user >- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 >-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 >- hard_links=yes >- $rm conftest* >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- touch conftest.a >- ln conftest.a conftest.b 2>&5 || hard_links=no >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- echo "$as_me:$LINENO: result: $hard_links" >&5 >-echo "${ECHO_T}$hard_links" >&6 >- if test "$hard_links" = no; then >- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 >-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} >- need_locks=warn >- fi >-else >- need_locks=no >-fi >- >-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 >- >- runpath_var= >- allow_undefined_flag= >- enable_shared_with_static_runtimes=no >- archive_cmds= >- archive_expsym_cmds= >- old_archive_From_new_cmds= >- old_archive_from_expsyms_cmds= >- export_dynamic_flag_spec= >- whole_archive_flag_spec= >- thread_safe_flag_spec= >- hardcode_libdir_flag_spec= >- hardcode_libdir_flag_spec_ld= >- hardcode_libdir_separator= >- hardcode_direct=no >- hardcode_minus_L=no >- hardcode_shlibpath_var=unsupported >- link_all_deplibs=unknown >- hardcode_automatic=no >- module_cmds= >- module_expsym_cmds= >- always_export_symbols=no >- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' >- # include_expsyms should be a list of space-separated symbols to be *always* >- # included in the symbol list >- include_expsyms= >- # exclude_expsyms can be an extended regexp of symbols to exclude >- # it will be wrapped by ` (' and `)$', so one must not match beginning or >- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', >- # as well as any symbol that contains `d'. >- exclude_expsyms="_GLOBAL_OFFSET_TABLE_" >- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out >- # platforms (ab)use it in PIC code, but their linkers get confused if >- # the symbol is explicitly referenced. Since portable code cannot >- # rely on this symbol name, it's probably fine to never include it in >- # preloaded symbol tables. >- extract_expsyms_cmds= >- >- case $host_os in >- cygwin* | mingw* | pw32*) >- # FIXME: the MSVC++ port hasn't been tested in a loooong time >- # When not using gcc, we currently assume that we are using >- # Microsoft Visual C++. >- if test "$GCC" != yes; then >- with_gnu_ld=no >- fi >- ;; >- openbsd*) >- with_gnu_ld=no >- ;; >- esac >- >- ld_shlibs=yes >- if test "$with_gnu_ld" = yes; then >- # If archive_cmds runs LD, not CC, wlarc should be empty >- wlarc='${wl}' >- >- # See if GNU ld supports shared libraries. >- case $host_os in >- aix3* | aix4* | aix5*) >- # On AIX/PPC, the GNU linker is very broken >- if test "$host_cpu" != ia64; then >- ld_shlibs=no >- cat <<EOF 1>&2 >- >-*** Warning: the GNU linker, at least up to release 2.9.1, is reported >-*** to be unable to reliably create shared libraries on AIX. >-*** Therefore, libtool is disabling shared libraries support. If you >-*** really care for shared libraries, you may want to modify your PATH >-*** so that a non-GNU linker is found, and then restart. >- >-EOF >- fi >- ;; >- >- amigaos*) >- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_minus_L=yes >- >- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports >- # that the semantics of dynamic libraries on AmigaOS, at least up >- # to version 4, is to share data among multiple programs linked >- # with the same dynamic library. Since this doesn't match the >- # behavior of shared libraries on other platforms, we can't use >- # them. >- ld_shlibs=no >- ;; >- >- beos*) >- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- allow_undefined_flag=unsupported >- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc >- # support --undefined. This deserves some investigation. FIXME >- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- else >- ld_shlibs=no >- fi >- ;; >- >- cygwin* | mingw* | pw32*) >- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, >- # as there is no search path for DLLs. >- hardcode_libdir_flag_spec='-L$libdir' >- allow_undefined_flag=unsupported >- always_export_symbols=no >- enable_shared_with_static_runtimes=yes >- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' >- >- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then >- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- # If the export-symbols file already is a .def file (1st line >- # is EXPORTS), use it as is; otherwise, prepend... >- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then >- cp $export_symbols $output_objdir/$soname.def; >- else >- echo EXPORTS > $output_objdir/$soname.def; >- cat $export_symbols >> $output_objdir/$soname.def; >- fi~ >- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- else >- ld_shlibs=no >- fi >- ;; >- >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' >- wlarc= >- else >- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- fi >- ;; >- >- solaris* | sysv5*) >- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then >- ld_shlibs=no >- cat <<EOF 1>&2 >- >-*** Warning: The releases 2.8.* of the GNU linker cannot reliably >-*** create shared libraries on Solaris systems. Therefore, libtool >-*** is disabling shared libraries support. We urge you to upgrade GNU >-*** binutils to release 2.9.1 or newer. Another option is to modify >-*** your PATH or compiler configuration so that the native linker is >-*** used, and then restart. >- >-EOF >- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- else >- ld_shlibs=no >- fi >- ;; >- >- sunos4*) >- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- wlarc= >- hardcode_direct=yes >- hardcode_shlibpath_var=no >- ;; >- >- *) >- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- else >- ld_shlibs=no >- fi >- ;; >- esac >- >- if test "$ld_shlibs" = yes; then >- runpath_var=LD_RUN_PATH >- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' >- export_dynamic_flag_spec='${wl}--export-dynamic' >- # ancient GNU ld didn't support --whole-archive et. al. >- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then >- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' >- else >- whole_archive_flag_spec= >- fi >- fi >- else >- # PORTME fill in a description of your system's linker (not GNU ld) >- case $host_os in >- aix3*) >- allow_undefined_flag=unsupported >- always_export_symbols=yes >- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' >- # Note: this linker hardcodes the directories in LIBPATH if there >- # are no directories specified by -L. >- hardcode_minus_L=yes >- if test "$GCC" = yes && test -z "$link_static_flag"; then >- # Neither direct hardcoding nor static linking is supported with a >- # broken collect2. >- hardcode_direct=unsupported >- fi >- ;; >- >- aix4* | aix5*) >- if test "$host_cpu" = ia64; then >- # On IA64, the linker does run time linking by default, so we don't >- # have to do anything special. >- aix_use_runtimelinking=no >- exp_sym_flag='-Bexport' >- no_entry_flag="" >- else >- # If we're using GNU nm, then we don't want the "-C" option. >- # -C means demangle to AIX nm, but means don't demangle with GNU nm >- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then >- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- else >- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- fi >- aix_use_runtimelinking=no >- >- # Test if we are trying to use run time linking or normal >- # AIX style linking. If -brtl is somewhere in LDFLAGS, we >- # need to do runtime linking. >- case $host_os in aix4.[23]|aix4.[23].*|aix5*) >- for ld_flag in $LDFLAGS; do >- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then >- aix_use_runtimelinking=yes >- break >- fi >- done >- esac >- >- exp_sym_flag='-bexport' >- no_entry_flag='-bnoentry' >- fi >- >- # When large executables or shared objects are built, AIX ld can >- # have problems creating the table of contents. If linking a library >- # or program results in "error TOC overflow" add -mminimal-toc to >- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not >- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. >- >- archive_cmds='' >- hardcode_direct=yes >- hardcode_libdir_separator=':' >- link_all_deplibs=yes >- >- if test "$GCC" = yes; then >- case $host_os in aix4.012|aix4.012.*) >- # We only want to do this on AIX 4.2 and lower, the check >- # below for broken collect2 doesn't work under 4.3+ >- collect2name=`${CC} -print-prog-name=collect2` >- if test -f "$collect2name" && \ >- strings "$collect2name" | grep resolve_lib_name >/dev/null >- then >- # We have reworked collect2 >- hardcode_direct=yes >- else >- # We have old collect2 >- hardcode_direct=unsupported >- # It fails to find uninstalled libraries when the uninstalled >- # path is not listed in the libpath. Setting hardcode_minus_L >- # to unsupported forces relinking >- hardcode_minus_L=yes >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_libdir_separator= >- fi >- esac >- shared_flag='-shared' >- else >- # not using gcc >- if test "$host_cpu" = ia64; then >- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release >- # chokes on -Wl,-G. The following line is correct: >- shared_flag='-G' >- else >- if test "$aix_use_runtimelinking" = yes; then >- shared_flag='${wl}-G' >- else >- shared_flag='${wl}-bM:SRE' >- fi >- fi >- fi >- >- # It seems that -bexpall does not export symbols beginning with >- # underscore (_), so it is better to generate a list of symbols to export. >- always_export_symbols=yes >- if test "$aix_use_runtimelinking" = yes; then >- # Warning - without using the other runtime loading flags (-brtl), >- # -berok will link without error, but may produce a broken library. >- allow_undefined_flag='-berok' >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" >- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" >- else >- if test "$host_cpu" = ia64; then >- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' >- allow_undefined_flag="-z nodefs" >- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" >- else >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" >- # Warning - without using the other run time loading flags, >- # -berok will link without error, but may produce a broken library. >- no_undefined_flag=' ${wl}-bernotok' >- allow_undefined_flag=' ${wl}-berok' >- # -bexpall does not export symbols beginning with underscore (_) >- always_export_symbols=yes >- # Exported symbols can be pulled into shared objects from archives >- whole_archive_flag_spec=' ' >- archive_cmds_need_lc=yes >- # This is similar to how AIX traditionally builds it's shared libraries. >- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' >- fi >- fi >- ;; >- >- amigaos*) >- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_minus_L=yes >- # see comment about different semantics on the GNU ld section >- ld_shlibs=no >- ;; >- >- bsdi4*) >- export_dynamic_flag_spec=-rdynamic >- ;; >- >- cygwin* | mingw* | pw32*) >- # When not using gcc, we currently assume that we are using >- # Microsoft Visual C++. >- # hardcode_libdir_flag_spec is actually meaningless, as there is >- # no search path for DLLs. >- hardcode_libdir_flag_spec=' ' >- allow_undefined_flag=unsupported >- # Tell ltmain to make .lib files, not .a files. >- libext=lib >- # Tell ltmain to make .dll files, not .so files. >- shrext=".dll" >- # FIXME: Setting linknames here is a bad hack. >- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' >- # The linker will automatically build a .lib file if we build a DLL. >- old_archive_From_new_cmds='true' >- # FIXME: Should let the user specify the lib program. >- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' >- fix_srcfile_path='`cygpath -w "$srcfile"`' >- enable_shared_with_static_runtimes=yes >- ;; >- >- darwin* | rhapsody*) >- if test "$GXX" = yes ; then >- archive_cmds_need_lc=no >- case "$host_os" in >- rhapsody* | darwin1.[012]) >- allow_undefined_flag='-undefined suppress' >- ;; >- *) # Darwin 1.3 on >- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then >- allow_undefined_flag='-flat_namespace -undefined suppress' >- else >- case ${MACOSX_DEPLOYMENT_TARGET} in >- 10.[012]) >- allow_undefined_flag='-flat_namespace -undefined suppress' >- ;; >- 10.*) >- allow_undefined_flag='-undefined dynamic_lookup' >- ;; >- esac >- fi >- ;; >- esac >- lt_int_apple_cc_single_mod=no >- output_verbose_link_cmd='echo' >- if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then >- lt_int_apple_cc_single_mod=yes >- fi >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- else >- archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- fi >- module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' >- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- else >- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- fi >- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- hardcode_direct=no >- hardcode_automatic=yes >- hardcode_shlibpath_var=unsupported >- whole_archive_flag_spec='-all_load $convenience' >- link_all_deplibs=yes >- else >- ld_shlibs=no >- fi >- ;; >- >- dgux*) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_shlibpath_var=no >- ;; >- >- freebsd1*) >- ld_shlibs=no >- ;; >- >- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor >- # support. Future versions do this automatically, but an explicit c++rt0.o >- # does not break anything, and helps significantly (at the cost of a little >- # extra space). >- freebsd2.2*) >- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' >- hardcode_libdir_flag_spec='-R$libdir' >- hardcode_direct=yes >- hardcode_shlibpath_var=no >- ;; >- >- # Unfortunately, older versions of FreeBSD 2 do not have this feature. >- freebsd2*) >- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct=yes >- hardcode_minus_L=yes >- hardcode_shlibpath_var=no >- ;; >- >- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. >- freebsd* | kfreebsd*-gnu) >- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec='-R$libdir' >- hardcode_direct=yes >- hardcode_shlibpath_var=no >- ;; >- >- hpux9*) >- if test "$GCC" = yes; then >- archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- else >- archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- fi >- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator=: >- hardcode_direct=yes >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L=yes >- export_dynamic_flag_spec='${wl}-E' >- ;; >- >- hpux10* | hpux11*) >- if test "$GCC" = yes -a "$with_gnu_ld" = no; then >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- ;; >- *) >- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' >- ;; >- esac >- else >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' >- ;; >- *) >- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' >- ;; >- esac >- fi >- if test "$with_gnu_ld" = no; then >- case "$host_cpu" in >- hppa*64*) >- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' >- hardcode_libdir_flag_spec_ld='+b $libdir' >- hardcode_libdir_separator=: >- hardcode_direct=no >- hardcode_shlibpath_var=no >- ;; >- ia64*) >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_direct=no >- hardcode_shlibpath_var=no >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L=yes >- ;; >- *) >- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator=: >- hardcode_direct=yes >- export_dynamic_flag_spec='${wl}-E' >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L=yes >- ;; >- esac >- fi >- ;; >- >- irix5* | irix6* | nonstopux*) >- if test "$GCC" = yes; then >- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- else >- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- hardcode_libdir_flag_spec_ld='-rpath $libdir' >- fi >- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator=: >- link_all_deplibs=yes >- ;; >- >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out >- else >- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF >- fi >- hardcode_libdir_flag_spec='-R$libdir' >- hardcode_direct=yes >- hardcode_shlibpath_var=no >- ;; >- >- newsos6) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct=yes >- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator=: >- hardcode_shlibpath_var=no >- ;; >- >- openbsd*) >- hardcode_direct=yes >- hardcode_shlibpath_var=no >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' >- export_dynamic_flag_spec='${wl}-E' >- else >- case $host_os in >- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) >- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec='-R$libdir' >- ;; >- *) >- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' >- ;; >- esac >- fi >- ;; >- >- os2*) >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_minus_L=yes >- allow_undefined_flag=unsupported >- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' >- old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' >- ;; >- >- osf3*) >- if test "$GCC" = yes; then >- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- else >- allow_undefined_flag=' -expect_unresolved \*' >- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- fi >- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator=: >- ;; >- >- osf4* | osf5*) # as osf3* with the addition of -msym flag >- if test "$GCC" = yes; then >- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' >- else >- allow_undefined_flag=' -expect_unresolved \*' >- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ >- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' >- >- # Both c and cxx compiler support -rpath directly >- hardcode_libdir_flag_spec='-rpath $libdir' >- fi >- hardcode_libdir_separator=: >- ;; >- >- sco3.2v5*) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var=no >- export_dynamic_flag_spec='${wl}-Bexport' >- runpath_var=LD_RUN_PATH >- hardcode_runpath_var=yes >- ;; >- >- solaris*) >- no_undefined_flag=' -z text' >- if test "$GCC" = yes; then >- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' >- else >- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' >- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' >- fi >- hardcode_libdir_flag_spec='-R$libdir' >- hardcode_shlibpath_var=no >- case $host_os in >- solaris2.[0-5] | solaris2.[0-5].*) ;; >- *) # Supported since Solaris 2.6 (maybe 2.5.1?) >- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; >- esac >- link_all_deplibs=yes >- ;; >- >- sunos4*) >- if test "x$host_vendor" = xsequent; then >- # Use $CC to link under sequent, because it throws in some extra .o >- # files that make .init and .fini sections work. >- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' >- else >- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' >- fi >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_direct=yes >- hardcode_minus_L=yes >- hardcode_shlibpath_var=no >- ;; >- >- sysv4) >- case $host_vendor in >- sni) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct=yes # is this really true??? >- ;; >- siemens) >- ## LD is ld it makes a PLAMLIB >- ## CC just makes a GrossModule. >- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' >- reload_cmds='$CC -r -o $output$reload_objs' >- hardcode_direct=no >- ;; >- motorola) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct=no #Motorola manual says yes, but my tests say they lie >- ;; >- esac >- runpath_var='LD_RUN_PATH' >- hardcode_shlibpath_var=no >- ;; >- >- sysv4.3*) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var=no >- export_dynamic_flag_spec='-Bexport' >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec; then >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var=no >- runpath_var=LD_RUN_PATH >- hardcode_runpath_var=yes >- ld_shlibs=yes >- fi >- ;; >- >- sysv4.2uw2*) >- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct=yes >- hardcode_minus_L=no >- hardcode_shlibpath_var=no >- hardcode_runpath_var=yes >- runpath_var=LD_RUN_PATH >- ;; >- >- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) >- no_undefined_flag='${wl}-z ${wl}text' >- if test "$GCC" = yes; then >- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- else >- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- fi >- runpath_var='LD_RUN_PATH' >- hardcode_shlibpath_var=no >- ;; >- >- sysv5*) >- no_undefined_flag=' -z text' >- # $CC -shared without GNU ld will not create a library from C++ >- # object files and a static libstdc++, better avoid it by now >- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' >- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' >- hardcode_libdir_flag_spec= >- hardcode_shlibpath_var=no >- runpath_var='LD_RUN_PATH' >- ;; >- >- uts4*) >- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec='-L$libdir' >- hardcode_shlibpath_var=no >- ;; >- >- *) >- ld_shlibs=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $ld_shlibs" >&5 >-echo "${ECHO_T}$ld_shlibs" >&6 >-test "$ld_shlibs" = no && can_build_shared=no >- >-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" >-if test "$GCC" = yes; then >- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" >-fi >- >-# >-# Do we need to explicitly link libc? >-# >-case "x$archive_cmds_need_lc" in >-x|xyes) >- # Assume -lc should be added >- archive_cmds_need_lc=yes >- >- if test "$enable_shared" = yes && test "$GCC" = yes; then >- case $archive_cmds in >- *'~'*) >- # FIXME: we may have to deal with multi-command sequences. >- ;; >- '$CC '*) >- # Test whether the compiler implicitly links with -lc since on some >- # systems, -lgcc has to come before -lc. If gcc already passes -lc >- # to ld, don't add -lc before -lgcc. >- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 >-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 >- $rm conftest* >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } 2>conftest.err; then >- soname=conftest >- lib=conftest >- libobjs=conftest.$ac_objext >- deplibs= >- wl=$lt_prog_compiler_wl >- compiler_flags=-v >- linker_flags=-v >- verstring= >- output_objdir=. >- libname=conftest >- lt_save_allow_undefined_flag=$allow_undefined_flag >- allow_undefined_flag= >- if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 >- (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >- then >- archive_cmds_need_lc=no >- else >- archive_cmds_need_lc=yes >- fi >- allow_undefined_flag=$lt_save_allow_undefined_flag >- else >- cat conftest.err 1>&5 >- fi >- $rm conftest* >- echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 >-echo "${ECHO_T}$archive_cmds_need_lc" >&6 >- ;; >- esac >- fi >- ;; >-esac >- >-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 >-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 >-library_names_spec= >-libname_spec='lib$name' >-soname_spec= >-shrext=".so" >-postinstall_cmds= >-postuninstall_cmds= >-finish_cmds= >-finish_eval= >-shlibpath_var= >-shlibpath_overrides_runpath=unknown >-version_type=none >-dynamic_linker="$host_os ld.so" >-sys_lib_dlsearch_path_spec="/lib /usr/lib" >-if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then >- # if the path contains ";" then we assume it to be the separator >- # otherwise default to the standard path separator (i.e. ":") - it is >- # assumed that no part of a normal pathname contains ";" but that should >- # okay in the real world where ";" in dirpaths is itself problematic. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >-else >- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" >-fi >-need_lib_prefix=unknown >-hardcode_into_libs=no >- >-# when you set need_version to no, make sure it does not cause -set_version >-# flags to be left without arguments >-need_version=unknown >- >-case $host_os in >-aix3*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' >- shlibpath_var=LIBPATH >- >- # AIX 3 has no versioning support, so we append a major version to the name. >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- >-aix4* | aix5*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- hardcode_into_libs=yes >- if test "$host_cpu" = ia64; then >- # AIX 5 supports IA64 >- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- else >- # With GCC up to 2.95.x, collect2 would create an import file >- # for dependence libraries. The import file would start with >- # the line `#! .'. This would cause the generated library to >- # depend on `.', always an invalid library. This was fixed in >- # development snapshots of GCC prior to 3.0. >- case $host_os in >- aix4 | aix4.[01] | aix4.[01].*) >- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' >- echo ' yes ' >- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then >- : >- else >- can_build_shared=no >- fi >- ;; >- esac >- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct >- # soname into executable. Probably we can add versioning support to >- # collect2, so additional links can be useful in future. >- if test "$aix_use_runtimelinking" = yes; then >- # If using run time linking (on AIX 4.2 or later) use lib<name>.so >- # instead of lib<name>.a to let people know that these are not >- # typical AIX shared libraries. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- else >- # We preserve .a as extension for shared libraries through AIX4.2 >- # and later when we are not doing run time linking. >- library_names_spec='${libname}${release}.a $libname.a' >- soname_spec='${libname}${release}${shared_ext}$major' >- fi >- shlibpath_var=LIBPATH >- fi >- ;; >- >-amigaos*) >- library_names_spec='$libname.ixlibrary $libname.a' >- # Create ${libname}_ixlibrary.a entries in /sys/libs. >- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' >- ;; >- >-beos*) >- library_names_spec='${libname}${shared_ext}' >- dynamic_linker="$host_os ld.so" >- shlibpath_var=LIBRARY_PATH >- ;; >- >-bsdi4*) >- version_type=linux >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" >- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" >- # the default ld.so.conf also contains /usr/contrib/lib and >- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow >- # libtool to hard-code these into programs >- ;; >- >-cygwin* | mingw* | pw32*) >- version_type=windows >- shrext=".dll" >- need_version=no >- need_lib_prefix=no >- >- case $GCC,$host_os in >- yes,cygwin* | yes,mingw* | yes,pw32*) >- library_names_spec='$libname.dll.a' >- # DLL is installed to $(libdir)/../bin by postinstall_cmds >- postinstall_cmds='base_file=`basename \${file}`~ >- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ >- dldir=$destdir/`dirname \$dlpath`~ >- test -d \$dldir || mkdir -p \$dldir~ >- $install_prog $dir/$dlname \$dldir/$dlname' >- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ >- dlpath=$dir/\$dldll~ >- $rm \$dlpath' >- shlibpath_overrides_runpath=yes >- >- case $host_os in >- cygwin*) >- # Cygwin DLLs use 'cyg' prefix rather than 'lib' >- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" >- ;; >- mingw*) >- # MinGW DLLs use traditional 'lib' prefix >- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then >- # It is most probably a Windows format PATH printed by >- # mingw gcc, but we are running on Cygwin. Gcc prints its search >- # path with ; separators, and with drive letters. We can handle the >- # drive letters (cygwin fileutils understands them), so leave them, >- # especially as we might pass files found there to a mingw objdump, >- # which wouldn't understand a cygwinified path. Ahh. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >- ;; >- pw32*) >- # pw32 DLLs use 'pw' prefix rather than 'lib' >- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' >- ;; >- esac >- ;; >- >- *) >- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' >- ;; >- esac >- dynamic_linker='Win32 ld.exe' >- # FIXME: first we should search . and the directory the executable is in >- shlibpath_var=PATH >- ;; >- >-darwin* | rhapsody*) >- dynamic_linker="$host_os dyld" >- version_type=darwin >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' >- soname_spec='${libname}${release}${major}$shared_ext' >- shlibpath_overrides_runpath=yes >- shlibpath_var=DYLD_LIBRARY_PATH >- shrext='$(test .$module = .yes && echo .so || echo .dylib)' >- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. >- if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` >- else >- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' >- fi >- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' >- ;; >- >-dgux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-freebsd1*) >- dynamic_linker=no >- ;; >- >-kfreebsd*-gnu) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- dynamic_linker='GNU ld.so' >- ;; >- >-freebsd*) >- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` >- version_type=freebsd-$objformat >- case $version_type in >- freebsd-elf*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' >- need_version=no >- need_lib_prefix=no >- ;; >- freebsd-*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' >- need_version=yes >- ;; >- esac >- shlibpath_var=LD_LIBRARY_PATH >- case $host_os in >- freebsd2*) >- shlibpath_overrides_runpath=yes >- ;; >- freebsd3.01* | freebsdelf3.01*) >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- *) # from 3.2 on >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- ;; >- esac >- ;; >- >-gnu*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- hardcode_into_libs=yes >- ;; >- >-hpux9* | hpux10* | hpux11*) >- # Give a soname corresponding to the major version so that dld.sl refuses to >- # link against other versions. >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- case "$host_cpu" in >- ia64*) >- shrext='.so' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.so" >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- if test "X$HPUX_IA64_MODE" = X32; then >- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" >- else >- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" >- fi >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- hppa*64*) >- shrext='.sl' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- *) >- shrext='.sl' >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=SHLIB_PATH >- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- esac >- # HP-UX runs *really* slowly unless shared libraries are mode 555. >- postinstall_cmds='chmod 555 $lib' >- ;; >- >-irix5* | irix6* | nonstopux*) >- case $host_os in >- nonstopux*) version_type=nonstopux ;; >- *) >- if test "$lt_cv_prog_gnu_ld" = yes; then >- version_type=linux >- else >- version_type=irix >- fi ;; >- esac >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' >- case $host_os in >- irix5* | nonstopux*) >- libsuff= shlibsuff= >- ;; >- *) >- case $LD in # libtool.m4 will add one of these switches to LD >- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") >- libsuff= shlibsuff= libmagic=32-bit;; >- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") >- libsuff=32 shlibsuff=N32 libmagic=N32;; >- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") >- libsuff=64 shlibsuff=64 libmagic=64-bit;; >- *) libsuff= shlibsuff= libmagic=never-match;; >- esac >- ;; >- esac >- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" >- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" >- hardcode_into_libs=yes >- ;; >- >-# No shared lib support for Linux oldld, aout, or coff. >-linux*oldld* | linux*aout* | linux*coff*) >- dynamic_linker=no >- ;; >- >-# This must be Linux ELF. >-linux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- # This implies no fast_install, which is unacceptable. >- # Some rework will be needed to allow for fast_install >- # before this can be enabled. >- hardcode_into_libs=yes >- >- # We used to test for /lib/ld.so.1 and disable shared libraries on >- # powerpc, because MkLinux only supported shared libraries with the >- # GNU dynamic linker. Since this was broken with cross compilers, >- # most powerpc-linux boxes support dynamic linking these days and >- # people can always --disable-shared, the test was removed, and we >- # assume the GNU/Linux dynamic linker is in use. >- dynamic_linker='GNU/Linux ld.so' >- ;; >- >-netbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- dynamic_linker='NetBSD (a.out) ld.so' >- else >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- dynamic_linker='NetBSD ld.elf_so' >- fi >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- >-newsos6) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-nto-qnx*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-openbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- case $host_os in >- openbsd2.[89] | openbsd2.[89].*) >- shlibpath_overrides_runpath=no >- ;; >- *) >- shlibpath_overrides_runpath=yes >- ;; >- esac >- else >- shlibpath_overrides_runpath=yes >- fi >- ;; >- >-os2*) >- libname_spec='$name' >- shrext=".dll" >- need_lib_prefix=no >- library_names_spec='$libname${shared_ext} $libname.a' >- dynamic_linker='OS/2 ld.exe' >- shlibpath_var=LIBPATH >- ;; >- >-osf3* | osf4* | osf5*) >- version_type=osf >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" >- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" >- ;; >- >-sco3.2v5*) >- version_type=osf >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-solaris*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- # ldd complains unless libraries are executable >- postinstall_cmds='chmod +x $lib' >- ;; >- >-sunos4*) >- version_type=sunos >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- if test "$with_gnu_ld" = yes; then >- need_lib_prefix=no >- fi >- need_version=yes >- ;; >- >-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- case $host_vendor in >- sni) >- shlibpath_overrides_runpath=no >- need_lib_prefix=no >- export_dynamic_flag_spec='${wl}-Blargedynsym' >- runpath_var=LD_RUN_PATH >- ;; >- siemens) >- need_lib_prefix=no >- ;; >- motorola) >- need_lib_prefix=no >- need_version=no >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' >- ;; >- esac >- ;; >- >-sysv4*MP*) >- if test -d /usr/nec ;then >- version_type=linux >- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' >- soname_spec='$libname${shared_ext}.$major' >- shlibpath_var=LD_LIBRARY_PATH >- fi >- ;; >- >-uts4*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-*) >- dynamic_linker=no >- ;; >-esac >-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 >-echo "${ECHO_T}$dynamic_linker" >&6 >-test "$dynamic_linker" = no && can_build_shared=no >- >-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 >-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 >-hardcode_action= >-if test -n "$hardcode_libdir_flag_spec" || \ >- test -n "$runpath_var " || \ >- test "X$hardcode_automatic"="Xyes" ; then >- >- # We can hardcode non-existant directories. >- if test "$hardcode_direct" != no && >- # If the only mechanism to avoid hardcoding is shlibpath_var, we >- # have to relink, otherwise we might link with an installed library >- # when we should be linking with a yet-to-be-installed one >- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && >- test "$hardcode_minus_L" != no; then >- # Linking always hardcodes the temporary library directory. >- hardcode_action=relink >- else >- # We can link without hardcoding, and we can hardcode nonexisting dirs. >- hardcode_action=immediate >- fi >-else >- # We cannot hardcode anything, or else we can only hardcode existing >- # directories. >- hardcode_action=unsupported >-fi >-echo "$as_me:$LINENO: result: $hardcode_action" >&5 >-echo "${ECHO_T}$hardcode_action" >&6 >- >-if test "$hardcode_action" = relink; then >- # Fast installation is not supported >- enable_fast_install=no >-elif test "$shlibpath_overrides_runpath" = yes || >- test "$enable_shared" = no; then >- # Fast installation is not necessary >- enable_fast_install=needless >-fi >- >-striplib= >-old_striplib= >-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 >-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 >-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then >- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" >- test -z "$striplib" && striplib="$STRIP --strip-unneeded" >-# <PATCH NAME="ISW20030916-1"> >-# <NEW> >-# The following section is a PATCH to overcome the >-# stripped import library issues under cygwin >- case $host_os in >- cygwin*) >- striplib= >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- *) >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- ;; >- esac >-# </NEW> >-# <OLD> >-# AC_MSG_RESULT([yes]) >-# </OLD> >-# </PATCH> >- >-else >-# FIXME - insert some real tests, host_os isn't really good enough >- case $host_os in >- darwin*) >- if test -n "$STRIP" ; then >- striplib="$STRIP -x" >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- ;; >- *) >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- esac >-fi >- >-if test "x$enable_dlopen" != xyes; then >- enable_dlopen=unknown >- enable_dlopen_self=unknown >- enable_dlopen_self_static=unknown >-else >- lt_cv_dlopen=no >- lt_cv_dlopen_libs= >- >- case $host_os in >- beos*) >- lt_cv_dlopen="load_add_on" >- lt_cv_dlopen_libs= >- lt_cv_dlopen_self=yes >- ;; >- >- mingw* | pw32*) >- lt_cv_dlopen="LoadLibrary" >- lt_cv_dlopen_libs= >- ;; >- >- cygwin*) >- lt_cv_dlopen="dlopen" >- lt_cv_dlopen_libs= >- ;; >- >- darwin*) >- # if libdl is installed we need to link against it >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" >-else >- >- lt_cv_dlopen="dyld" >- lt_cv_dlopen_libs= >- lt_cv_dlopen_self=yes >- >-fi >- >- ;; >- >- *) >- echo "$as_me:$LINENO: checking for shl_load" >&5 >-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 >-if test "${ac_cv_func_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define shl_load innocuous_shl_load >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char shl_load (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef shl_load >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_shl_load) || defined (__stub___shl_load) >-choke me >-#else >-char (*f) () = shl_load; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != shl_load; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 >-if test $ac_cv_func_shl_load = yes; then >- lt_cv_dlopen="shl_load" >-else >- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 >-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-int >-main () >-{ >-shl_load (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 >-if test $ac_cv_lib_dld_shl_load = yes; then >- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" >-else >- echo "$as_me:$LINENO: checking for dlopen" >&5 >-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 >-if test "${ac_cv_func_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define dlopen innocuous_dlopen >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char dlopen (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef dlopen >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_dlopen) || defined (__stub___dlopen) >-choke me >-#else >-char (*f) () = dlopen; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != dlopen; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 >-if test $ac_cv_func_dlopen = yes; then >- lt_cv_dlopen="dlopen" >-else >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" >-else >- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 >-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 >-if test "${ac_cv_lib_svld_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lsvld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_svld_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_svld_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 >-if test $ac_cv_lib_svld_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" >-else >- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 >-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_dld_link+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dld_link (); >-int >-main () >-{ >-dld_link (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_dld_link=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_dld_link=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 >-if test $ac_cv_lib_dld_dld_link = yes; then >- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- ;; >- esac >- >- if test "x$lt_cv_dlopen" != xno; then >- enable_dlopen=yes >- else >- enable_dlopen=no >- fi >- >- case $lt_cv_dlopen in >- dlopen) >- save_CPPFLAGS="$CPPFLAGS" >- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" >- >- save_LDFLAGS="$LDFLAGS" >- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" >- >- save_LIBS="$LIBS" >- LIBS="$lt_cv_dlopen_libs $LIBS" >- >- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 >-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 >-if test "${lt_cv_dlopen_self+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$cross_compiling" = yes; then : >- lt_cv_dlopen_self=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 9127 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; >- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; >- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; >- esac >- else : >- # compilation failed >- lt_cv_dlopen_self=no >- fi >-fi >-rm -fr conftest* >- >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 >-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 >- >- if test "x$lt_cv_dlopen_self" = xyes; then >- LDFLAGS="$LDFLAGS $link_static_flag" >- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 >-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 >-if test "${lt_cv_dlopen_self_static+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$cross_compiling" = yes; then : >- lt_cv_dlopen_self_static=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 9225 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; >- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; >- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; >- esac >- else : >- # compilation failed >- lt_cv_dlopen_self_static=no >- fi >-fi >-rm -fr conftest* >- >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 >-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 >- fi >- >- CPPFLAGS="$save_CPPFLAGS" >- LDFLAGS="$save_LDFLAGS" >- LIBS="$save_LIBS" >- ;; >- esac >- >- case $lt_cv_dlopen_self in >- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; >- *) enable_dlopen_self=unknown ;; >- esac >- >- case $lt_cv_dlopen_self_static in >- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; >- *) enable_dlopen_self_static=unknown ;; >- esac >-fi >- >- >-# Report which librarie types wil actually be built >-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 >-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 >-echo "$as_me:$LINENO: result: $can_build_shared" >&5 >-echo "${ECHO_T}$can_build_shared" >&6 >- >-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 >-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 >-test "$can_build_shared" = "no" && enable_shared=no >- >-# On AIX, shared libraries and static libraries use the same namespace, and >-# are all built from PIC. >-case "$host_os" in >-aix3*) >- test "$enable_shared" = yes && enable_static=no >- if test -n "$RANLIB"; then >- archive_cmds="$archive_cmds~\$RANLIB \$lib" >- postinstall_cmds='$RANLIB $lib' >- fi >- ;; >- >-aix4*) >- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then >- test "$enable_shared" = yes && enable_static=no >- fi >- ;; >- darwin* | rhapsody*) >- if test "$GCC" = yes; then >- archive_cmds_need_lc=no >- case "$host_os" in >- rhapsody* | darwin1.[012]) >- allow_undefined_flag='-undefined suppress' >- ;; >- *) # Darwin 1.3 on >- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then >- allow_undefined_flag='-flat_namespace -undefined suppress' >- else >- case ${MACOSX_DEPLOYMENT_TARGET} in >- 10.[012]) >- allow_undefined_flag='-flat_namespace -undefined suppress' >- ;; >- 10.*) >- allow_undefined_flag='-undefined dynamic_lookup' >- ;; >- esac >- fi >- ;; >- esac >- output_verbose_link_cmd='echo' >- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' >- module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' >- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's >- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- hardcode_direct=no >- hardcode_automatic=yes >- hardcode_shlibpath_var=unsupported >- whole_archive_flag_spec='-all_load $convenience' >- link_all_deplibs=yes >- else >- ld_shlibs=no >- fi >- ;; >-esac >-echo "$as_me:$LINENO: result: $enable_shared" >&5 >-echo "${ECHO_T}$enable_shared" >&6 >- >-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 >-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 >-# Make sure either enable_shared or enable_static is yes. >-test "$enable_shared" = yes || enable_static=yes >-echo "$as_me:$LINENO: result: $enable_static" >&5 >-echo "${ECHO_T}$enable_static" >&6 >- >-# The else clause should only fire when bootstrapping the >-# libtool distribution, otherwise you forgot to ship ltmain.sh >-# with your package, and you will get complaints that there are >-# no rules to generate ltmain.sh. >-if test -f "$ltmain"; then >- # See if we are running on zsh, and set the options which allow our commands through >- # without removal of \ escapes. >- if test -n "${ZSH_VERSION+set}" ; then >- setopt NO_GLOB_SUBST >- fi >- # Now quote all the things that may contain metacharacters while being >- # careful not to overquote the AC_SUBSTed values. We take copies of the >- # variables and quote the copies for generation of the libtool script. >- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ >- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ >- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ >- deplibs_check_method reload_flag reload_cmds need_locks \ >- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ >- lt_cv_sys_global_symbol_to_c_name_address \ >- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ >- old_postinstall_cmds old_postuninstall_cmds \ >- compiler \ >- CC \ >- LD \ >- lt_prog_compiler_wl \ >- lt_prog_compiler_pic \ >- lt_prog_compiler_static \ >- lt_prog_compiler_no_builtin_flag \ >- export_dynamic_flag_spec \ >- thread_safe_flag_spec \ >- whole_archive_flag_spec \ >- enable_shared_with_static_runtimes \ >- old_archive_cmds \ >- old_archive_from_new_cmds \ >- predep_objects \ >- postdep_objects \ >- predeps \ >- postdeps \ >- compiler_lib_search_path \ >- archive_cmds \ >- archive_expsym_cmds \ >- postinstall_cmds \ >- postuninstall_cmds \ >- old_archive_from_expsyms_cmds \ >- allow_undefined_flag \ >- no_undefined_flag \ >- export_symbols_cmds \ >- hardcode_libdir_flag_spec \ >- hardcode_libdir_flag_spec_ld \ >- hardcode_libdir_separator \ >- hardcode_automatic \ >- module_cmds \ >- module_expsym_cmds \ >- lt_cv_prog_compiler_c_o \ >- exclude_expsyms \ >- include_expsyms; do >- >- case $var in >- old_archive_cmds | \ >- old_archive_from_new_cmds | \ >- archive_cmds | \ >- archive_expsym_cmds | \ >- module_cmds | \ >- module_expsym_cmds | \ >- old_archive_from_expsyms_cmds | \ >- export_symbols_cmds | \ >- extract_expsyms_cmds | reload_cmds | finish_cmds | \ >- postinstall_cmds | postuninstall_cmds | \ >- old_postinstall_cmds | old_postuninstall_cmds | \ >- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) >- # Double-quote double-evaled strings. >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" >- ;; >- *) >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" >- ;; >- esac >- done >- >- case $lt_echo in >- *'\$0 --fallback-echo"') >- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` >- ;; >- esac >- >-cfgfile="${ofile}T" >- trap "$rm \"$cfgfile\"; exit 1" 1 2 15 >- $rm -f "$cfgfile" >- { echo "$as_me:$LINENO: creating $ofile" >&5 >-echo "$as_me: creating $ofile" >&6;} >- >- cat <<__EOF__ >> "$cfgfile" >-#! $SHELL >- >-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. >-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) >-# NOTE: Changes made to this file will be lost: look at ltmain.sh. >-# >-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 >-# Free Software Foundation, Inc. >-# >-# This file is part of GNU Libtool: >-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 >-# the Free Software Foundation; either version 2 of the License, or >-# (at your option) any later version. >-# >-# This program is distributed in the hope that it will be useful, but >-# WITHOUT ANY WARRANTY; without even the implied warranty of >-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >-# General Public License for more details. >-# >-# You should have received a copy of the GNU General Public License >-# along with this program; if not, write to the Free Software >-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. >-# >-# As a special exception to the GNU General Public License, if you >-# distribute this file as part of a program that contains a >-# configuration script generated by Autoconf, you may include it under >-# the same distribution terms that you use for the rest of that program. >- >-# A sed program that does not truncate output. >-SED=$lt_SED >- >-# Sed that helps us avoid accidentally triggering echo(1) options like -n. >-Xsed="$SED -e s/^X//" >- >-# The HP-UX ksh and POSIX shell print the target directory to stdout >-# if CDPATH is set. >-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi >- >-# The names of the tagged configurations supported by this script. >-available_tags= >- >-# ### BEGIN LIBTOOL CONFIG >- >-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: >- >-# Shell to use when invoking shell scripts. >-SHELL=$lt_SHELL >- >-# Whether or not to build shared libraries. >-build_libtool_libs=$enable_shared >- >-# Whether or not to build static libraries. >-build_old_libs=$enable_static >- >-# Whether or not to add -lc for building shared libraries. >-build_libtool_need_lc=$archive_cmds_need_lc >- >-# Whether or not to disallow shared libs when runtime libs are static >-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes >- >-# Whether or not to optimize for fast installation. >-fast_install=$enable_fast_install >- >-# The host system. >-host_alias=$host_alias >-host=$host >- >-# An echo program that does not interpret backslashes. >-echo=$lt_echo >- >-# The archiver. >-AR=$lt_AR >-AR_FLAGS=$lt_AR_FLAGS >- >-# A C compiler. >-LTCC=$lt_LTCC >- >-# A language-specific compiler. >-CC=$lt_compiler >- >-# Is the compiler the GNU C compiler? >-with_gcc=$GCC >- >-# An ERE matcher. >-EGREP=$lt_EGREP >- >-# The linker used to build libraries. >-LD=$lt_LD >- >-# Whether we need hard or soft links. >-LN_S=$lt_LN_S >- >-# A BSD-compatible nm program. >-NM=$lt_NM >- >-# A symbol stripping program >-STRIP=$STRIP >- >-# Used to examine libraries when file_magic_cmd begins "file" >-MAGIC_CMD=$MAGIC_CMD >- >-# Used on cygwin: DLL creation program. >-DLLTOOL="$DLLTOOL" >- >-# Used on cygwin: object dumper. >-OBJDUMP="$OBJDUMP" >- >-# Used on cygwin: assembler. >-AS="$AS" >- >-# The name of the directory that contains temporary libtool files. >-objdir=$objdir >- >-# How to create reloadable object files. >-reload_flag=$lt_reload_flag >-reload_cmds=$lt_reload_cmds >- >-# How to pass a linker flag through the compiler. >-wl=$lt_lt_prog_compiler_wl >- >-# Object file suffix (normally "o"). >-objext="$ac_objext" >- >-# Old archive suffix (normally "a"). >-libext="$libext" >- >-# Shared library suffix (normally ".so"). >-shrext='$shrext' >- >-# Executable file suffix (normally ""). >-exeext="$exeext" >- >-# Additional compiler flags for building library objects. >-pic_flag=$lt_lt_prog_compiler_pic >-pic_mode=$pic_mode >- >-# What is the maximum length of a command? >-max_cmd_len=$lt_cv_sys_max_cmd_len >- >-# Does compiler simultaneously support -c and -o options? >-compiler_c_o=$lt_lt_cv_prog_compiler_c_o >- >-# Must we lock files when doing compilation ? >-need_locks=$lt_need_locks >- >-# Do we need the lib prefix for modules? >-need_lib_prefix=$need_lib_prefix >- >-# Do we need a version for libraries? >-need_version=$need_version >- >-# Whether dlopen is supported. >-dlopen_support=$enable_dlopen >- >-# Whether dlopen of programs is supported. >-dlopen_self=$enable_dlopen_self >- >-# Whether dlopen of statically linked programs is supported. >-dlopen_self_static=$enable_dlopen_self_static >- >-# Compiler flag to prevent dynamic linking. >-link_static_flag=$lt_lt_prog_compiler_static >- >-# Compiler flag to turn off builtin functions. >-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag >- >-# Compiler flag to allow reflexive dlopens. >-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec >- >-# Compiler flag to generate shared objects directly from archives. >-whole_archive_flag_spec=$lt_whole_archive_flag_spec >- >-# Compiler flag to generate thread-safe objects. >-thread_safe_flag_spec=$lt_thread_safe_flag_spec >- >-# Library versioning type. >-version_type=$version_type >- >-# Format of library name prefix. >-libname_spec=$lt_libname_spec >- >-# List of archive names. First name is the real one, the rest are links. >-# The last name is the one that the linker finds with -lNAME. >-library_names_spec=$lt_library_names_spec >- >-# The coded name of the library, if different from the real name. >-soname_spec=$lt_soname_spec >- >-# Commands used to build and install an old-style archive. >-RANLIB=$lt_RANLIB >-old_archive_cmds=$lt_old_archive_cmds >-old_postinstall_cmds=$lt_old_postinstall_cmds >-old_postuninstall_cmds=$lt_old_postuninstall_cmds >- >-# Create an old-style archive from a shared archive. >-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds >- >-# Create a temporary old-style archive to link instead of a shared archive. >-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds >- >-# Commands used to build and install a shared archive. >-archive_cmds=$lt_archive_cmds >-archive_expsym_cmds=$lt_archive_expsym_cmds >-postinstall_cmds=$lt_postinstall_cmds >-postuninstall_cmds=$lt_postuninstall_cmds >- >-# Commands used to build a loadable module (assumed same as above if empty) >-module_cmds=$lt_module_cmds >-module_expsym_cmds=$lt_module_expsym_cmds >- >-# Commands to strip libraries. >-old_striplib=$lt_old_striplib >-striplib=$lt_striplib >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predep_objects=$lt_predep_objects >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdep_objects=$lt_postdep_objects >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predeps=$lt_predeps >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdeps=$lt_postdeps >- >-# The library search path used internally by the compiler when linking >-# a shared library. >-compiler_lib_search_path=$lt_compiler_lib_search_path >- >-# Method to check whether dependent libraries are shared objects. >-deplibs_check_method=$lt_deplibs_check_method >- >-# Command to use when deplibs_check_method == file_magic. >-file_magic_cmd=$lt_file_magic_cmd >- >-# Flag that allows shared libraries with undefined symbols to be built. >-allow_undefined_flag=$lt_allow_undefined_flag >- >-# Flag that forces no undefined symbols. >-no_undefined_flag=$lt_no_undefined_flag >- >-# Commands used to finish a libtool library installation in a directory. >-finish_cmds=$lt_finish_cmds >- >-# Same as above, but a single script fragment to be evaled but not shown. >-finish_eval=$lt_finish_eval >- >-# Take the output of nm and produce a listing of raw symbols and C names. >-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe >- >-# Transform the output of nm in a proper C declaration >-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl >- >-# Transform the output of nm in a C name address pair >-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address >- >-# This is the shared library runtime path variable. >-runpath_var=$runpath_var >- >-# This is the shared library path variable. >-shlibpath_var=$shlibpath_var >- >-# Is shlibpath searched before the hard-coded library search path? >-shlibpath_overrides_runpath=$shlibpath_overrides_runpath >- >-# How to hardcode a shared library path into an executable. >-hardcode_action=$hardcode_action >- >-# Whether we should hardcode library paths into libraries. >-hardcode_into_libs=$hardcode_into_libs >- >-# Flag to hardcode \$libdir into a binary during linking. >-# This must work even if \$libdir does not exist. >-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec >- >-# If ld is used when linking, flag to hardcode \$libdir into >-# a binary during linking. This must work even if \$libdir does >-# not exist. >-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld >- >-# Whether we need a single -rpath flag with a separated argument. >-hardcode_libdir_separator=$lt_hardcode_libdir_separator >- >-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the >-# resulting binary. >-hardcode_direct=$hardcode_direct >- >-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the >-# resulting binary. >-hardcode_minus_L=$hardcode_minus_L >- >-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into >-# the resulting binary. >-hardcode_shlibpath_var=$hardcode_shlibpath_var >- >-# Set to yes if building a shared library automatically hardcodes DIR into the library >-# and all subsequent libraries and executables linked against it. >-hardcode_automatic=$hardcode_automatic >- >-# Variables whose values should be saved in libtool wrapper scripts and >-# restored at relink time. >-variables_saved_for_relink="$variables_saved_for_relink" >- >-# Whether libtool must link a program against all its dependency libraries. >-link_all_deplibs=$link_all_deplibs >- >-# Compile-time system search path for libraries >-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec >- >-# Run-time system search path for libraries >-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec >- >-# Fix the shell variable \$srcfile for the compiler. >-fix_srcfile_path="$fix_srcfile_path" >- >-# Set to yes if exported symbols are required. >-always_export_symbols=$always_export_symbols >- >-# The commands to list exported symbols. >-export_symbols_cmds=$lt_export_symbols_cmds >- >-# The commands to extract the exported symbol list from a shared archive. >-extract_expsyms_cmds=$lt_extract_expsyms_cmds >- >-# Symbols that should not be listed in the preloaded symbols. >-exclude_expsyms=$lt_exclude_expsyms >- >-# Symbols that must always be exported. >-include_expsyms=$lt_include_expsyms >- >-# ### END LIBTOOL CONFIG >- >-__EOF__ >- >- >- case $host_os in >- aix3*) >- cat <<\EOF >> "$cfgfile" >- >-# AIX sometimes has problems with the GCC collect2 program. For some >-# reason, if we set the COLLECT_NAMES environment variable, the problems >-# vanish in a puff of smoke. >-if test "X${COLLECT_NAMES+set}" != Xset; then >- COLLECT_NAMES= >- export COLLECT_NAMES >-fi >-EOF >- ;; >- esac >- >- # We use sed instead of cat because bash on DJGPP gets confused if >- # if finds mixed CR/LF and LF-only lines. Since sed operates in >- # text mode, it properly converts lines to CR/LF. This bash problem >- # is reportedly fixed, but why not run on old versions too? >- sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) >- >- mv -f "$cfgfile" "$ofile" || \ >- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") >- chmod +x "$ofile" >- >-else >- # If there is no Makefile yet, we rely on a make rule to execute >- # `config.status --recheck' to rerun these tests and create the >- # libtool script then. >- test -f Makefile && make "$ltmain" >-fi >- >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >-CC="$lt_save_CC" >- >- >-# Check whether --with-tags or --without-tags was given. >-if test "${with_tags+set}" = set; then >- withval="$with_tags" >- tagnames="$withval" >-fi; >- >-if test -f "$ltmain" && test -n "$tagnames"; then >- if test ! -f "${ofile}"; then >- { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 >-echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} >- fi >- >- if test -z "$LTCC"; then >- eval "`$SHELL ${ofile} --config | grep '^LTCC='`" >- if test -z "$LTCC"; then >- { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 >-echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} >- else >- { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 >-echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} >- fi >- fi >- >- # Extract list of available tagged configurations in $ofile. >- # Note that this assumes the entire list is on one line. >- available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` >- >- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," >- for tagname in $tagnames; do >- IFS="$lt_save_ifs" >- # Check whether tagname contains only valid characters >- case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in >- "") ;; >- *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 >-echo "$as_me: error: invalid tag name: $tagname" >&2;} >- { (exit 1); exit 1; }; } >- ;; >- esac >- >- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null >- then >- { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 >-echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} >- { (exit 1); exit 1; }; } >- fi >- >- # Update the list of available tags. >- if test -n "$tagname"; then >- echo appending configuration tag \"$tagname\" to $ofile >- >- case $tagname in >- CXX) >- if test -n "$CXX" && test "X$CXX" != "Xno"; then >- ac_ext=cc >-ac_cpp='$CXXCPP $CPPFLAGS' >-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu >- >- >- >- >-archive_cmds_need_lc_CXX=no >-allow_undefined_flag_CXX= >-always_export_symbols_CXX=no >-archive_expsym_cmds_CXX= >-export_dynamic_flag_spec_CXX= >-hardcode_direct_CXX=no >-hardcode_libdir_flag_spec_CXX= >-hardcode_libdir_flag_spec_ld_CXX= >-hardcode_libdir_separator_CXX= >-hardcode_minus_L_CXX=no >-hardcode_automatic_CXX=no >-module_cmds_CXX= >-module_expsym_cmds_CXX= >-link_all_deplibs_CXX=unknown >-old_archive_cmds_CXX=$old_archive_cmds >-no_undefined_flag_CXX= >-whole_archive_flag_spec_CXX= >-enable_shared_with_static_runtimes_CXX=no >- >-# Dependencies to place before and after the object being linked: >-predep_objects_CXX= >-postdep_objects_CXX= >-predeps_CXX= >-postdeps_CXX= >-compiler_lib_search_path_CXX= >- >-# Source file extension for C++ test sources. >-ac_ext=cc >- >-# Object file extension for compiled C++ test sources. >-objext=o >-objext_CXX=$objext >- >-# Code to be used in simple compile tests >-lt_simple_compile_test_code="int some_variable = 0;\n" >- >-# Code to be used in simple link tests >-lt_simple_link_test_code='int main(int, char *) { return(0); }\n' >- >-# ltmain only uses $CC for tagged configurations so make sure $CC is set. >- >-# If no C compiler was specified, use CC. >-LTCC=${LTCC-"$CC"} >- >-# Allow CC to be a program name with arguments. >-compiler=$CC >- >- >-# Allow CC to be a program name with arguments. >-lt_save_CC=$CC >-lt_save_LD=$LD >-lt_save_GCC=$GCC >-GCC=$GXX >-lt_save_with_gnu_ld=$with_gnu_ld >-lt_save_path_LD=$lt_cv_path_LD >-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then >- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx >-else >- unset lt_cv_prog_gnu_ld >-fi >-if test -n "${lt_cv_path_LDCXX+set}"; then >- lt_cv_path_LD=$lt_cv_path_LDCXX >-else >- unset lt_cv_path_LD >-fi >-test -z "${LDCXX+set}" || LD=$LDCXX >-CC=${CXX-"c++"} >-compiler=$CC >-compiler_CXX=$CC >-cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` >- >-# We don't want -fno-exception wen compiling C++ code, so set the >-# no_builtin_flag separately >-if test "$GXX" = yes; then >- lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' >-else >- lt_prog_compiler_no_builtin_flag_CXX= >-fi >- >-if test "$GXX" = yes; then >- # Set up default GNU C++ configuration >- >- >-# Check whether --with-gnu-ld or --without-gnu-ld was given. >-if test "${with_gnu_ld+set}" = set; then >- withval="$with_gnu_ld" >- test "$withval" = no || with_gnu_ld=yes >-else >- with_gnu_ld=no >-fi; >-ac_prog=ld >-if test "$GCC" = yes; then >- # Check if gcc -print-prog-name=ld gives a path. >- echo "$as_me:$LINENO: checking for ld used by $CC" >&5 >-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 >- case $host in >- *-*-mingw*) >- # gcc leaves a trailing carriage return which upsets mingw >- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; >- *) >- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; >- esac >- case $ac_prog in >- # Accept absolute paths. >- [\\/]* | ?:[\\/]*) >- re_direlt='/[^/][^/]*/\.\./' >- # Canonicalize the pathname of ld >- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` >- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do >- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` >- done >- test -z "$LD" && LD="$ac_prog" >- ;; >- "") >- # If it fails, then pretend we aren't using GCC. >- ac_prog=ld >- ;; >- *) >- # If it is relative, then search for the first ld in PATH. >- with_gnu_ld=unknown >- ;; >- esac >-elif test "$with_gnu_ld" = yes; then >- echo "$as_me:$LINENO: checking for GNU ld" >&5 >-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 >-else >- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 >-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 >-fi >-if test "${lt_cv_path_LD+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -z "$LD"; then >- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in $PATH; do >- IFS="$lt_save_ifs" >- test -z "$ac_dir" && ac_dir=. >- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then >- lt_cv_path_LD="$ac_dir/$ac_prog" >- # Check to see if the program is GNU ld. I'd rather use --version, >- # but apparently some GNU ld's only accept -v. >- # Break only if it was the GNU/non-GNU ld that we prefer. >- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in >- *GNU* | *'with BFD'*) >- test "$with_gnu_ld" != no && break >- ;; >- *) >- test "$with_gnu_ld" != yes && break >- ;; >- esac >- fi >- done >- IFS="$lt_save_ifs" >-else >- lt_cv_path_LD="$LD" # Let the user override the test with a path. >-fi >-fi >- >-LD="$lt_cv_path_LD" >-if test -n "$LD"; then >- echo "$as_me:$LINENO: result: $LD" >&5 >-echo "${ECHO_T}$LD" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 >-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} >- { (exit 1); exit 1; }; } >-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 >-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 >-if test "${lt_cv_prog_gnu_ld+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # I'd rather use --version here, but apparently some GNU ld's only accept -v. >-case `$LD -v 2>&1 </dev/null` in >-*GNU* | *'with BFD'*) >- lt_cv_prog_gnu_ld=yes >- ;; >-*) >- lt_cv_prog_gnu_ld=no >- ;; >-esac >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 >-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 >-with_gnu_ld=$lt_cv_prog_gnu_ld >- >- >- >- # Check if GNU C++ uses GNU ld as the underlying linker, since the >- # archiving commands below assume that GNU ld is being used. >- if test "$with_gnu_ld" = yes; then >- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- >- hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' >- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' >- >- # If archive_cmds runs LD, not CC, wlarc should be empty >- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to >- # investigate it a little bit more. (MM) >- wlarc='${wl}' >- >- # ancient GNU ld didn't support --whole-archive et. al. >- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ >- grep 'no-whole-archive' > /dev/null; then >- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' >- else >- whole_archive_flag_spec_CXX= >- fi >- else >- with_gnu_ld=no >- wlarc= >- >- # A generic and very simple default shared library creation >- # command for GNU C++ for the case where it uses the native >- # linker, instead of GNU ld. If possible, this setting should >- # overridden to take advantage of the native linker features on >- # the platform it is being used on. >- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' >- fi >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' >- >-else >- GXX=no >- with_gnu_ld=no >- wlarc= >-fi >- >-# PORTME: fill in a description of your system's C++ link characteristics >-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 >-ld_shlibs_CXX=yes >-case $host_os in >- aix3*) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- aix4* | aix5*) >- if test "$host_cpu" = ia64; then >- # On IA64, the linker does run time linking by default, so we don't >- # have to do anything special. >- aix_use_runtimelinking=no >- exp_sym_flag='-Bexport' >- no_entry_flag="" >- else >- aix_use_runtimelinking=no >- >- # Test if we are trying to use run time linking or normal >- # AIX style linking. If -brtl is somewhere in LDFLAGS, we >- # need to do runtime linking. >- case $host_os in aix4.[23]|aix4.[23].*|aix5*) >- for ld_flag in $LDFLAGS; do >- case $ld_flag in >- *-brtl*) >- aix_use_runtimelinking=yes >- break >- ;; >- esac >- done >- esac >- >- exp_sym_flag='-bexport' >- no_entry_flag='-bnoentry' >- fi >- >- # When large executables or shared objects are built, AIX ld can >- # have problems creating the table of contents. If linking a library >- # or program results in "error TOC overflow" add -mminimal-toc to >- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not >- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. >- >- archive_cmds_CXX='' >- hardcode_direct_CXX=yes >- hardcode_libdir_separator_CXX=':' >- link_all_deplibs_CXX=yes >- >- if test "$GXX" = yes; then >- case $host_os in aix4.012|aix4.012.*) >- # We only want to do this on AIX 4.2 and lower, the check >- # below for broken collect2 doesn't work under 4.3+ >- collect2name=`${CC} -print-prog-name=collect2` >- if test -f "$collect2name" && \ >- strings "$collect2name" | grep resolve_lib_name >/dev/null >- then >- # We have reworked collect2 >- hardcode_direct_CXX=yes >- else >- # We have old collect2 >- hardcode_direct_CXX=unsupported >- # It fails to find uninstalled libraries when the uninstalled >- # path is not listed in the libpath. Setting hardcode_minus_L >- # to unsupported forces relinking >- hardcode_minus_L_CXX=yes >- hardcode_libdir_flag_spec_CXX='-L$libdir' >- hardcode_libdir_separator_CXX= >- fi >- esac >- shared_flag='-shared' >- else >- # not using gcc >- if test "$host_cpu" = ia64; then >- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release >- # chokes on -Wl,-G. The following line is correct: >- shared_flag='-G' >- else >- if test "$aix_use_runtimelinking" = yes; then >- shared_flag='${wl}-G' >- else >- shared_flag='${wl}-bM:SRE' >- fi >- fi >- fi >- >- # It seems that -bexpall does not export symbols beginning with >- # underscore (_), so it is better to generate a list of symbols to export. >- always_export_symbols_CXX=yes >- if test "$aix_use_runtimelinking" = yes; then >- # Warning - without using the other runtime loading flags (-brtl), >- # -berok will link without error, but may produce a broken library. >- allow_undefined_flag_CXX='-berok' >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" >- >- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" >- else >- if test "$host_cpu" = ia64; then >- hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' >- allow_undefined_flag_CXX="-z nodefs" >- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" >- else >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" >- # Warning - without using the other run time loading flags, >- # -berok will link without error, but may produce a broken library. >- no_undefined_flag_CXX=' ${wl}-bernotok' >- allow_undefined_flag_CXX=' ${wl}-berok' >- # -bexpall does not export symbols beginning with underscore (_) >- always_export_symbols_CXX=yes >- # Exported symbols can be pulled into shared objects from archives >- whole_archive_flag_spec_CXX=' ' >- archive_cmds_need_lc_CXX=yes >- # This is similar to how AIX traditionally builds it's shared libraries. >- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' >- fi >- fi >- ;; >- chorus*) >- case $cc_basename in >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- esac >- ;; >- >- cygwin* | mingw* | pw32*) >- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, >- # as there is no search path for DLLs. >- hardcode_libdir_flag_spec_CXX='-L$libdir' >- allow_undefined_flag_CXX=unsupported >- always_export_symbols_CXX=no >- enable_shared_with_static_runtimes_CXX=yes >- >- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then >- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- # If the export-symbols file already is a .def file (1st line >- # is EXPORTS), use it as is; otherwise, prepend... >- archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then >- cp $export_symbols $output_objdir/$soname.def; >- else >- echo EXPORTS > $output_objdir/$soname.def; >- cat $export_symbols >> $output_objdir/$soname.def; >- fi~ >- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- else >- ld_shlibs_CXX=no >- fi >- ;; >- >- darwin* | rhapsody*) >- if test "$GXX" = yes; then >- archive_cmds_need_lc_CXX=no >- case "$host_os" in >- rhapsody* | darwin1.[012]) >- allow_undefined_flag_CXX='-undefined suppress' >- ;; >- *) # Darwin 1.3 on >- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then >- allow_undefined_flag_CXX='-flat_namespace -undefined suppress' >- else >- case ${MACOSX_DEPLOYMENT_TARGET} in >- 10.[012]) >- allow_undefined_flag_CXX='-flat_namespace -undefined suppress' >- ;; >- 10.*) >- allow_undefined_flag_CXX='-undefined dynamic_lookup' >- ;; >- esac >- fi >- ;; >- esac >- lt_int_apple_cc_single_mod=no >- output_verbose_link_cmd='echo' >- if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then >- lt_int_apple_cc_single_mod=yes >- fi >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- else >- archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- fi >- module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' >- >- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- else >- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- fi >- module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- hardcode_direct_CXX=no >- hardcode_automatic_CXX=yes >- hardcode_shlibpath_var_CXX=unsupported >- whole_archive_flag_spec_CXX='-all_load $convenience' >- link_all_deplibs_CXX=yes >- else >- ld_shlibs_CXX=no >- fi >- ;; >- >- dgux*) >- case $cc_basename in >- ec++) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- ghcx) >- # Green Hills C++ Compiler >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- esac >- ;; >- freebsd12*) >- # C++ shared libraries reported to be fairly broken before switch to ELF >- ld_shlibs_CXX=no >- ;; >- freebsd-elf*) >- archive_cmds_need_lc_CXX=no >- ;; >- freebsd* | kfreebsd*-gnu) >- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF >- # conventions >- ld_shlibs_CXX=yes >- ;; >- gnu*) >- ;; >- hpux9*) >- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator_CXX=: >- export_dynamic_flag_spec_CXX='${wl}-E' >- hardcode_direct_CXX=yes >- hardcode_minus_L_CXX=yes # Not in the search PATH, >- # but as the default >- # location of the library. >- >- case $cc_basename in >- CC) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- aCC) >- archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- ;; >- *) >- if test "$GXX" = yes; then >- archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- else >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- fi >- ;; >- esac >- ;; >- hpux10*|hpux11*) >- if test $with_gnu_ld = no; then >- case "$host_cpu" in >- hppa*64*) >- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' >- hardcode_libdir_flag_spec_ld_CXX='+b $libdir' >- hardcode_libdir_separator_CXX=: >- ;; >- ia64*) >- hardcode_libdir_flag_spec_CXX='-L$libdir' >- ;; >- *) >- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator_CXX=: >- export_dynamic_flag_spec_CXX='${wl}-E' >- ;; >- esac >- fi >- case "$host_cpu" in >- hppa*64*) >- hardcode_direct_CXX=no >- hardcode_shlibpath_var_CXX=no >- ;; >- ia64*) >- hardcode_direct_CXX=no >- hardcode_shlibpath_var_CXX=no >- hardcode_minus_L_CXX=yes # Not in the search PATH, >- # but as the default >- # location of the library. >- ;; >- *) >- hardcode_direct_CXX=yes >- hardcode_minus_L_CXX=yes # Not in the search PATH, >- # but as the default >- # location of the library. >- ;; >- esac >- >- case $cc_basename in >- CC) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- aCC) >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' >- ;; >- *) >- archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' >- ;; >- esac >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- ;; >- *) >- if test "$GXX" = yes; then >- if test $with_gnu_ld = no; then >- case "$host_cpu" in >- ia64*|hppa*64*) >- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' >- ;; >- *) >- archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' >- ;; >- esac >- fi >- else >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- fi >- ;; >- esac >- ;; >- irix5* | irix6*) >- case $cc_basename in >- CC) >- # SGI C++ >- archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' >- >- # Archives containing C++ object files must be created using >- # "CC -ar", where "CC" is the IRIX C++ compiler. This is >- # necessary to make sure instantiated templates are included >- # in the archive. >- old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' >- ;; >- *) >- if test "$GXX" = yes; then >- if test "$with_gnu_ld" = no; then >- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' >- else >- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' >- fi >- fi >- link_all_deplibs_CXX=yes >- ;; >- esac >- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_CXX=: >- ;; >- linux*) >- case $cc_basename in >- KCC) >- # Kuck and Associates, Inc. (KAI) C++ Compiler >- >- # KCC will only create a shared library if the output file >- # ends with ".so" (or ".sl" for HP-UX), so rename the library >- # to its proper name (with version) after linking. >- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' >- archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- >- hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' >- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' >- >- # Archives containing C++ object files must be created using >- # "CC -Bstatic", where "CC" is the KAI C++ compiler. >- old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' >- ;; >- icpc) >- # Intel C++ >- with_gnu_ld=yes >- archive_cmds_need_lc_CXX=no >- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' >- export_dynamic_flag_spec_CXX='${wl}--export-dynamic' >- whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' >- ;; >- cxx) >- # Compaq C++ >- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' >- >- runpath_var=LD_RUN_PATH >- hardcode_libdir_flag_spec_CXX='-rpath $libdir' >- hardcode_libdir_separator_CXX=: >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- ;; >- esac >- ;; >- lynxos*) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- m88k*) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- mvs*) >- case $cc_basename in >- cxx) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- esac >- ;; >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' >- wlarc= >- hardcode_libdir_flag_spec_CXX='-R$libdir' >- hardcode_direct_CXX=yes >- hardcode_shlibpath_var_CXX=no >- fi >- # Workaround some broken pre-1.5 toolchains >- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' >- ;; >- osf3*) >- case $cc_basename in >- KCC) >- # Kuck and Associates, Inc. (KAI) C++ Compiler >- >- # KCC will only create a shared library if the output file >- # ends with ".so" (or ".sl" for HP-UX), so rename the library >- # to its proper name (with version) after linking. >- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' >- >- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' >- hardcode_libdir_separator_CXX=: >- >- # Archives containing C++ object files must be created using >- # "CC -Bstatic", where "CC" is the KAI C++ compiler. >- old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' >- >- ;; >- RCC) >- # Rational C++ 2.4.1 >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- cxx) >- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' >- >- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_CXX=: >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- ;; >- *) >- if test "$GXX" = yes && test "$with_gnu_ld" = no; then >- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' >- >- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_CXX=: >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' >- >- else >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- fi >- ;; >- esac >- ;; >- osf4* | osf5*) >- case $cc_basename in >- KCC) >- # Kuck and Associates, Inc. (KAI) C++ Compiler >- >- # KCC will only create a shared library if the output file >- # ends with ".so" (or ".sl" for HP-UX), so rename the library >- # to its proper name (with version) after linking. >- archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' >- >- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' >- hardcode_libdir_separator_CXX=: >- >- # Archives containing C++ object files must be created using >- # the KAI C++ compiler. >- old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' >- ;; >- RCC) >- # Rational C++ 2.4.1 >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- cxx) >- allow_undefined_flag_CXX=' -expect_unresolved \*' >- archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' >- archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ >- echo "-hidden">> $lib.exp~ >- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ >- $rm $lib.exp' >- >- hardcode_libdir_flag_spec_CXX='-rpath $libdir' >- hardcode_libdir_separator_CXX=: >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- ;; >- *) >- if test "$GXX" = yes && test "$with_gnu_ld" = no; then >- allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' >- >- hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_CXX=: >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' >- >- else >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- fi >- ;; >- esac >- ;; >- psos*) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- sco*) >- archive_cmds_need_lc_CXX=no >- case $cc_basename in >- CC) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- esac >- ;; >- sunos4*) >- case $cc_basename in >- CC) >- # Sun C++ 4.x >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- lcc) >- # Lucid >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- esac >- ;; >- solaris*) >- case $cc_basename in >- CC) >- # Sun C++ 4.2, 5.x and Centerline C++ >- no_undefined_flag_CXX=' -zdefs' >- archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' >- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' >- >- hardcode_libdir_flag_spec_CXX='-R$libdir' >- hardcode_shlibpath_var_CXX=no >- case $host_os in >- solaris2.0-5 | solaris2.0-5.*) ;; >- *) >- # The C++ compiler is used as linker so we must use $wl >- # flag to pass the commands to the underlying system >- # linker. >- # Supported since Solaris 2.6 (maybe 2.5.1?) >- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' >- ;; >- esac >- link_all_deplibs_CXX=yes >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- # >- # There doesn't appear to be a way to prevent this compiler from >- # explicitly linking system object files so we need to strip them >- # from the output so that they don't get included in the library >- # dependencies. >- output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' >- >- # Archives containing C++ object files must be created using >- # "CC -xar", where "CC" is the Sun C++ compiler. This is >- # necessary to make sure instantiated templates are included >- # in the archive. >- old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' >- ;; >- gcx) >- # Green Hills C++ Compiler >- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' >- >- # The C++ compiler must be used to create the archive. >- old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' >- ;; >- *) >- # GNU C++ compiler with Solaris linker >- if test "$GXX" = yes && test "$with_gnu_ld" = no; then >- no_undefined_flag_CXX=' ${wl}-z ${wl}defs' >- if $CC --version | grep -v '^2\.7' > /dev/null; then >- archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' >- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" >- else >- # g++ 2.7 appears to require `-G' NOT `-shared' on this >- # platform. >- archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' >- archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' >- >- # Commands to make compiler produce verbose output that lists >- # what "hidden" libraries, object files and flags are used when >- # linking a shared library. >- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" >- fi >- >- hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' >- fi >- ;; >- esac >- ;; >- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) >- archive_cmds_need_lc_CXX=no >- ;; >- tandem*) >- case $cc_basename in >- NCC) >- # NonStop-UX NCC 3.20 >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- esac >- ;; >- vxworks*) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >- *) >- # FIXME: insert proper C++ library support >- ld_shlibs_CXX=no >- ;; >-esac >-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 >-echo "${ECHO_T}$ld_shlibs_CXX" >&6 >-test "$ld_shlibs_CXX" = no && can_build_shared=no >- >-GCC_CXX="$GXX" >-LD_CXX="$LD" >- >-## CAVEAT EMPTOR: >-## There is no encapsulation within the following macros, do not change >-## the running order or otherwise move them around unless you know exactly >-## what you are doing... >- >-cat > conftest.$ac_ext <<EOF >-class Foo >-{ >-public: >- Foo (void) { a = 0; } >-private: >- int a; >-}; >-EOF >- >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- # Parse the compiler output and extract the necessary >- # objects, libraries and library flags. >- >- # Sentinel used to keep track of whether or not we are before >- # the conftest object file. >- pre_test_object_deps_done=no >- >- # The `*' in the case matches for architectures that use `case' in >- # $output_verbose_cmd can trigger glob expansion during the loop >- # eval without this substitution. >- output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" >- >- for p in `eval $output_verbose_link_cmd`; do >- case $p in >- >- -L* | -R* | -l*) >- # Some compilers place space between "-{L,R}" and the path. >- # Remove the space. >- if test $p = "-L" \ >- || test $p = "-R"; then >- prev=$p >- continue >- else >- prev= >- fi >- >- if test "$pre_test_object_deps_done" = no; then >- case $p in >- -L* | -R*) >- # Internal compiler library paths should come after those >- # provided the user. The postdeps already come after the >- # user supplied libs so there is no need to process them. >- if test -z "$compiler_lib_search_path_CXX"; then >- compiler_lib_search_path_CXX="${prev}${p}" >- else >- compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" >- fi >- ;; >- # The "-l" case would never come before the object being >- # linked, so don't bother handling this case. >- esac >- else >- if test -z "$postdeps_CXX"; then >- postdeps_CXX="${prev}${p}" >- else >- postdeps_CXX="${postdeps_CXX} ${prev}${p}" >- fi >- fi >- ;; >- >- *.$objext) >- # This assumes that the test object file only shows up >- # once in the compiler output. >- if test "$p" = "conftest.$objext"; then >- pre_test_object_deps_done=yes >- continue >- fi >- >- if test "$pre_test_object_deps_done" = no; then >- if test -z "$predep_objects_CXX"; then >- predep_objects_CXX="$p" >- else >- predep_objects_CXX="$predep_objects_CXX $p" >- fi >- else >- if test -z "$postdep_objects_CXX"; then >- postdep_objects_CXX="$p" >- else >- postdep_objects_CXX="$postdep_objects_CXX $p" >- fi >- fi >- ;; >- >- *) ;; # Ignore the rest. >- >- esac >- done >- >- # Clean up. >- rm -f a.out a.exe >-else >- echo "libtool.m4: error: problem compiling CXX test program" >-fi >- >-$rm -f confest.$objext >- >-case " $postdeps_CXX " in >-*" -lc "*) archive_cmds_need_lc_CXX=no ;; >-esac >- >-lt_prog_compiler_wl_CXX= >-lt_prog_compiler_pic_CXX= >-lt_prog_compiler_static_CXX= >- >-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 >-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 >- >- # C++ specific cases for pic, static, wl, etc. >- if test "$GXX" = yes; then >- lt_prog_compiler_wl_CXX='-Wl,' >- lt_prog_compiler_static_CXX='-static' >- >- case $host_os in >- aix*) >- # All AIX code is PIC. >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static_CXX='-Bstatic' >- fi >- ;; >- amigaos*) >- # FIXME: we need at least 68020 code to build shared libraries, but >- # adding the `-m68020' flag to GCC prevents building anything better, >- # like `-m68040'. >- lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' >- ;; >- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) >- # PIC is the default for these OSes. >- ;; >- mingw* | os2* | pw32*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic_CXX='-DDLL_EXPORT' >- ;; >- darwin* | rhapsody*) >- # PIC is the default on this platform >- # Common symbols not allowed in MH_DYLIB files >- lt_prog_compiler_pic_CXX='-fno-common' >- ;; >- *djgpp*) >- # DJGPP does not support shared libraries at all >- lt_prog_compiler_pic_CXX= >- ;; >- sysv4*MP*) >- if test -d /usr/nec; then >- lt_prog_compiler_pic_CXX=-Kconform_pic >- fi >- ;; >- hpux*) >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- ;; >- *) >- lt_prog_compiler_pic_CXX='-fPIC' >- ;; >- esac >- ;; >- *) >- lt_prog_compiler_pic_CXX='-fPIC' >- ;; >- esac >- else >- case $host_os in >- aix4* | aix5*) >- # All AIX code is PIC. >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static_CXX='-Bstatic' >- else >- lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' >- fi >- ;; >- chorus*) >- case $cc_basename in >- cxch68) >- # Green Hills C++ Compiler >- # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" >- ;; >- esac >- ;; >- dgux*) >- case $cc_basename in >- ec++) >- lt_prog_compiler_pic_CXX='-KPIC' >- ;; >- ghcx) >- # Green Hills C++ Compiler >- lt_prog_compiler_pic_CXX='-pic' >- ;; >- *) >- ;; >- esac >- ;; >- freebsd* | kfreebsd*-gnu) >- # FreeBSD uses GNU C++ >- ;; >- hpux9* | hpux10* | hpux11*) >- case $cc_basename in >- CC) >- lt_prog_compiler_wl_CXX='-Wl,' >- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" >- if test "$host_cpu" != ia64; then >- lt_prog_compiler_pic_CXX='+Z' >- fi >- ;; >- aCC) >- lt_prog_compiler_wl_CXX='-Wl,' >- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic_CXX='+Z' >- ;; >- esac >- ;; >- *) >- ;; >- esac >- ;; >- irix5* | irix6* | nonstopux*) >- case $cc_basename in >- CC) >- lt_prog_compiler_wl_CXX='-Wl,' >- lt_prog_compiler_static_CXX='-non_shared' >- # CC pic flag -KPIC is the default. >- ;; >- *) >- ;; >- esac >- ;; >- linux*) >- case $cc_basename in >- KCC) >- # KAI C++ Compiler >- lt_prog_compiler_wl_CXX='--backend -Wl,' >- lt_prog_compiler_pic_CXX='-fPIC' >- ;; >- icpc) >- # Intel C++ >- lt_prog_compiler_wl_CXX='-Wl,' >- lt_prog_compiler_pic_CXX='-KPIC' >- lt_prog_compiler_static_CXX='-static' >- ;; >- cxx) >- # Compaq C++ >- # Make sure the PIC flag is empty. It appears that all Alpha >- # Linux and Compaq Tru64 Unix objects are PIC. >- lt_prog_compiler_pic_CXX= >- lt_prog_compiler_static_CXX='-non_shared' >- ;; >- *) >- ;; >- esac >- ;; >- lynxos*) >- ;; >- m88k*) >- ;; >- mvs*) >- case $cc_basename in >- cxx) >- lt_prog_compiler_pic_CXX='-W c,exportall' >- ;; >- *) >- ;; >- esac >- ;; >- netbsd*) >- ;; >- osf3* | osf4* | osf5*) >- case $cc_basename in >- KCC) >- lt_prog_compiler_wl_CXX='--backend -Wl,' >- ;; >- RCC) >- # Rational C++ 2.4.1 >- lt_prog_compiler_pic_CXX='-pic' >- ;; >- cxx) >- # Digital/Compaq C++ >- lt_prog_compiler_wl_CXX='-Wl,' >- # Make sure the PIC flag is empty. It appears that all Alpha >- # Linux and Compaq Tru64 Unix objects are PIC. >- lt_prog_compiler_pic_CXX= >- lt_prog_compiler_static_CXX='-non_shared' >- ;; >- *) >- ;; >- esac >- ;; >- psos*) >- ;; >- sco*) >- case $cc_basename in >- CC) >- lt_prog_compiler_pic_CXX='-fPIC' >- ;; >- *) >- ;; >- esac >- ;; >- solaris*) >- case $cc_basename in >- CC) >- # Sun C++ 4.2, 5.x and Centerline C++ >- lt_prog_compiler_pic_CXX='-KPIC' >- lt_prog_compiler_static_CXX='-Bstatic' >- lt_prog_compiler_wl_CXX='-Qoption ld ' >- ;; >- gcx) >- # Green Hills C++ Compiler >- lt_prog_compiler_pic_CXX='-PIC' >- ;; >- *) >- ;; >- esac >- ;; >- sunos4*) >- case $cc_basename in >- CC) >- # Sun C++ 4.x >- lt_prog_compiler_pic_CXX='-pic' >- lt_prog_compiler_static_CXX='-Bstatic' >- ;; >- lcc) >- # Lucid >- lt_prog_compiler_pic_CXX='-pic' >- ;; >- *) >- ;; >- esac >- ;; >- tandem*) >- case $cc_basename in >- NCC) >- # NonStop-UX NCC 3.20 >- lt_prog_compiler_pic_CXX='-KPIC' >- ;; >- *) >- ;; >- esac >- ;; >- unixware*) >- ;; >- vxworks*) >- ;; >- *) >- lt_prog_compiler_can_build_shared_CXX=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 >- >-# >-# Check to make sure the PIC flag actually works. >-# >-if test -n "$lt_prog_compiler_pic_CXX"; then >- >-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 >-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 >-if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_prog_compiler_pic_works_CXX=no >- ac_outfile=conftest.$ac_objext >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- # The option is referenced via a variable to avoid confusing sed. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:11404: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>conftest.err) >- ac_status=$? >- cat conftest.err >&5 >- echo "$as_me:11408: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s "$ac_outfile"; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s conftest.err; then >- lt_prog_compiler_pic_works_CXX=yes >- fi >- fi >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 >- >-if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then >- case $lt_prog_compiler_pic_CXX in >- "" | " "*) ;; >- *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; >- esac >-else >- lt_prog_compiler_pic_CXX= >- lt_prog_compiler_can_build_shared_CXX=no >-fi >- >-fi >-case "$host_os" in >- # For platforms which do not support PIC, -DPIC is meaningless: >- *djgpp*) >- lt_prog_compiler_pic_CXX= >- ;; >- *) >- lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" >- ;; >-esac >- >-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 >-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 >-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_prog_compiler_c_o_CXX=no >- $rm -r conftest 2>/dev/null >- mkdir conftest >- cd conftest >- mkdir out >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- # According to Tom Tromey, Ian Lance Taylor reported there are C compilers >- # that will create temporary files in the current directory regardless of >- # the output directory. Thus, making CWD read-only will cause this test >- # to fail, enabling locking or at least warning the user not to do parallel >- # builds. >- chmod -w . >- >- lt_compiler_flag="-o out/conftest2.$ac_objext" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:11471: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>out/conftest.err) >- ac_status=$? >- cat out/conftest.err >&5 >- echo "$as_me:11475: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s out/conftest2.$ac_objext >- then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s out/conftest.err; then >- lt_cv_prog_compiler_c_o_CXX=yes >- fi >- fi >- chmod u+w . >- $rm conftest* >- # SGI C++ compiler will create directory out/ii_files/ for >- # template instantiation >- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files >- $rm out/* && rmdir out >- cd .. >- rmdir conftest >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 >-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 >- >- >-hard_links="nottested" >-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then >- # do not overwrite the value of need_locks provided by the user >- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 >-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 >- hard_links=yes >- $rm conftest* >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- touch conftest.a >- ln conftest.a conftest.b 2>&5 || hard_links=no >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- echo "$as_me:$LINENO: result: $hard_links" >&5 >-echo "${ECHO_T}$hard_links" >&6 >- if test "$hard_links" = no; then >- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 >-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} >- need_locks=warn >- fi >-else >- need_locks=no >-fi >- >-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 >- >- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' >- case $host_os in >- aix4* | aix5*) >- # If we're using GNU nm, then we don't want the "-C" option. >- # -C means demangle to AIX nm, but means don't demangle with GNU nm >- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then >- export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- else >- export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- fi >- ;; >- pw32*) >- export_symbols_cmds_CXX="$ltdll_cmds" >- ;; >- cygwin* | mingw*) >- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' >- ;; >- *) >- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' >- ;; >- esac >- >-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 >-echo "${ECHO_T}$ld_shlibs_CXX" >&6 >-test "$ld_shlibs_CXX" = no && can_build_shared=no >- >-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" >-if test "$GCC" = yes; then >- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" >-fi >- >-# >-# Do we need to explicitly link libc? >-# >-case "x$archive_cmds_need_lc_CXX" in >-x|xyes) >- # Assume -lc should be added >- archive_cmds_need_lc_CXX=yes >- >- if test "$enable_shared" = yes && test "$GCC" = yes; then >- case $archive_cmds_CXX in >- *'~'*) >- # FIXME: we may have to deal with multi-command sequences. >- ;; >- '$CC '*) >- # Test whether the compiler implicitly links with -lc since on some >- # systems, -lgcc has to come before -lc. If gcc already passes -lc >- # to ld, don't add -lc before -lgcc. >- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 >-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 >- $rm conftest* >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } 2>conftest.err; then >- soname=conftest >- lib=conftest >- libobjs=conftest.$ac_objext >- deplibs= >- wl=$lt_prog_compiler_wl_CXX >- compiler_flags=-v >- linker_flags=-v >- verstring= >- output_objdir=. >- libname=conftest >- lt_save_allow_undefined_flag=$allow_undefined_flag_CXX >- allow_undefined_flag_CXX= >- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 >- (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >- then >- archive_cmds_need_lc_CXX=no >- else >- archive_cmds_need_lc_CXX=yes >- fi >- allow_undefined_flag_CXX=$lt_save_allow_undefined_flag >- else >- cat conftest.err 1>&5 >- fi >- $rm conftest* >- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 >-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 >- ;; >- esac >- fi >- ;; >-esac >- >-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 >-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 >-library_names_spec= >-libname_spec='lib$name' >-soname_spec= >-shrext=".so" >-postinstall_cmds= >-postuninstall_cmds= >-finish_cmds= >-finish_eval= >-shlibpath_var= >-shlibpath_overrides_runpath=unknown >-version_type=none >-dynamic_linker="$host_os ld.so" >-sys_lib_dlsearch_path_spec="/lib /usr/lib" >-if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then >- # if the path contains ";" then we assume it to be the separator >- # otherwise default to the standard path separator (i.e. ":") - it is >- # assumed that no part of a normal pathname contains ";" but that should >- # okay in the real world where ";" in dirpaths is itself problematic. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >-else >- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" >-fi >-need_lib_prefix=unknown >-hardcode_into_libs=no >- >-# when you set need_version to no, make sure it does not cause -set_version >-# flags to be left without arguments >-need_version=unknown >- >-case $host_os in >-aix3*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' >- shlibpath_var=LIBPATH >- >- # AIX 3 has no versioning support, so we append a major version to the name. >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- >-aix4* | aix5*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- hardcode_into_libs=yes >- if test "$host_cpu" = ia64; then >- # AIX 5 supports IA64 >- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- else >- # With GCC up to 2.95.x, collect2 would create an import file >- # for dependence libraries. The import file would start with >- # the line `#! .'. This would cause the generated library to >- # depend on `.', always an invalid library. This was fixed in >- # development snapshots of GCC prior to 3.0. >- case $host_os in >- aix4 | aix4.[01] | aix4.[01].*) >- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' >- echo ' yes ' >- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then >- : >- else >- can_build_shared=no >- fi >- ;; >- esac >- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct >- # soname into executable. Probably we can add versioning support to >- # collect2, so additional links can be useful in future. >- if test "$aix_use_runtimelinking" = yes; then >- # If using run time linking (on AIX 4.2 or later) use lib<name>.so >- # instead of lib<name>.a to let people know that these are not >- # typical AIX shared libraries. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- else >- # We preserve .a as extension for shared libraries through AIX4.2 >- # and later when we are not doing run time linking. >- library_names_spec='${libname}${release}.a $libname.a' >- soname_spec='${libname}${release}${shared_ext}$major' >- fi >- shlibpath_var=LIBPATH >- fi >- ;; >- >-amigaos*) >- library_names_spec='$libname.ixlibrary $libname.a' >- # Create ${libname}_ixlibrary.a entries in /sys/libs. >- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' >- ;; >- >-beos*) >- library_names_spec='${libname}${shared_ext}' >- dynamic_linker="$host_os ld.so" >- shlibpath_var=LIBRARY_PATH >- ;; >- >-bsdi4*) >- version_type=linux >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" >- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" >- # the default ld.so.conf also contains /usr/contrib/lib and >- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow >- # libtool to hard-code these into programs >- ;; >- >-cygwin* | mingw* | pw32*) >- version_type=windows >- shrext=".dll" >- need_version=no >- need_lib_prefix=no >- >- case $GCC,$host_os in >- yes,cygwin* | yes,mingw* | yes,pw32*) >- library_names_spec='$libname.dll.a' >- # DLL is installed to $(libdir)/../bin by postinstall_cmds >- postinstall_cmds='base_file=`basename \${file}`~ >- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ >- dldir=$destdir/`dirname \$dlpath`~ >- test -d \$dldir || mkdir -p \$dldir~ >- $install_prog $dir/$dlname \$dldir/$dlname' >- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ >- dlpath=$dir/\$dldll~ >- $rm \$dlpath' >- shlibpath_overrides_runpath=yes >- >- case $host_os in >- cygwin*) >- # Cygwin DLLs use 'cyg' prefix rather than 'lib' >- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" >- ;; >- mingw*) >- # MinGW DLLs use traditional 'lib' prefix >- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then >- # It is most probably a Windows format PATH printed by >- # mingw gcc, but we are running on Cygwin. Gcc prints its search >- # path with ; separators, and with drive letters. We can handle the >- # drive letters (cygwin fileutils understands them), so leave them, >- # especially as we might pass files found there to a mingw objdump, >- # which wouldn't understand a cygwinified path. Ahh. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >- ;; >- pw32*) >- # pw32 DLLs use 'pw' prefix rather than 'lib' >- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' >- ;; >- esac >- ;; >- >- *) >- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' >- ;; >- esac >- dynamic_linker='Win32 ld.exe' >- # FIXME: first we should search . and the directory the executable is in >- shlibpath_var=PATH >- ;; >- >-darwin* | rhapsody*) >- dynamic_linker="$host_os dyld" >- version_type=darwin >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' >- soname_spec='${libname}${release}${major}$shared_ext' >- shlibpath_overrides_runpath=yes >- shlibpath_var=DYLD_LIBRARY_PATH >- shrext='$(test .$module = .yes && echo .so || echo .dylib)' >- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. >- if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` >- else >- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' >- fi >- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' >- ;; >- >-dgux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-freebsd1*) >- dynamic_linker=no >- ;; >- >-kfreebsd*-gnu) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- dynamic_linker='GNU ld.so' >- ;; >- >-freebsd*) >- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` >- version_type=freebsd-$objformat >- case $version_type in >- freebsd-elf*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' >- need_version=no >- need_lib_prefix=no >- ;; >- freebsd-*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' >- need_version=yes >- ;; >- esac >- shlibpath_var=LD_LIBRARY_PATH >- case $host_os in >- freebsd2*) >- shlibpath_overrides_runpath=yes >- ;; >- freebsd3.01* | freebsdelf3.01*) >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- *) # from 3.2 on >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- ;; >- esac >- ;; >- >-gnu*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- hardcode_into_libs=yes >- ;; >- >-hpux9* | hpux10* | hpux11*) >- # Give a soname corresponding to the major version so that dld.sl refuses to >- # link against other versions. >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- case "$host_cpu" in >- ia64*) >- shrext='.so' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.so" >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- if test "X$HPUX_IA64_MODE" = X32; then >- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" >- else >- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" >- fi >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- hppa*64*) >- shrext='.sl' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- *) >- shrext='.sl' >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=SHLIB_PATH >- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- esac >- # HP-UX runs *really* slowly unless shared libraries are mode 555. >- postinstall_cmds='chmod 555 $lib' >- ;; >- >-irix5* | irix6* | nonstopux*) >- case $host_os in >- nonstopux*) version_type=nonstopux ;; >- *) >- if test "$lt_cv_prog_gnu_ld" = yes; then >- version_type=linux >- else >- version_type=irix >- fi ;; >- esac >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' >- case $host_os in >- irix5* | nonstopux*) >- libsuff= shlibsuff= >- ;; >- *) >- case $LD in # libtool.m4 will add one of these switches to LD >- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") >- libsuff= shlibsuff= libmagic=32-bit;; >- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") >- libsuff=32 shlibsuff=N32 libmagic=N32;; >- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") >- libsuff=64 shlibsuff=64 libmagic=64-bit;; >- *) libsuff= shlibsuff= libmagic=never-match;; >- esac >- ;; >- esac >- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" >- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" >- hardcode_into_libs=yes >- ;; >- >-# No shared lib support for Linux oldld, aout, or coff. >-linux*oldld* | linux*aout* | linux*coff*) >- dynamic_linker=no >- ;; >- >-# This must be Linux ELF. >-linux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- # This implies no fast_install, which is unacceptable. >- # Some rework will be needed to allow for fast_install >- # before this can be enabled. >- hardcode_into_libs=yes >- >- # We used to test for /lib/ld.so.1 and disable shared libraries on >- # powerpc, because MkLinux only supported shared libraries with the >- # GNU dynamic linker. Since this was broken with cross compilers, >- # most powerpc-linux boxes support dynamic linking these days and >- # people can always --disable-shared, the test was removed, and we >- # assume the GNU/Linux dynamic linker is in use. >- dynamic_linker='GNU/Linux ld.so' >- ;; >- >-netbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- dynamic_linker='NetBSD (a.out) ld.so' >- else >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- dynamic_linker='NetBSD ld.elf_so' >- fi >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- >-newsos6) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-nto-qnx*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-openbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- case $host_os in >- openbsd2.[89] | openbsd2.[89].*) >- shlibpath_overrides_runpath=no >- ;; >- *) >- shlibpath_overrides_runpath=yes >- ;; >- esac >- else >- shlibpath_overrides_runpath=yes >- fi >- ;; >- >-os2*) >- libname_spec='$name' >- shrext=".dll" >- need_lib_prefix=no >- library_names_spec='$libname${shared_ext} $libname.a' >- dynamic_linker='OS/2 ld.exe' >- shlibpath_var=LIBPATH >- ;; >- >-osf3* | osf4* | osf5*) >- version_type=osf >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" >- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" >- ;; >- >-sco3.2v5*) >- version_type=osf >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-solaris*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- # ldd complains unless libraries are executable >- postinstall_cmds='chmod +x $lib' >- ;; >- >-sunos4*) >- version_type=sunos >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- if test "$with_gnu_ld" = yes; then >- need_lib_prefix=no >- fi >- need_version=yes >- ;; >- >-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- case $host_vendor in >- sni) >- shlibpath_overrides_runpath=no >- need_lib_prefix=no >- export_dynamic_flag_spec='${wl}-Blargedynsym' >- runpath_var=LD_RUN_PATH >- ;; >- siemens) >- need_lib_prefix=no >- ;; >- motorola) >- need_lib_prefix=no >- need_version=no >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' >- ;; >- esac >- ;; >- >-sysv4*MP*) >- if test -d /usr/nec ;then >- version_type=linux >- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' >- soname_spec='$libname${shared_ext}.$major' >- shlibpath_var=LD_LIBRARY_PATH >- fi >- ;; >- >-uts4*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-*) >- dynamic_linker=no >- ;; >-esac >-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 >-echo "${ECHO_T}$dynamic_linker" >&6 >-test "$dynamic_linker" = no && can_build_shared=no >- >-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 >-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 >-hardcode_action_CXX= >-if test -n "$hardcode_libdir_flag_spec_CXX" || \ >- test -n "$runpath_var CXX" || \ >- test "X$hardcode_automatic_CXX"="Xyes" ; then >- >- # We can hardcode non-existant directories. >- if test "$hardcode_direct_CXX" != no && >- # If the only mechanism to avoid hardcoding is shlibpath_var, we >- # have to relink, otherwise we might link with an installed library >- # when we should be linking with a yet-to-be-installed one >- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && >- test "$hardcode_minus_L_CXX" != no; then >- # Linking always hardcodes the temporary library directory. >- hardcode_action_CXX=relink >- else >- # We can link without hardcoding, and we can hardcode nonexisting dirs. >- hardcode_action_CXX=immediate >- fi >-else >- # We cannot hardcode anything, or else we can only hardcode existing >- # directories. >- hardcode_action_CXX=unsupported >-fi >-echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 >-echo "${ECHO_T}$hardcode_action_CXX" >&6 >- >-if test "$hardcode_action_CXX" = relink; then >- # Fast installation is not supported >- enable_fast_install=no >-elif test "$shlibpath_overrides_runpath" = yes || >- test "$enable_shared" = no; then >- # Fast installation is not necessary >- enable_fast_install=needless >-fi >- >-striplib= >-old_striplib= >-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 >-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 >-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then >- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" >- test -z "$striplib" && striplib="$STRIP --strip-unneeded" >-# <PATCH NAME="ISW20030916-1"> >-# <NEW> >-# The following section is a PATCH to overcome the >-# stripped import library issues under cygwin >- case $host_os in >- cygwin*) >- striplib= >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- *) >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- ;; >- esac >-# </NEW> >-# <OLD> >-# AC_MSG_RESULT([yes]) >-# </OLD> >-# </PATCH> >- >-else >-# FIXME - insert some real tests, host_os isn't really good enough >- case $host_os in >- darwin*) >- if test -n "$STRIP" ; then >- striplib="$STRIP -x" >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- ;; >- *) >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- esac >-fi >- >-if test "x$enable_dlopen" != xyes; then >- enable_dlopen=unknown >- enable_dlopen_self=unknown >- enable_dlopen_self_static=unknown >-else >- lt_cv_dlopen=no >- lt_cv_dlopen_libs= >- >- case $host_os in >- beos*) >- lt_cv_dlopen="load_add_on" >- lt_cv_dlopen_libs= >- lt_cv_dlopen_self=yes >- ;; >- >- mingw* | pw32*) >- lt_cv_dlopen="LoadLibrary" >- lt_cv_dlopen_libs= >- ;; >- >- cygwin*) >- lt_cv_dlopen="dlopen" >- lt_cv_dlopen_libs= >- ;; >- >- darwin*) >- # if libdl is installed we need to link against it >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" >-else >- >- lt_cv_dlopen="dyld" >- lt_cv_dlopen_libs= >- lt_cv_dlopen_self=yes >- >-fi >- >- ;; >- >- *) >- echo "$as_me:$LINENO: checking for shl_load" >&5 >-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 >-if test "${ac_cv_func_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define shl_load innocuous_shl_load >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char shl_load (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef shl_load >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_shl_load) || defined (__stub___shl_load) >-choke me >-#else >-char (*f) () = shl_load; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != shl_load; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 >-if test $ac_cv_func_shl_load = yes; then >- lt_cv_dlopen="shl_load" >-else >- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 >-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-int >-main () >-{ >-shl_load (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 >-if test $ac_cv_lib_dld_shl_load = yes; then >- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" >-else >- echo "$as_me:$LINENO: checking for dlopen" >&5 >-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 >-if test "${ac_cv_func_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define dlopen innocuous_dlopen >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char dlopen (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef dlopen >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_dlopen) || defined (__stub___dlopen) >-choke me >-#else >-char (*f) () = dlopen; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != dlopen; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 >-if test $ac_cv_func_dlopen = yes; then >- lt_cv_dlopen="dlopen" >-else >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" >-else >- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 >-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 >-if test "${ac_cv_lib_svld_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lsvld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_svld_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_svld_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 >-if test $ac_cv_lib_svld_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" >-else >- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 >-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_dld_link+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dld_link (); >-int >-main () >-{ >-dld_link (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_cxx_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_dld_link=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_dld_link=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 >-if test $ac_cv_lib_dld_dld_link = yes; then >- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- ;; >- esac >- >- if test "x$lt_cv_dlopen" != xno; then >- enable_dlopen=yes >- else >- enable_dlopen=no >- fi >- >- case $lt_cv_dlopen in >- dlopen) >- save_CPPFLAGS="$CPPFLAGS" >- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" >- >- save_LDFLAGS="$LDFLAGS" >- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" >- >- save_LIBS="$LIBS" >- LIBS="$lt_cv_dlopen_libs $LIBS" >- >- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 >-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 >-if test "${lt_cv_dlopen_self+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$cross_compiling" = yes; then : >- lt_cv_dlopen_self=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 12833 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; >- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; >- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; >- esac >- else : >- # compilation failed >- lt_cv_dlopen_self=no >- fi >-fi >-rm -fr conftest* >- >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 >-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 >- >- if test "x$lt_cv_dlopen_self" = xyes; then >- LDFLAGS="$LDFLAGS $link_static_flag" >- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 >-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 >-if test "${lt_cv_dlopen_self_static+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$cross_compiling" = yes; then : >- lt_cv_dlopen_self_static=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 12931 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; >- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; >- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; >- esac >- else : >- # compilation failed >- lt_cv_dlopen_self_static=no >- fi >-fi >-rm -fr conftest* >- >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 >-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 >- fi >- >- CPPFLAGS="$save_CPPFLAGS" >- LDFLAGS="$save_LDFLAGS" >- LIBS="$save_LIBS" >- ;; >- esac >- >- case $lt_cv_dlopen_self in >- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; >- *) enable_dlopen_self=unknown ;; >- esac >- >- case $lt_cv_dlopen_self_static in >- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; >- *) enable_dlopen_self_static=unknown ;; >- esac >-fi >- >- >-# The else clause should only fire when bootstrapping the >-# libtool distribution, otherwise you forgot to ship ltmain.sh >-# with your package, and you will get complaints that there are >-# no rules to generate ltmain.sh. >-if test -f "$ltmain"; then >- # See if we are running on zsh, and set the options which allow our commands through >- # without removal of \ escapes. >- if test -n "${ZSH_VERSION+set}" ; then >- setopt NO_GLOB_SUBST >- fi >- # Now quote all the things that may contain metacharacters while being >- # careful not to overquote the AC_SUBSTed values. We take copies of the >- # variables and quote the copies for generation of the libtool script. >- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ >- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ >- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ >- deplibs_check_method reload_flag reload_cmds need_locks \ >- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ >- lt_cv_sys_global_symbol_to_c_name_address \ >- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ >- old_postinstall_cmds old_postuninstall_cmds \ >- compiler_CXX \ >- CC_CXX \ >- LD_CXX \ >- lt_prog_compiler_wl_CXX \ >- lt_prog_compiler_pic_CXX \ >- lt_prog_compiler_static_CXX \ >- lt_prog_compiler_no_builtin_flag_CXX \ >- export_dynamic_flag_spec_CXX \ >- thread_safe_flag_spec_CXX \ >- whole_archive_flag_spec_CXX \ >- enable_shared_with_static_runtimes_CXX \ >- old_archive_cmds_CXX \ >- old_archive_from_new_cmds_CXX \ >- predep_objects_CXX \ >- postdep_objects_CXX \ >- predeps_CXX \ >- postdeps_CXX \ >- compiler_lib_search_path_CXX \ >- archive_cmds_CXX \ >- archive_expsym_cmds_CXX \ >- postinstall_cmds_CXX \ >- postuninstall_cmds_CXX \ >- old_archive_from_expsyms_cmds_CXX \ >- allow_undefined_flag_CXX \ >- no_undefined_flag_CXX \ >- export_symbols_cmds_CXX \ >- hardcode_libdir_flag_spec_CXX \ >- hardcode_libdir_flag_spec_ld_CXX \ >- hardcode_libdir_separator_CXX \ >- hardcode_automatic_CXX \ >- module_cmds_CXX \ >- module_expsym_cmds_CXX \ >- lt_cv_prog_compiler_c_o_CXX \ >- exclude_expsyms_CXX \ >- include_expsyms_CXX; do >- >- case $var in >- old_archive_cmds_CXX | \ >- old_archive_from_new_cmds_CXX | \ >- archive_cmds_CXX | \ >- archive_expsym_cmds_CXX | \ >- module_cmds_CXX | \ >- module_expsym_cmds_CXX | \ >- old_archive_from_expsyms_cmds_CXX | \ >- export_symbols_cmds_CXX | \ >- extract_expsyms_cmds | reload_cmds | finish_cmds | \ >- postinstall_cmds | postuninstall_cmds | \ >- old_postinstall_cmds | old_postuninstall_cmds | \ >- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) >- # Double-quote double-evaled strings. >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" >- ;; >- *) >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" >- ;; >- esac >- done >- >- case $lt_echo in >- *'\$0 --fallback-echo"') >- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` >- ;; >- esac >- >-cfgfile="$ofile" >- >- cat <<__EOF__ >> "$cfgfile" >-# ### BEGIN LIBTOOL TAG CONFIG: $tagname >- >-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: >- >-# Shell to use when invoking shell scripts. >-SHELL=$lt_SHELL >- >-# Whether or not to build shared libraries. >-build_libtool_libs=$enable_shared >- >-# Whether or not to build static libraries. >-build_old_libs=$enable_static >- >-# Whether or not to add -lc for building shared libraries. >-build_libtool_need_lc=$archive_cmds_need_lc_CXX >- >-# Whether or not to disallow shared libs when runtime libs are static >-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX >- >-# Whether or not to optimize for fast installation. >-fast_install=$enable_fast_install >- >-# The host system. >-host_alias=$host_alias >-host=$host >- >-# An echo program that does not interpret backslashes. >-echo=$lt_echo >- >-# The archiver. >-AR=$lt_AR >-AR_FLAGS=$lt_AR_FLAGS >- >-# A C compiler. >-LTCC=$lt_LTCC >- >-# A language-specific compiler. >-CC=$lt_compiler_CXX >- >-# Is the compiler the GNU C compiler? >-with_gcc=$GCC_CXX >- >-# An ERE matcher. >-EGREP=$lt_EGREP >- >-# The linker used to build libraries. >-LD=$lt_LD_CXX >- >-# Whether we need hard or soft links. >-LN_S=$lt_LN_S >- >-# A BSD-compatible nm program. >-NM=$lt_NM >- >-# A symbol stripping program >-STRIP=$STRIP >- >-# Used to examine libraries when file_magic_cmd begins "file" >-MAGIC_CMD=$MAGIC_CMD >- >-# Used on cygwin: DLL creation program. >-DLLTOOL="$DLLTOOL" >- >-# Used on cygwin: object dumper. >-OBJDUMP="$OBJDUMP" >- >-# Used on cygwin: assembler. >-AS="$AS" >- >-# The name of the directory that contains temporary libtool files. >-objdir=$objdir >- >-# How to create reloadable object files. >-reload_flag=$lt_reload_flag >-reload_cmds=$lt_reload_cmds >- >-# How to pass a linker flag through the compiler. >-wl=$lt_lt_prog_compiler_wl_CXX >- >-# Object file suffix (normally "o"). >-objext="$ac_objext" >- >-# Old archive suffix (normally "a"). >-libext="$libext" >- >-# Shared library suffix (normally ".so"). >-shrext='$shrext' >- >-# Executable file suffix (normally ""). >-exeext="$exeext" >- >-# Additional compiler flags for building library objects. >-pic_flag=$lt_lt_prog_compiler_pic_CXX >-pic_mode=$pic_mode >- >-# What is the maximum length of a command? >-max_cmd_len=$lt_cv_sys_max_cmd_len >- >-# Does compiler simultaneously support -c and -o options? >-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX >- >-# Must we lock files when doing compilation ? >-need_locks=$lt_need_locks >- >-# Do we need the lib prefix for modules? >-need_lib_prefix=$need_lib_prefix >- >-# Do we need a version for libraries? >-need_version=$need_version >- >-# Whether dlopen is supported. >-dlopen_support=$enable_dlopen >- >-# Whether dlopen of programs is supported. >-dlopen_self=$enable_dlopen_self >- >-# Whether dlopen of statically linked programs is supported. >-dlopen_self_static=$enable_dlopen_self_static >- >-# Compiler flag to prevent dynamic linking. >-link_static_flag=$lt_lt_prog_compiler_static_CXX >- >-# Compiler flag to turn off builtin functions. >-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX >- >-# Compiler flag to allow reflexive dlopens. >-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX >- >-# Compiler flag to generate shared objects directly from archives. >-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX >- >-# Compiler flag to generate thread-safe objects. >-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX >- >-# Library versioning type. >-version_type=$version_type >- >-# Format of library name prefix. >-libname_spec=$lt_libname_spec >- >-# List of archive names. First name is the real one, the rest are links. >-# The last name is the one that the linker finds with -lNAME. >-library_names_spec=$lt_library_names_spec >- >-# The coded name of the library, if different from the real name. >-soname_spec=$lt_soname_spec >- >-# Commands used to build and install an old-style archive. >-RANLIB=$lt_RANLIB >-old_archive_cmds=$lt_old_archive_cmds_CXX >-old_postinstall_cmds=$lt_old_postinstall_cmds >-old_postuninstall_cmds=$lt_old_postuninstall_cmds >- >-# Create an old-style archive from a shared archive. >-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX >- >-# Create a temporary old-style archive to link instead of a shared archive. >-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX >- >-# Commands used to build and install a shared archive. >-archive_cmds=$lt_archive_cmds_CXX >-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX >-postinstall_cmds=$lt_postinstall_cmds >-postuninstall_cmds=$lt_postuninstall_cmds >- >-# Commands used to build a loadable module (assumed same as above if empty) >-module_cmds=$lt_module_cmds_CXX >-module_expsym_cmds=$lt_module_expsym_cmds_CXX >- >-# Commands to strip libraries. >-old_striplib=$lt_old_striplib >-striplib=$lt_striplib >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predep_objects=$lt_predep_objects_CXX >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdep_objects=$lt_postdep_objects_CXX >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predeps=$lt_predeps_CXX >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdeps=$lt_postdeps_CXX >- >-# The library search path used internally by the compiler when linking >-# a shared library. >-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX >- >-# Method to check whether dependent libraries are shared objects. >-deplibs_check_method=$lt_deplibs_check_method >- >-# Command to use when deplibs_check_method == file_magic. >-file_magic_cmd=$lt_file_magic_cmd >- >-# Flag that allows shared libraries with undefined symbols to be built. >-allow_undefined_flag=$lt_allow_undefined_flag_CXX >- >-# Flag that forces no undefined symbols. >-no_undefined_flag=$lt_no_undefined_flag_CXX >- >-# Commands used to finish a libtool library installation in a directory. >-finish_cmds=$lt_finish_cmds >- >-# Same as above, but a single script fragment to be evaled but not shown. >-finish_eval=$lt_finish_eval >- >-# Take the output of nm and produce a listing of raw symbols and C names. >-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe >- >-# Transform the output of nm in a proper C declaration >-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl >- >-# Transform the output of nm in a C name address pair >-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address >- >-# This is the shared library runtime path variable. >-runpath_var=$runpath_var >- >-# This is the shared library path variable. >-shlibpath_var=$shlibpath_var >- >-# Is shlibpath searched before the hard-coded library search path? >-shlibpath_overrides_runpath=$shlibpath_overrides_runpath >- >-# How to hardcode a shared library path into an executable. >-hardcode_action=$hardcode_action_CXX >- >-# Whether we should hardcode library paths into libraries. >-hardcode_into_libs=$hardcode_into_libs >- >-# Flag to hardcode \$libdir into a binary during linking. >-# This must work even if \$libdir does not exist. >-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX >- >-# If ld is used when linking, flag to hardcode \$libdir into >-# a binary during linking. This must work even if \$libdir does >-# not exist. >-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX >- >-# Whether we need a single -rpath flag with a separated argument. >-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX >- >-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the >-# resulting binary. >-hardcode_direct=$hardcode_direct_CXX >- >-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the >-# resulting binary. >-hardcode_minus_L=$hardcode_minus_L_CXX >- >-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into >-# the resulting binary. >-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX >- >-# Set to yes if building a shared library automatically hardcodes DIR into the library >-# and all subsequent libraries and executables linked against it. >-hardcode_automatic=$hardcode_automatic_CXX >- >-# Variables whose values should be saved in libtool wrapper scripts and >-# restored at relink time. >-variables_saved_for_relink="$variables_saved_for_relink" >- >-# Whether libtool must link a program against all its dependency libraries. >-link_all_deplibs=$link_all_deplibs_CXX >- >-# Compile-time system search path for libraries >-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec >- >-# Run-time system search path for libraries >-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec >- >-# Fix the shell variable \$srcfile for the compiler. >-fix_srcfile_path="$fix_srcfile_path_CXX" >- >-# Set to yes if exported symbols are required. >-always_export_symbols=$always_export_symbols_CXX >- >-# The commands to list exported symbols. >-export_symbols_cmds=$lt_export_symbols_cmds_CXX >- >-# The commands to extract the exported symbol list from a shared archive. >-extract_expsyms_cmds=$lt_extract_expsyms_cmds >- >-# Symbols that should not be listed in the preloaded symbols. >-exclude_expsyms=$lt_exclude_expsyms_CXX >- >-# Symbols that must always be exported. >-include_expsyms=$lt_include_expsyms_CXX >- >-# ### END LIBTOOL TAG CONFIG: $tagname >- >-__EOF__ >- >- >-else >- # If there is no Makefile yet, we rely on a make rule to execute >- # `config.status --recheck' to rerun these tests and create the >- # libtool script then. >- test -f Makefile && make "$ltmain" >-fi >- >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >-CC=$lt_save_CC >-LDCXX=$LD >-LD=$lt_save_LD >-GCC=$lt_save_GCC >-with_gnu_ldcxx=$with_gnu_ld >-with_gnu_ld=$lt_save_with_gnu_ld >-lt_cv_path_LDCXX=$lt_cv_path_LD >-lt_cv_path_LD=$lt_save_path_LD >-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld >-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld >- >- else >- tagname="" >- fi >- ;; >- >- F77) >- if test -n "$F77" && test "X$F77" != "Xno"; then >- >-ac_ext=f >-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' >-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_f77_compiler_gnu >- >- >-archive_cmds_need_lc_F77=no >-allow_undefined_flag_F77= >-always_export_symbols_F77=no >-archive_expsym_cmds_F77= >-export_dynamic_flag_spec_F77= >-hardcode_direct_F77=no >-hardcode_libdir_flag_spec_F77= >-hardcode_libdir_flag_spec_ld_F77= >-hardcode_libdir_separator_F77= >-hardcode_minus_L_F77=no >-hardcode_automatic_F77=no >-module_cmds_F77= >-module_expsym_cmds_F77= >-link_all_deplibs_F77=unknown >-old_archive_cmds_F77=$old_archive_cmds >-no_undefined_flag_F77= >-whole_archive_flag_spec_F77= >-enable_shared_with_static_runtimes_F77=no >- >-# Source file extension for f77 test sources. >-ac_ext=f >- >-# Object file extension for compiled f77 test sources. >-objext=o >-objext_F77=$objext >- >-# Code to be used in simple compile tests >-lt_simple_compile_test_code=" subroutine t\n return\n end\n" >- >-# Code to be used in simple link tests >-lt_simple_link_test_code=" program t\n end\n" >- >-# ltmain only uses $CC for tagged configurations so make sure $CC is set. >- >-# If no C compiler was specified, use CC. >-LTCC=${LTCC-"$CC"} >- >-# Allow CC to be a program name with arguments. >-compiler=$CC >- >- >-# Allow CC to be a program name with arguments. >-lt_save_CC="$CC" >-CC=${F77-"f77"} >-compiler=$CC >-compiler_F77=$CC >-cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` >- >-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 >-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 >-echo "$as_me:$LINENO: result: $can_build_shared" >&5 >-echo "${ECHO_T}$can_build_shared" >&6 >- >-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 >-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 >-test "$can_build_shared" = "no" && enable_shared=no >- >-# On AIX, shared libraries and static libraries use the same namespace, and >-# are all built from PIC. >-case "$host_os" in >-aix3*) >- test "$enable_shared" = yes && enable_static=no >- if test -n "$RANLIB"; then >- archive_cmds="$archive_cmds~\$RANLIB \$lib" >- postinstall_cmds='$RANLIB $lib' >- fi >- ;; >-aix4*) >- test "$enable_shared" = yes && enable_static=no >- ;; >-esac >-echo "$as_me:$LINENO: result: $enable_shared" >&5 >-echo "${ECHO_T}$enable_shared" >&6 >- >-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 >-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 >-# Make sure either enable_shared or enable_static is yes. >-test "$enable_shared" = yes || enable_static=yes >-echo "$as_me:$LINENO: result: $enable_static" >&5 >-echo "${ECHO_T}$enable_static" >&6 >- >-test "$ld_shlibs_F77" = no && can_build_shared=no >- >-GCC_F77="$G77" >-LD_F77="$LD" >- >-lt_prog_compiler_wl_F77= >-lt_prog_compiler_pic_F77= >-lt_prog_compiler_static_F77= >- >-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 >-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 >- >- if test "$GCC" = yes; then >- lt_prog_compiler_wl_F77='-Wl,' >- lt_prog_compiler_static_F77='-static' >- >- case $host_os in >- aix*) >- # All AIX code is PIC. >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static_F77='-Bstatic' >- fi >- ;; >- >- amigaos*) >- # FIXME: we need at least 68020 code to build shared libraries, but >- # adding the `-m68020' flag to GCC prevents building anything better, >- # like `-m68040'. >- lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' >- ;; >- >- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) >- # PIC is the default for these OSes. >- ;; >- >- mingw* | pw32* | os2*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic_F77='-DDLL_EXPORT' >- ;; >- >- darwin* | rhapsody*) >- # PIC is the default on this platform >- # Common symbols not allowed in MH_DYLIB files >- lt_prog_compiler_pic_F77='-fno-common' >- ;; >- >- msdosdjgpp*) >- # Just because we use GCC doesn't mean we suddenly get shared libraries >- # on systems that don't support them. >- lt_prog_compiler_can_build_shared_F77=no >- enable_shared=no >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec; then >- lt_prog_compiler_pic_F77=-Kconform_pic >- fi >- ;; >- >- hpux*) >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic_F77='-fPIC' >- ;; >- esac >- ;; >- >- *) >- lt_prog_compiler_pic_F77='-fPIC' >- ;; >- esac >- else >- # PORTME Check for flag to pass linker flags through the system compiler. >- case $host_os in >- aix*) >- lt_prog_compiler_wl_F77='-Wl,' >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static_F77='-Bstatic' >- else >- lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' >- fi >- ;; >- >- mingw* | pw32* | os2*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic_F77='-DDLL_EXPORT' >- ;; >- >- hpux9* | hpux10* | hpux11*) >- lt_prog_compiler_wl_F77='-Wl,' >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic_F77='+Z' >- ;; >- esac >- # Is there a better lt_prog_compiler_static that works with the bundled CC? >- lt_prog_compiler_static_F77='${wl}-a ${wl}archive' >- ;; >- >- irix5* | irix6* | nonstopux*) >- lt_prog_compiler_wl_F77='-Wl,' >- # PIC (with -KPIC) is the default. >- lt_prog_compiler_static_F77='-non_shared' >- ;; >- >- newsos6) >- lt_prog_compiler_pic_F77='-KPIC' >- lt_prog_compiler_static_F77='-Bstatic' >- ;; >- >- linux*) >- case $CC in >- icc* | ecc*) >- lt_prog_compiler_wl_F77='-Wl,' >- lt_prog_compiler_pic_F77='-KPIC' >- lt_prog_compiler_static_F77='-static' >- ;; >- ccc*) >- lt_prog_compiler_wl_F77='-Wl,' >- # All Alpha code is PIC. >- lt_prog_compiler_static_F77='-non_shared' >- ;; >- esac >- ;; >- >- osf3* | osf4* | osf5*) >- lt_prog_compiler_wl_F77='-Wl,' >- # All OSF/1 code is PIC. >- lt_prog_compiler_static_F77='-non_shared' >- ;; >- >- sco3.2v5*) >- lt_prog_compiler_pic_F77='-Kpic' >- lt_prog_compiler_static_F77='-dn' >- ;; >- >- solaris*) >- lt_prog_compiler_wl_F77='-Wl,' >- lt_prog_compiler_pic_F77='-KPIC' >- lt_prog_compiler_static_F77='-Bstatic' >- ;; >- >- sunos4*) >- lt_prog_compiler_wl_F77='-Qoption ld ' >- lt_prog_compiler_pic_F77='-PIC' >- lt_prog_compiler_static_F77='-Bstatic' >- ;; >- >- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- lt_prog_compiler_wl_F77='-Wl,' >- lt_prog_compiler_pic_F77='-KPIC' >- lt_prog_compiler_static_F77='-Bstatic' >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec ;then >- lt_prog_compiler_pic_F77='-Kconform_pic' >- lt_prog_compiler_static_F77='-Bstatic' >- fi >- ;; >- >- uts4*) >- lt_prog_compiler_pic_F77='-pic' >- lt_prog_compiler_static_F77='-Bstatic' >- ;; >- >- *) >- lt_prog_compiler_can_build_shared_F77=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 >- >-# >-# Check to make sure the PIC flag actually works. >-# >-if test -n "$lt_prog_compiler_pic_F77"; then >- >-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 >-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 >-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_prog_compiler_pic_works_F77=no >- ac_outfile=conftest.$ac_objext >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- lt_compiler_flag="$lt_prog_compiler_pic_F77" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- # The option is referenced via a variable to avoid confusing sed. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:13754: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>conftest.err) >- ac_status=$? >- cat conftest.err >&5 >- echo "$as_me:13758: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s "$ac_outfile"; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s conftest.err; then >- lt_prog_compiler_pic_works_F77=yes >- fi >- fi >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 >- >-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then >- case $lt_prog_compiler_pic_F77 in >- "" | " "*) ;; >- *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; >- esac >-else >- lt_prog_compiler_pic_F77= >- lt_prog_compiler_can_build_shared_F77=no >-fi >- >-fi >-case "$host_os" in >- # For platforms which do not support PIC, -DPIC is meaningless: >- *djgpp*) >- lt_prog_compiler_pic_F77= >- ;; >- *) >- lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" >- ;; >-esac >- >-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 >-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 >-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_prog_compiler_c_o_F77=no >- $rm -r conftest 2>/dev/null >- mkdir conftest >- cd conftest >- mkdir out >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- # According to Tom Tromey, Ian Lance Taylor reported there are C compilers >- # that will create temporary files in the current directory regardless of >- # the output directory. Thus, making CWD read-only will cause this test >- # to fail, enabling locking or at least warning the user not to do parallel >- # builds. >- chmod -w . >- >- lt_compiler_flag="-o out/conftest2.$ac_objext" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:13821: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>out/conftest.err) >- ac_status=$? >- cat out/conftest.err >&5 >- echo "$as_me:13825: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s out/conftest2.$ac_objext >- then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s out/conftest.err; then >- lt_cv_prog_compiler_c_o_F77=yes >- fi >- fi >- chmod u+w . >- $rm conftest* >- # SGI C++ compiler will create directory out/ii_files/ for >- # template instantiation >- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files >- $rm out/* && rmdir out >- cd .. >- rmdir conftest >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 >-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 >- >- >-hard_links="nottested" >-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then >- # do not overwrite the value of need_locks provided by the user >- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 >-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 >- hard_links=yes >- $rm conftest* >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- touch conftest.a >- ln conftest.a conftest.b 2>&5 || hard_links=no >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- echo "$as_me:$LINENO: result: $hard_links" >&5 >-echo "${ECHO_T}$hard_links" >&6 >- if test "$hard_links" = no; then >- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 >-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} >- need_locks=warn >- fi >-else >- need_locks=no >-fi >- >-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 >- >- runpath_var= >- allow_undefined_flag_F77= >- enable_shared_with_static_runtimes_F77=no >- archive_cmds_F77= >- archive_expsym_cmds_F77= >- old_archive_From_new_cmds_F77= >- old_archive_from_expsyms_cmds_F77= >- export_dynamic_flag_spec_F77= >- whole_archive_flag_spec_F77= >- thread_safe_flag_spec_F77= >- hardcode_libdir_flag_spec_F77= >- hardcode_libdir_flag_spec_ld_F77= >- hardcode_libdir_separator_F77= >- hardcode_direct_F77=no >- hardcode_minus_L_F77=no >- hardcode_shlibpath_var_F77=unsupported >- link_all_deplibs_F77=unknown >- hardcode_automatic_F77=no >- module_cmds_F77= >- module_expsym_cmds_F77= >- always_export_symbols_F77=no >- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' >- # include_expsyms should be a list of space-separated symbols to be *always* >- # included in the symbol list >- include_expsyms_F77= >- # exclude_expsyms can be an extended regexp of symbols to exclude >- # it will be wrapped by ` (' and `)$', so one must not match beginning or >- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', >- # as well as any symbol that contains `d'. >- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" >- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out >- # platforms (ab)use it in PIC code, but their linkers get confused if >- # the symbol is explicitly referenced. Since portable code cannot >- # rely on this symbol name, it's probably fine to never include it in >- # preloaded symbol tables. >- extract_expsyms_cmds= >- >- case $host_os in >- cygwin* | mingw* | pw32*) >- # FIXME: the MSVC++ port hasn't been tested in a loooong time >- # When not using gcc, we currently assume that we are using >- # Microsoft Visual C++. >- if test "$GCC" != yes; then >- with_gnu_ld=no >- fi >- ;; >- openbsd*) >- with_gnu_ld=no >- ;; >- esac >- >- ld_shlibs_F77=yes >- if test "$with_gnu_ld" = yes; then >- # If archive_cmds runs LD, not CC, wlarc should be empty >- wlarc='${wl}' >- >- # See if GNU ld supports shared libraries. >- case $host_os in >- aix3* | aix4* | aix5*) >- # On AIX/PPC, the GNU linker is very broken >- if test "$host_cpu" != ia64; then >- ld_shlibs_F77=no >- cat <<EOF 1>&2 >- >-*** Warning: the GNU linker, at least up to release 2.9.1, is reported >-*** to be unable to reliably create shared libraries on AIX. >-*** Therefore, libtool is disabling shared libraries support. If you >-*** really care for shared libraries, you may want to modify your PATH >-*** so that a non-GNU linker is found, and then restart. >- >-EOF >- fi >- ;; >- >- amigaos*) >- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_minus_L_F77=yes >- >- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports >- # that the semantics of dynamic libraries on AmigaOS, at least up >- # to version 4, is to share data among multiple programs linked >- # with the same dynamic library. Since this doesn't match the >- # behavior of shared libraries on other platforms, we can't use >- # them. >- ld_shlibs_F77=no >- ;; >- >- beos*) >- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- allow_undefined_flag_F77=unsupported >- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc >- # support --undefined. This deserves some investigation. FIXME >- archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- else >- ld_shlibs_F77=no >- fi >- ;; >- >- cygwin* | mingw* | pw32*) >- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, >- # as there is no search path for DLLs. >- hardcode_libdir_flag_spec_F77='-L$libdir' >- allow_undefined_flag_F77=unsupported >- always_export_symbols_F77=no >- enable_shared_with_static_runtimes_F77=yes >- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' >- >- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then >- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- # If the export-symbols file already is a .def file (1st line >- # is EXPORTS), use it as is; otherwise, prepend... >- archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then >- cp $export_symbols $output_objdir/$soname.def; >- else >- echo EXPORTS > $output_objdir/$soname.def; >- cat $export_symbols >> $output_objdir/$soname.def; >- fi~ >- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- else >- ld_shlibs=no >- fi >- ;; >- >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' >- wlarc= >- else >- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- fi >- ;; >- >- solaris* | sysv5*) >- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then >- ld_shlibs_F77=no >- cat <<EOF 1>&2 >- >-*** Warning: The releases 2.8.* of the GNU linker cannot reliably >-*** create shared libraries on Solaris systems. Therefore, libtool >-*** is disabling shared libraries support. We urge you to upgrade GNU >-*** binutils to release 2.9.1 or newer. Another option is to modify >-*** your PATH or compiler configuration so that the native linker is >-*** used, and then restart. >- >-EOF >- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- else >- ld_shlibs_F77=no >- fi >- ;; >- >- sunos4*) >- archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- wlarc= >- hardcode_direct_F77=yes >- hardcode_shlibpath_var_F77=no >- ;; >- >- *) >- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- else >- ld_shlibs_F77=no >- fi >- ;; >- esac >- >- if test "$ld_shlibs_F77" = yes; then >- runpath_var=LD_RUN_PATH >- hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' >- export_dynamic_flag_spec_F77='${wl}--export-dynamic' >- # ancient GNU ld didn't support --whole-archive et. al. >- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then >- whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' >- else >- whole_archive_flag_spec_F77= >- fi >- fi >- else >- # PORTME fill in a description of your system's linker (not GNU ld) >- case $host_os in >- aix3*) >- allow_undefined_flag_F77=unsupported >- always_export_symbols_F77=yes >- archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' >- # Note: this linker hardcodes the directories in LIBPATH if there >- # are no directories specified by -L. >- hardcode_minus_L_F77=yes >- if test "$GCC" = yes && test -z "$link_static_flag"; then >- # Neither direct hardcoding nor static linking is supported with a >- # broken collect2. >- hardcode_direct_F77=unsupported >- fi >- ;; >- >- aix4* | aix5*) >- if test "$host_cpu" = ia64; then >- # On IA64, the linker does run time linking by default, so we don't >- # have to do anything special. >- aix_use_runtimelinking=no >- exp_sym_flag='-Bexport' >- no_entry_flag="" >- else >- # If we're using GNU nm, then we don't want the "-C" option. >- # -C means demangle to AIX nm, but means don't demangle with GNU nm >- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then >- export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- else >- export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- fi >- aix_use_runtimelinking=no >- >- # Test if we are trying to use run time linking or normal >- # AIX style linking. If -brtl is somewhere in LDFLAGS, we >- # need to do runtime linking. >- case $host_os in aix4.[23]|aix4.[23].*|aix5*) >- for ld_flag in $LDFLAGS; do >- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then >- aix_use_runtimelinking=yes >- break >- fi >- done >- esac >- >- exp_sym_flag='-bexport' >- no_entry_flag='-bnoentry' >- fi >- >- # When large executables or shared objects are built, AIX ld can >- # have problems creating the table of contents. If linking a library >- # or program results in "error TOC overflow" add -mminimal-toc to >- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not >- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. >- >- archive_cmds_F77='' >- hardcode_direct_F77=yes >- hardcode_libdir_separator_F77=':' >- link_all_deplibs_F77=yes >- >- if test "$GCC" = yes; then >- case $host_os in aix4.012|aix4.012.*) >- # We only want to do this on AIX 4.2 and lower, the check >- # below for broken collect2 doesn't work under 4.3+ >- collect2name=`${CC} -print-prog-name=collect2` >- if test -f "$collect2name" && \ >- strings "$collect2name" | grep resolve_lib_name >/dev/null >- then >- # We have reworked collect2 >- hardcode_direct_F77=yes >- else >- # We have old collect2 >- hardcode_direct_F77=unsupported >- # It fails to find uninstalled libraries when the uninstalled >- # path is not listed in the libpath. Setting hardcode_minus_L >- # to unsupported forces relinking >- hardcode_minus_L_F77=yes >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_libdir_separator_F77= >- fi >- esac >- shared_flag='-shared' >- else >- # not using gcc >- if test "$host_cpu" = ia64; then >- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release >- # chokes on -Wl,-G. The following line is correct: >- shared_flag='-G' >- else >- if test "$aix_use_runtimelinking" = yes; then >- shared_flag='${wl}-G' >- else >- shared_flag='${wl}-bM:SRE' >- fi >- fi >- fi >- >- # It seems that -bexpall does not export symbols beginning with >- # underscore (_), so it is better to generate a list of symbols to export. >- always_export_symbols_F77=yes >- if test "$aix_use_runtimelinking" = yes; then >- # Warning - without using the other runtime loading flags (-brtl), >- # -berok will link without error, but may produce a broken library. >- allow_undefined_flag_F77='-berok' >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >- program main >- >- end >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_f77_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" >- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" >- else >- if test "$host_cpu" = ia64; then >- hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' >- allow_undefined_flag_F77="-z nodefs" >- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" >- else >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >- program main >- >- end >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_f77_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" >- # Warning - without using the other run time loading flags, >- # -berok will link without error, but may produce a broken library. >- no_undefined_flag_F77=' ${wl}-bernotok' >- allow_undefined_flag_F77=' ${wl}-berok' >- # -bexpall does not export symbols beginning with underscore (_) >- always_export_symbols_F77=yes >- # Exported symbols can be pulled into shared objects from archives >- whole_archive_flag_spec_F77=' ' >- archive_cmds_need_lc_F77=yes >- # This is similar to how AIX traditionally builds it's shared libraries. >- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' >- fi >- fi >- ;; >- >- amigaos*) >- archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_minus_L_F77=yes >- # see comment about different semantics on the GNU ld section >- ld_shlibs_F77=no >- ;; >- >- bsdi4*) >- export_dynamic_flag_spec_F77=-rdynamic >- ;; >- >- cygwin* | mingw* | pw32*) >- # When not using gcc, we currently assume that we are using >- # Microsoft Visual C++. >- # hardcode_libdir_flag_spec is actually meaningless, as there is >- # no search path for DLLs. >- hardcode_libdir_flag_spec_F77=' ' >- allow_undefined_flag_F77=unsupported >- # Tell ltmain to make .lib files, not .a files. >- libext=lib >- # Tell ltmain to make .dll files, not .so files. >- shrext=".dll" >- # FIXME: Setting linknames here is a bad hack. >- archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' >- # The linker will automatically build a .lib file if we build a DLL. >- old_archive_From_new_cmds_F77='true' >- # FIXME: Should let the user specify the lib program. >- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' >- fix_srcfile_path='`cygpath -w "$srcfile"`' >- enable_shared_with_static_runtimes_F77=yes >- ;; >- >- darwin* | rhapsody*) >- if test "$GXX" = yes ; then >- archive_cmds_need_lc_F77=no >- case "$host_os" in >- rhapsody* | darwin1.[012]) >- allow_undefined_flag_F77='-undefined suppress' >- ;; >- *) # Darwin 1.3 on >- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then >- allow_undefined_flag_F77='-flat_namespace -undefined suppress' >- else >- case ${MACOSX_DEPLOYMENT_TARGET} in >- 10.[012]) >- allow_undefined_flag_F77='-flat_namespace -undefined suppress' >- ;; >- 10.*) >- allow_undefined_flag_F77='-undefined dynamic_lookup' >- ;; >- esac >- fi >- ;; >- esac >- lt_int_apple_cc_single_mod=no >- output_verbose_link_cmd='echo' >- if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then >- lt_int_apple_cc_single_mod=yes >- fi >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- else >- archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- fi >- module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' >- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- else >- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- fi >- module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- hardcode_direct_F77=no >- hardcode_automatic_F77=yes >- hardcode_shlibpath_var_F77=unsupported >- whole_archive_flag_spec_F77='-all_load $convenience' >- link_all_deplibs_F77=yes >- else >- ld_shlibs_F77=no >- fi >- ;; >- >- dgux*) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_shlibpath_var_F77=no >- ;; >- >- freebsd1*) >- ld_shlibs_F77=no >- ;; >- >- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor >- # support. Future versions do this automatically, but an explicit c++rt0.o >- # does not break anything, and helps significantly (at the cost of a little >- # extra space). >- freebsd2.2*) >- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' >- hardcode_libdir_flag_spec_F77='-R$libdir' >- hardcode_direct_F77=yes >- hardcode_shlibpath_var_F77=no >- ;; >- >- # Unfortunately, older versions of FreeBSD 2 do not have this feature. >- freebsd2*) >- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_F77=yes >- hardcode_minus_L_F77=yes >- hardcode_shlibpath_var_F77=no >- ;; >- >- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. >- freebsd* | kfreebsd*-gnu) >- archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec_F77='-R$libdir' >- hardcode_direct_F77=yes >- hardcode_shlibpath_var_F77=no >- ;; >- >- hpux9*) >- if test "$GCC" = yes; then >- archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- else >- archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- fi >- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator_F77=: >- hardcode_direct_F77=yes >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L_F77=yes >- export_dynamic_flag_spec_F77='${wl}-E' >- ;; >- >- hpux10* | hpux11*) >- if test "$GCC" = yes -a "$with_gnu_ld" = no; then >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- ;; >- *) >- archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' >- ;; >- esac >- else >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' >- ;; >- *) >- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' >- ;; >- esac >- fi >- if test "$with_gnu_ld" = no; then >- case "$host_cpu" in >- hppa*64*) >- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' >- hardcode_libdir_flag_spec_ld_F77='+b $libdir' >- hardcode_libdir_separator_F77=: >- hardcode_direct_F77=no >- hardcode_shlibpath_var_F77=no >- ;; >- ia64*) >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_direct_F77=no >- hardcode_shlibpath_var_F77=no >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L_F77=yes >- ;; >- *) >- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator_F77=: >- hardcode_direct_F77=yes >- export_dynamic_flag_spec_F77='${wl}-E' >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L_F77=yes >- ;; >- esac >- fi >- ;; >- >- irix5* | irix6* | nonstopux*) >- if test "$GCC" = yes; then >- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- else >- archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' >- fi >- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_F77=: >- link_all_deplibs_F77=yes >- ;; >- >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out >- else >- archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF >- fi >- hardcode_libdir_flag_spec_F77='-R$libdir' >- hardcode_direct_F77=yes >- hardcode_shlibpath_var_F77=no >- ;; >- >- newsos6) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_F77=yes >- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_F77=: >- hardcode_shlibpath_var_F77=no >- ;; >- >- openbsd*) >- hardcode_direct_F77=yes >- hardcode_shlibpath_var_F77=no >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' >- export_dynamic_flag_spec_F77='${wl}-E' >- else >- case $host_os in >- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) >- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec_F77='-R$libdir' >- ;; >- *) >- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' >- ;; >- esac >- fi >- ;; >- >- os2*) >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_minus_L_F77=yes >- allow_undefined_flag_F77=unsupported >- archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' >- old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' >- ;; >- >- osf3*) >- if test "$GCC" = yes; then >- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- else >- allow_undefined_flag_F77=' -expect_unresolved \*' >- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- fi >- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_F77=: >- ;; >- >- osf4* | osf5*) # as osf3* with the addition of -msym flag >- if test "$GCC" = yes; then >- allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' >- else >- allow_undefined_flag_F77=' -expect_unresolved \*' >- archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ >- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' >- >- # Both c and cxx compiler support -rpath directly >- hardcode_libdir_flag_spec_F77='-rpath $libdir' >- fi >- hardcode_libdir_separator_F77=: >- ;; >- >- sco3.2v5*) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var_F77=no >- export_dynamic_flag_spec_F77='${wl}-Bexport' >- runpath_var=LD_RUN_PATH >- hardcode_runpath_var=yes >- ;; >- >- solaris*) >- no_undefined_flag_F77=' -z text' >- if test "$GCC" = yes; then >- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' >- else >- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' >- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' >- fi >- hardcode_libdir_flag_spec_F77='-R$libdir' >- hardcode_shlibpath_var_F77=no >- case $host_os in >- solaris2.[0-5] | solaris2.[0-5].*) ;; >- *) # Supported since Solaris 2.6 (maybe 2.5.1?) >- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; >- esac >- link_all_deplibs_F77=yes >- ;; >- >- sunos4*) >- if test "x$host_vendor" = xsequent; then >- # Use $CC to link under sequent, because it throws in some extra .o >- # files that make .init and .fini sections work. >- archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' >- else >- archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' >- fi >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_direct_F77=yes >- hardcode_minus_L_F77=yes >- hardcode_shlibpath_var_F77=no >- ;; >- >- sysv4) >- case $host_vendor in >- sni) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_F77=yes # is this really true??? >- ;; >- siemens) >- ## LD is ld it makes a PLAMLIB >- ## CC just makes a GrossModule. >- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' >- reload_cmds_F77='$CC -r -o $output$reload_objs' >- hardcode_direct_F77=no >- ;; >- motorola) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie >- ;; >- esac >- runpath_var='LD_RUN_PATH' >- hardcode_shlibpath_var_F77=no >- ;; >- >- sysv4.3*) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var_F77=no >- export_dynamic_flag_spec_F77='-Bexport' >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec; then >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var_F77=no >- runpath_var=LD_RUN_PATH >- hardcode_runpath_var=yes >- ld_shlibs_F77=yes >- fi >- ;; >- >- sysv4.2uw2*) >- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_F77=yes >- hardcode_minus_L_F77=no >- hardcode_shlibpath_var_F77=no >- hardcode_runpath_var=yes >- runpath_var=LD_RUN_PATH >- ;; >- >- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) >- no_undefined_flag_F77='${wl}-z ${wl}text' >- if test "$GCC" = yes; then >- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- else >- archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- fi >- runpath_var='LD_RUN_PATH' >- hardcode_shlibpath_var_F77=no >- ;; >- >- sysv5*) >- no_undefined_flag_F77=' -z text' >- # $CC -shared without GNU ld will not create a library from C++ >- # object files and a static libstdc++, better avoid it by now >- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' >- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' >- hardcode_libdir_flag_spec_F77= >- hardcode_shlibpath_var_F77=no >- runpath_var='LD_RUN_PATH' >- ;; >- >- uts4*) >- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec_F77='-L$libdir' >- hardcode_shlibpath_var_F77=no >- ;; >- >- *) >- ld_shlibs_F77=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 >-echo "${ECHO_T}$ld_shlibs_F77" >&6 >-test "$ld_shlibs_F77" = no && can_build_shared=no >- >-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" >-if test "$GCC" = yes; then >- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" >-fi >- >-# >-# Do we need to explicitly link libc? >-# >-case "x$archive_cmds_need_lc_F77" in >-x|xyes) >- # Assume -lc should be added >- archive_cmds_need_lc_F77=yes >- >- if test "$enable_shared" = yes && test "$GCC" = yes; then >- case $archive_cmds_F77 in >- *'~'*) >- # FIXME: we may have to deal with multi-command sequences. >- ;; >- '$CC '*) >- # Test whether the compiler implicitly links with -lc since on some >- # systems, -lgcc has to come before -lc. If gcc already passes -lc >- # to ld, don't add -lc before -lgcc. >- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 >-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 >- $rm conftest* >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } 2>conftest.err; then >- soname=conftest >- lib=conftest >- libobjs=conftest.$ac_objext >- deplibs= >- wl=$lt_prog_compiler_wl_F77 >- compiler_flags=-v >- linker_flags=-v >- verstring= >- output_objdir=. >- libname=conftest >- lt_save_allow_undefined_flag=$allow_undefined_flag_F77 >- allow_undefined_flag_F77= >- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 >- (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >- then >- archive_cmds_need_lc_F77=no >- else >- archive_cmds_need_lc_F77=yes >- fi >- allow_undefined_flag_F77=$lt_save_allow_undefined_flag >- else >- cat conftest.err 1>&5 >- fi >- $rm conftest* >- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 >-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 >- ;; >- esac >- fi >- ;; >-esac >- >-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 >-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 >-library_names_spec= >-libname_spec='lib$name' >-soname_spec= >-shrext=".so" >-postinstall_cmds= >-postuninstall_cmds= >-finish_cmds= >-finish_eval= >-shlibpath_var= >-shlibpath_overrides_runpath=unknown >-version_type=none >-dynamic_linker="$host_os ld.so" >-sys_lib_dlsearch_path_spec="/lib /usr/lib" >-if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then >- # if the path contains ";" then we assume it to be the separator >- # otherwise default to the standard path separator (i.e. ":") - it is >- # assumed that no part of a normal pathname contains ";" but that should >- # okay in the real world where ";" in dirpaths is itself problematic. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >-else >- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" >-fi >-need_lib_prefix=unknown >-hardcode_into_libs=no >- >-# when you set need_version to no, make sure it does not cause -set_version >-# flags to be left without arguments >-need_version=unknown >- >-case $host_os in >-aix3*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' >- shlibpath_var=LIBPATH >- >- # AIX 3 has no versioning support, so we append a major version to the name. >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- >-aix4* | aix5*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- hardcode_into_libs=yes >- if test "$host_cpu" = ia64; then >- # AIX 5 supports IA64 >- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- else >- # With GCC up to 2.95.x, collect2 would create an import file >- # for dependence libraries. The import file would start with >- # the line `#! .'. This would cause the generated library to >- # depend on `.', always an invalid library. This was fixed in >- # development snapshots of GCC prior to 3.0. >- case $host_os in >- aix4 | aix4.[01] | aix4.[01].*) >- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' >- echo ' yes ' >- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then >- : >- else >- can_build_shared=no >- fi >- ;; >- esac >- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct >- # soname into executable. Probably we can add versioning support to >- # collect2, so additional links can be useful in future. >- if test "$aix_use_runtimelinking" = yes; then >- # If using run time linking (on AIX 4.2 or later) use lib<name>.so >- # instead of lib<name>.a to let people know that these are not >- # typical AIX shared libraries. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- else >- # We preserve .a as extension for shared libraries through AIX4.2 >- # and later when we are not doing run time linking. >- library_names_spec='${libname}${release}.a $libname.a' >- soname_spec='${libname}${release}${shared_ext}$major' >- fi >- shlibpath_var=LIBPATH >- fi >- ;; >- >-amigaos*) >- library_names_spec='$libname.ixlibrary $libname.a' >- # Create ${libname}_ixlibrary.a entries in /sys/libs. >- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' >- ;; >- >-beos*) >- library_names_spec='${libname}${shared_ext}' >- dynamic_linker="$host_os ld.so" >- shlibpath_var=LIBRARY_PATH >- ;; >- >-bsdi4*) >- version_type=linux >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" >- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" >- # the default ld.so.conf also contains /usr/contrib/lib and >- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow >- # libtool to hard-code these into programs >- ;; >- >-cygwin* | mingw* | pw32*) >- version_type=windows >- shrext=".dll" >- need_version=no >- need_lib_prefix=no >- >- case $GCC,$host_os in >- yes,cygwin* | yes,mingw* | yes,pw32*) >- library_names_spec='$libname.dll.a' >- # DLL is installed to $(libdir)/../bin by postinstall_cmds >- postinstall_cmds='base_file=`basename \${file}`~ >- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ >- dldir=$destdir/`dirname \$dlpath`~ >- test -d \$dldir || mkdir -p \$dldir~ >- $install_prog $dir/$dlname \$dldir/$dlname' >- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ >- dlpath=$dir/\$dldll~ >- $rm \$dlpath' >- shlibpath_overrides_runpath=yes >- >- case $host_os in >- cygwin*) >- # Cygwin DLLs use 'cyg' prefix rather than 'lib' >- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" >- ;; >- mingw*) >- # MinGW DLLs use traditional 'lib' prefix >- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then >- # It is most probably a Windows format PATH printed by >- # mingw gcc, but we are running on Cygwin. Gcc prints its search >- # path with ; separators, and with drive letters. We can handle the >- # drive letters (cygwin fileutils understands them), so leave them, >- # especially as we might pass files found there to a mingw objdump, >- # which wouldn't understand a cygwinified path. Ahh. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >- ;; >- pw32*) >- # pw32 DLLs use 'pw' prefix rather than 'lib' >- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' >- ;; >- esac >- ;; >- >- *) >- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' >- ;; >- esac >- dynamic_linker='Win32 ld.exe' >- # FIXME: first we should search . and the directory the executable is in >- shlibpath_var=PATH >- ;; >- >-darwin* | rhapsody*) >- dynamic_linker="$host_os dyld" >- version_type=darwin >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' >- soname_spec='${libname}${release}${major}$shared_ext' >- shlibpath_overrides_runpath=yes >- shlibpath_var=DYLD_LIBRARY_PATH >- shrext='$(test .$module = .yes && echo .so || echo .dylib)' >- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. >- if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` >- else >- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' >- fi >- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' >- ;; >- >-dgux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-freebsd1*) >- dynamic_linker=no >- ;; >- >-kfreebsd*-gnu) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- dynamic_linker='GNU ld.so' >- ;; >- >-freebsd*) >- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` >- version_type=freebsd-$objformat >- case $version_type in >- freebsd-elf*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' >- need_version=no >- need_lib_prefix=no >- ;; >- freebsd-*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' >- need_version=yes >- ;; >- esac >- shlibpath_var=LD_LIBRARY_PATH >- case $host_os in >- freebsd2*) >- shlibpath_overrides_runpath=yes >- ;; >- freebsd3.01* | freebsdelf3.01*) >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- *) # from 3.2 on >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- ;; >- esac >- ;; >- >-gnu*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- hardcode_into_libs=yes >- ;; >- >-hpux9* | hpux10* | hpux11*) >- # Give a soname corresponding to the major version so that dld.sl refuses to >- # link against other versions. >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- case "$host_cpu" in >- ia64*) >- shrext='.so' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.so" >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- if test "X$HPUX_IA64_MODE" = X32; then >- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" >- else >- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" >- fi >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- hppa*64*) >- shrext='.sl' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- *) >- shrext='.sl' >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=SHLIB_PATH >- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- esac >- # HP-UX runs *really* slowly unless shared libraries are mode 555. >- postinstall_cmds='chmod 555 $lib' >- ;; >- >-irix5* | irix6* | nonstopux*) >- case $host_os in >- nonstopux*) version_type=nonstopux ;; >- *) >- if test "$lt_cv_prog_gnu_ld" = yes; then >- version_type=linux >- else >- version_type=irix >- fi ;; >- esac >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' >- case $host_os in >- irix5* | nonstopux*) >- libsuff= shlibsuff= >- ;; >- *) >- case $LD in # libtool.m4 will add one of these switches to LD >- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") >- libsuff= shlibsuff= libmagic=32-bit;; >- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") >- libsuff=32 shlibsuff=N32 libmagic=N32;; >- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") >- libsuff=64 shlibsuff=64 libmagic=64-bit;; >- *) libsuff= shlibsuff= libmagic=never-match;; >- esac >- ;; >- esac >- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" >- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" >- hardcode_into_libs=yes >- ;; >- >-# No shared lib support for Linux oldld, aout, or coff. >-linux*oldld* | linux*aout* | linux*coff*) >- dynamic_linker=no >- ;; >- >-# This must be Linux ELF. >-linux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- # This implies no fast_install, which is unacceptable. >- # Some rework will be needed to allow for fast_install >- # before this can be enabled. >- hardcode_into_libs=yes >- >- # We used to test for /lib/ld.so.1 and disable shared libraries on >- # powerpc, because MkLinux only supported shared libraries with the >- # GNU dynamic linker. Since this was broken with cross compilers, >- # most powerpc-linux boxes support dynamic linking these days and >- # people can always --disable-shared, the test was removed, and we >- # assume the GNU/Linux dynamic linker is in use. >- dynamic_linker='GNU/Linux ld.so' >- ;; >- >-netbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- dynamic_linker='NetBSD (a.out) ld.so' >- else >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- dynamic_linker='NetBSD ld.elf_so' >- fi >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- >-newsos6) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-nto-qnx*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-openbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- case $host_os in >- openbsd2.[89] | openbsd2.[89].*) >- shlibpath_overrides_runpath=no >- ;; >- *) >- shlibpath_overrides_runpath=yes >- ;; >- esac >- else >- shlibpath_overrides_runpath=yes >- fi >- ;; >- >-os2*) >- libname_spec='$name' >- shrext=".dll" >- need_lib_prefix=no >- library_names_spec='$libname${shared_ext} $libname.a' >- dynamic_linker='OS/2 ld.exe' >- shlibpath_var=LIBPATH >- ;; >- >-osf3* | osf4* | osf5*) >- version_type=osf >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" >- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" >- ;; >- >-sco3.2v5*) >- version_type=osf >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-solaris*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- # ldd complains unless libraries are executable >- postinstall_cmds='chmod +x $lib' >- ;; >- >-sunos4*) >- version_type=sunos >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- if test "$with_gnu_ld" = yes; then >- need_lib_prefix=no >- fi >- need_version=yes >- ;; >- >-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- case $host_vendor in >- sni) >- shlibpath_overrides_runpath=no >- need_lib_prefix=no >- export_dynamic_flag_spec='${wl}-Blargedynsym' >- runpath_var=LD_RUN_PATH >- ;; >- siemens) >- need_lib_prefix=no >- ;; >- motorola) >- need_lib_prefix=no >- need_version=no >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' >- ;; >- esac >- ;; >- >-sysv4*MP*) >- if test -d /usr/nec ;then >- version_type=linux >- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' >- soname_spec='$libname${shared_ext}.$major' >- shlibpath_var=LD_LIBRARY_PATH >- fi >- ;; >- >-uts4*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-*) >- dynamic_linker=no >- ;; >-esac >-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 >-echo "${ECHO_T}$dynamic_linker" >&6 >-test "$dynamic_linker" = no && can_build_shared=no >- >-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 >-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 >-hardcode_action_F77= >-if test -n "$hardcode_libdir_flag_spec_F77" || \ >- test -n "$runpath_var F77" || \ >- test "X$hardcode_automatic_F77"="Xyes" ; then >- >- # We can hardcode non-existant directories. >- if test "$hardcode_direct_F77" != no && >- # If the only mechanism to avoid hardcoding is shlibpath_var, we >- # have to relink, otherwise we might link with an installed library >- # when we should be linking with a yet-to-be-installed one >- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && >- test "$hardcode_minus_L_F77" != no; then >- # Linking always hardcodes the temporary library directory. >- hardcode_action_F77=relink >- else >- # We can link without hardcoding, and we can hardcode nonexisting dirs. >- hardcode_action_F77=immediate >- fi >-else >- # We cannot hardcode anything, or else we can only hardcode existing >- # directories. >- hardcode_action_F77=unsupported >-fi >-echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 >-echo "${ECHO_T}$hardcode_action_F77" >&6 >- >-if test "$hardcode_action_F77" = relink; then >- # Fast installation is not supported >- enable_fast_install=no >-elif test "$shlibpath_overrides_runpath" = yes || >- test "$enable_shared" = no; then >- # Fast installation is not necessary >- enable_fast_install=needless >-fi >- >-striplib= >-old_striplib= >-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 >-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 >-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then >- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" >- test -z "$striplib" && striplib="$STRIP --strip-unneeded" >-# <PATCH NAME="ISW20030916-1"> >-# <NEW> >-# The following section is a PATCH to overcome the >-# stripped import library issues under cygwin >- case $host_os in >- cygwin*) >- striplib= >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- *) >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- ;; >- esac >-# </NEW> >-# <OLD> >-# AC_MSG_RESULT([yes]) >-# </OLD> >-# </PATCH> >- >-else >-# FIXME - insert some real tests, host_os isn't really good enough >- case $host_os in >- darwin*) >- if test -n "$STRIP" ; then >- striplib="$STRIP -x" >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- ;; >- *) >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- esac >-fi >- >- >- >-# The else clause should only fire when bootstrapping the >-# libtool distribution, otherwise you forgot to ship ltmain.sh >-# with your package, and you will get complaints that there are >-# no rules to generate ltmain.sh. >-if test -f "$ltmain"; then >- # See if we are running on zsh, and set the options which allow our commands through >- # without removal of \ escapes. >- if test -n "${ZSH_VERSION+set}" ; then >- setopt NO_GLOB_SUBST >- fi >- # Now quote all the things that may contain metacharacters while being >- # careful not to overquote the AC_SUBSTed values. We take copies of the >- # variables and quote the copies for generation of the libtool script. >- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ >- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ >- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ >- deplibs_check_method reload_flag reload_cmds need_locks \ >- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ >- lt_cv_sys_global_symbol_to_c_name_address \ >- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ >- old_postinstall_cmds old_postuninstall_cmds \ >- compiler_F77 \ >- CC_F77 \ >- LD_F77 \ >- lt_prog_compiler_wl_F77 \ >- lt_prog_compiler_pic_F77 \ >- lt_prog_compiler_static_F77 \ >- lt_prog_compiler_no_builtin_flag_F77 \ >- export_dynamic_flag_spec_F77 \ >- thread_safe_flag_spec_F77 \ >- whole_archive_flag_spec_F77 \ >- enable_shared_with_static_runtimes_F77 \ >- old_archive_cmds_F77 \ >- old_archive_from_new_cmds_F77 \ >- predep_objects_F77 \ >- postdep_objects_F77 \ >- predeps_F77 \ >- postdeps_F77 \ >- compiler_lib_search_path_F77 \ >- archive_cmds_F77 \ >- archive_expsym_cmds_F77 \ >- postinstall_cmds_F77 \ >- postuninstall_cmds_F77 \ >- old_archive_from_expsyms_cmds_F77 \ >- allow_undefined_flag_F77 \ >- no_undefined_flag_F77 \ >- export_symbols_cmds_F77 \ >- hardcode_libdir_flag_spec_F77 \ >- hardcode_libdir_flag_spec_ld_F77 \ >- hardcode_libdir_separator_F77 \ >- hardcode_automatic_F77 \ >- module_cmds_F77 \ >- module_expsym_cmds_F77 \ >- lt_cv_prog_compiler_c_o_F77 \ >- exclude_expsyms_F77 \ >- include_expsyms_F77; do >- >- case $var in >- old_archive_cmds_F77 | \ >- old_archive_from_new_cmds_F77 | \ >- archive_cmds_F77 | \ >- archive_expsym_cmds_F77 | \ >- module_cmds_F77 | \ >- module_expsym_cmds_F77 | \ >- old_archive_from_expsyms_cmds_F77 | \ >- export_symbols_cmds_F77 | \ >- extract_expsyms_cmds | reload_cmds | finish_cmds | \ >- postinstall_cmds | postuninstall_cmds | \ >- old_postinstall_cmds | old_postuninstall_cmds | \ >- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) >- # Double-quote double-evaled strings. >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" >- ;; >- *) >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" >- ;; >- esac >- done >- >- case $lt_echo in >- *'\$0 --fallback-echo"') >- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` >- ;; >- esac >- >-cfgfile="$ofile" >- >- cat <<__EOF__ >> "$cfgfile" >-# ### BEGIN LIBTOOL TAG CONFIG: $tagname >- >-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: >- >-# Shell to use when invoking shell scripts. >-SHELL=$lt_SHELL >- >-# Whether or not to build shared libraries. >-build_libtool_libs=$enable_shared >- >-# Whether or not to build static libraries. >-build_old_libs=$enable_static >- >-# Whether or not to add -lc for building shared libraries. >-build_libtool_need_lc=$archive_cmds_need_lc_F77 >- >-# Whether or not to disallow shared libs when runtime libs are static >-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 >- >-# Whether or not to optimize for fast installation. >-fast_install=$enable_fast_install >- >-# The host system. >-host_alias=$host_alias >-host=$host >- >-# An echo program that does not interpret backslashes. >-echo=$lt_echo >- >-# The archiver. >-AR=$lt_AR >-AR_FLAGS=$lt_AR_FLAGS >- >-# A C compiler. >-LTCC=$lt_LTCC >- >-# A language-specific compiler. >-CC=$lt_compiler_F77 >- >-# Is the compiler the GNU C compiler? >-with_gcc=$GCC_F77 >- >-# An ERE matcher. >-EGREP=$lt_EGREP >- >-# The linker used to build libraries. >-LD=$lt_LD_F77 >- >-# Whether we need hard or soft links. >-LN_S=$lt_LN_S >- >-# A BSD-compatible nm program. >-NM=$lt_NM >- >-# A symbol stripping program >-STRIP=$STRIP >- >-# Used to examine libraries when file_magic_cmd begins "file" >-MAGIC_CMD=$MAGIC_CMD >- >-# Used on cygwin: DLL creation program. >-DLLTOOL="$DLLTOOL" >- >-# Used on cygwin: object dumper. >-OBJDUMP="$OBJDUMP" >- >-# Used on cygwin: assembler. >-AS="$AS" >- >-# The name of the directory that contains temporary libtool files. >-objdir=$objdir >- >-# How to create reloadable object files. >-reload_flag=$lt_reload_flag >-reload_cmds=$lt_reload_cmds >- >-# How to pass a linker flag through the compiler. >-wl=$lt_lt_prog_compiler_wl_F77 >- >-# Object file suffix (normally "o"). >-objext="$ac_objext" >- >-# Old archive suffix (normally "a"). >-libext="$libext" >- >-# Shared library suffix (normally ".so"). >-shrext='$shrext' >- >-# Executable file suffix (normally ""). >-exeext="$exeext" >- >-# Additional compiler flags for building library objects. >-pic_flag=$lt_lt_prog_compiler_pic_F77 >-pic_mode=$pic_mode >- >-# What is the maximum length of a command? >-max_cmd_len=$lt_cv_sys_max_cmd_len >- >-# Does compiler simultaneously support -c and -o options? >-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 >- >-# Must we lock files when doing compilation ? >-need_locks=$lt_need_locks >- >-# Do we need the lib prefix for modules? >-need_lib_prefix=$need_lib_prefix >- >-# Do we need a version for libraries? >-need_version=$need_version >- >-# Whether dlopen is supported. >-dlopen_support=$enable_dlopen >- >-# Whether dlopen of programs is supported. >-dlopen_self=$enable_dlopen_self >- >-# Whether dlopen of statically linked programs is supported. >-dlopen_self_static=$enable_dlopen_self_static >- >-# Compiler flag to prevent dynamic linking. >-link_static_flag=$lt_lt_prog_compiler_static_F77 >- >-# Compiler flag to turn off builtin functions. >-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 >- >-# Compiler flag to allow reflexive dlopens. >-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 >- >-# Compiler flag to generate shared objects directly from archives. >-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 >- >-# Compiler flag to generate thread-safe objects. >-thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 >- >-# Library versioning type. >-version_type=$version_type >- >-# Format of library name prefix. >-libname_spec=$lt_libname_spec >- >-# List of archive names. First name is the real one, the rest are links. >-# The last name is the one that the linker finds with -lNAME. >-library_names_spec=$lt_library_names_spec >- >-# The coded name of the library, if different from the real name. >-soname_spec=$lt_soname_spec >- >-# Commands used to build and install an old-style archive. >-RANLIB=$lt_RANLIB >-old_archive_cmds=$lt_old_archive_cmds_F77 >-old_postinstall_cmds=$lt_old_postinstall_cmds >-old_postuninstall_cmds=$lt_old_postuninstall_cmds >- >-# Create an old-style archive from a shared archive. >-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 >- >-# Create a temporary old-style archive to link instead of a shared archive. >-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 >- >-# Commands used to build and install a shared archive. >-archive_cmds=$lt_archive_cmds_F77 >-archive_expsym_cmds=$lt_archive_expsym_cmds_F77 >-postinstall_cmds=$lt_postinstall_cmds >-postuninstall_cmds=$lt_postuninstall_cmds >- >-# Commands used to build a loadable module (assumed same as above if empty) >-module_cmds=$lt_module_cmds_F77 >-module_expsym_cmds=$lt_module_expsym_cmds_F77 >- >-# Commands to strip libraries. >-old_striplib=$lt_old_striplib >-striplib=$lt_striplib >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predep_objects=$lt_predep_objects_F77 >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdep_objects=$lt_postdep_objects_F77 >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predeps=$lt_predeps_F77 >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdeps=$lt_postdeps_F77 >- >-# The library search path used internally by the compiler when linking >-# a shared library. >-compiler_lib_search_path=$lt_compiler_lib_search_path_F77 >- >-# Method to check whether dependent libraries are shared objects. >-deplibs_check_method=$lt_deplibs_check_method >- >-# Command to use when deplibs_check_method == file_magic. >-file_magic_cmd=$lt_file_magic_cmd >- >-# Flag that allows shared libraries with undefined symbols to be built. >-allow_undefined_flag=$lt_allow_undefined_flag_F77 >- >-# Flag that forces no undefined symbols. >-no_undefined_flag=$lt_no_undefined_flag_F77 >- >-# Commands used to finish a libtool library installation in a directory. >-finish_cmds=$lt_finish_cmds >- >-# Same as above, but a single script fragment to be evaled but not shown. >-finish_eval=$lt_finish_eval >- >-# Take the output of nm and produce a listing of raw symbols and C names. >-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe >- >-# Transform the output of nm in a proper C declaration >-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl >- >-# Transform the output of nm in a C name address pair >-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address >- >-# This is the shared library runtime path variable. >-runpath_var=$runpath_var >- >-# This is the shared library path variable. >-shlibpath_var=$shlibpath_var >- >-# Is shlibpath searched before the hard-coded library search path? >-shlibpath_overrides_runpath=$shlibpath_overrides_runpath >- >-# How to hardcode a shared library path into an executable. >-hardcode_action=$hardcode_action_F77 >- >-# Whether we should hardcode library paths into libraries. >-hardcode_into_libs=$hardcode_into_libs >- >-# Flag to hardcode \$libdir into a binary during linking. >-# This must work even if \$libdir does not exist. >-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 >- >-# If ld is used when linking, flag to hardcode \$libdir into >-# a binary during linking. This must work even if \$libdir does >-# not exist. >-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 >- >-# Whether we need a single -rpath flag with a separated argument. >-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 >- >-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the >-# resulting binary. >-hardcode_direct=$hardcode_direct_F77 >- >-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the >-# resulting binary. >-hardcode_minus_L=$hardcode_minus_L_F77 >- >-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into >-# the resulting binary. >-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 >- >-# Set to yes if building a shared library automatically hardcodes DIR into the library >-# and all subsequent libraries and executables linked against it. >-hardcode_automatic=$hardcode_automatic_F77 >- >-# Variables whose values should be saved in libtool wrapper scripts and >-# restored at relink time. >-variables_saved_for_relink="$variables_saved_for_relink" >- >-# Whether libtool must link a program against all its dependency libraries. >-link_all_deplibs=$link_all_deplibs_F77 >- >-# Compile-time system search path for libraries >-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec >- >-# Run-time system search path for libraries >-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec >- >-# Fix the shell variable \$srcfile for the compiler. >-fix_srcfile_path="$fix_srcfile_path_F77" >- >-# Set to yes if exported symbols are required. >-always_export_symbols=$always_export_symbols_F77 >- >-# The commands to list exported symbols. >-export_symbols_cmds=$lt_export_symbols_cmds_F77 >- >-# The commands to extract the exported symbol list from a shared archive. >-extract_expsyms_cmds=$lt_extract_expsyms_cmds >- >-# Symbols that should not be listed in the preloaded symbols. >-exclude_expsyms=$lt_exclude_expsyms_F77 >- >-# Symbols that must always be exported. >-include_expsyms=$lt_include_expsyms_F77 >- >-# ### END LIBTOOL TAG CONFIG: $tagname >- >-__EOF__ >- >- >-else >- # If there is no Makefile yet, we rely on a make rule to execute >- # `config.status --recheck' to rerun these tests and create the >- # libtool script then. >- test -f Makefile && make "$ltmain" >-fi >- >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >-CC="$lt_save_CC" >- >- else >- tagname="" >- fi >- ;; >- >- GCJ) >- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then >- >- >- >-# Source file extension for Java test sources. >-ac_ext=java >- >-# Object file extension for compiled Java test sources. >-objext=o >-objext_GCJ=$objext >- >-# Code to be used in simple compile tests >-lt_simple_compile_test_code="class foo {}\n" >- >-# Code to be used in simple link tests >-lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' >- >-# ltmain only uses $CC for tagged configurations so make sure $CC is set. >- >-# If no C compiler was specified, use CC. >-LTCC=${LTCC-"$CC"} >- >-# Allow CC to be a program name with arguments. >-compiler=$CC >- >- >-# Allow CC to be a program name with arguments. >-lt_save_CC="$CC" >-CC=${GCJ-"gcj"} >-compiler=$CC >-compiler_GCJ=$CC >- >-# GCJ did not exist at the time GCC didn't implicitly link libc in. >-archive_cmds_need_lc_GCJ=no >- >-## CAVEAT EMPTOR: >-## There is no encapsulation within the following macros, do not change >-## the running order or otherwise move them around unless you know exactly >-## what you are doing... >- >-lt_prog_compiler_no_builtin_flag_GCJ= >- >-if test "$GCC" = yes; then >- lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' >- >- >-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 >-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 >-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_prog_compiler_rtti_exceptions=no >- ac_outfile=conftest.$ac_objext >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- lt_compiler_flag="-fno-rtti -fno-exceptions" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- # The option is referenced via a variable to avoid confusing sed. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:15831: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>conftest.err) >- ac_status=$? >- cat conftest.err >&5 >- echo "$as_me:15835: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s "$ac_outfile"; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s conftest.err; then >- lt_cv_prog_compiler_rtti_exceptions=yes >- fi >- fi >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 >-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 >- >-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then >- lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" >-else >- : >-fi >- >-fi >- >-lt_prog_compiler_wl_GCJ= >-lt_prog_compiler_pic_GCJ= >-lt_prog_compiler_static_GCJ= >- >-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 >-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 >- >- if test "$GCC" = yes; then >- lt_prog_compiler_wl_GCJ='-Wl,' >- lt_prog_compiler_static_GCJ='-static' >- >- case $host_os in >- aix*) >- # All AIX code is PIC. >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static_GCJ='-Bstatic' >- fi >- ;; >- >- amigaos*) >- # FIXME: we need at least 68020 code to build shared libraries, but >- # adding the `-m68020' flag to GCC prevents building anything better, >- # like `-m68040'. >- lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' >- ;; >- >- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) >- # PIC is the default for these OSes. >- ;; >- >- mingw* | pw32* | os2*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' >- ;; >- >- darwin* | rhapsody*) >- # PIC is the default on this platform >- # Common symbols not allowed in MH_DYLIB files >- lt_prog_compiler_pic_GCJ='-fno-common' >- ;; >- >- msdosdjgpp*) >- # Just because we use GCC doesn't mean we suddenly get shared libraries >- # on systems that don't support them. >- lt_prog_compiler_can_build_shared_GCJ=no >- enable_shared=no >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec; then >- lt_prog_compiler_pic_GCJ=-Kconform_pic >- fi >- ;; >- >- hpux*) >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic_GCJ='-fPIC' >- ;; >- esac >- ;; >- >- *) >- lt_prog_compiler_pic_GCJ='-fPIC' >- ;; >- esac >- else >- # PORTME Check for flag to pass linker flags through the system compiler. >- case $host_os in >- aix*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- if test "$host_cpu" = ia64; then >- # AIX 5 now supports IA64 processor >- lt_prog_compiler_static_GCJ='-Bstatic' >- else >- lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' >- fi >- ;; >- >- mingw* | pw32* | os2*) >- # This hack is so that the source file can tell whether it is being >- # built for inclusion in a dll (and should export symbols for example). >- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' >- ;; >- >- hpux9* | hpux10* | hpux11*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but >- # not for PA HP-UX. >- case "$host_cpu" in >- hppa*64*|ia64*) >- # +Z the default >- ;; >- *) >- lt_prog_compiler_pic_GCJ='+Z' >- ;; >- esac >- # Is there a better lt_prog_compiler_static that works with the bundled CC? >- lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' >- ;; >- >- irix5* | irix6* | nonstopux*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- # PIC (with -KPIC) is the default. >- lt_prog_compiler_static_GCJ='-non_shared' >- ;; >- >- newsos6) >- lt_prog_compiler_pic_GCJ='-KPIC' >- lt_prog_compiler_static_GCJ='-Bstatic' >- ;; >- >- linux*) >- case $CC in >- icc* | ecc*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- lt_prog_compiler_pic_GCJ='-KPIC' >- lt_prog_compiler_static_GCJ='-static' >- ;; >- ccc*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- # All Alpha code is PIC. >- lt_prog_compiler_static_GCJ='-non_shared' >- ;; >- esac >- ;; >- >- osf3* | osf4* | osf5*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- # All OSF/1 code is PIC. >- lt_prog_compiler_static_GCJ='-non_shared' >- ;; >- >- sco3.2v5*) >- lt_prog_compiler_pic_GCJ='-Kpic' >- lt_prog_compiler_static_GCJ='-dn' >- ;; >- >- solaris*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- lt_prog_compiler_pic_GCJ='-KPIC' >- lt_prog_compiler_static_GCJ='-Bstatic' >- ;; >- >- sunos4*) >- lt_prog_compiler_wl_GCJ='-Qoption ld ' >- lt_prog_compiler_pic_GCJ='-PIC' >- lt_prog_compiler_static_GCJ='-Bstatic' >- ;; >- >- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- lt_prog_compiler_wl_GCJ='-Wl,' >- lt_prog_compiler_pic_GCJ='-KPIC' >- lt_prog_compiler_static_GCJ='-Bstatic' >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec ;then >- lt_prog_compiler_pic_GCJ='-Kconform_pic' >- lt_prog_compiler_static_GCJ='-Bstatic' >- fi >- ;; >- >- uts4*) >- lt_prog_compiler_pic_GCJ='-pic' >- lt_prog_compiler_static_GCJ='-Bstatic' >- ;; >- >- *) >- lt_prog_compiler_can_build_shared_GCJ=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 >- >-# >-# Check to make sure the PIC flag actually works. >-# >-if test -n "$lt_prog_compiler_pic_GCJ"; then >- >-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 >-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 >-if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_prog_compiler_pic_works_GCJ=no >- ac_outfile=conftest.$ac_objext >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- lt_compiler_flag="$lt_prog_compiler_pic_GCJ" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- # The option is referenced via a variable to avoid confusing sed. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:16064: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>conftest.err) >- ac_status=$? >- cat conftest.err >&5 >- echo "$as_me:16068: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s "$ac_outfile"; then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s conftest.err; then >- lt_prog_compiler_pic_works_GCJ=yes >- fi >- fi >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 >-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 >- >-if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then >- case $lt_prog_compiler_pic_GCJ in >- "" | " "*) ;; >- *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; >- esac >-else >- lt_prog_compiler_pic_GCJ= >- lt_prog_compiler_can_build_shared_GCJ=no >-fi >- >-fi >-case "$host_os" in >- # For platforms which do not support PIC, -DPIC is meaningless: >- *djgpp*) >- lt_prog_compiler_pic_GCJ= >- ;; >- *) >- lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" >- ;; >-esac >- >-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 >-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 >-if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- lt_cv_prog_compiler_c_o_GCJ=no >- $rm -r conftest 2>/dev/null >- mkdir conftest >- cd conftest >- mkdir out >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- # According to Tom Tromey, Ian Lance Taylor reported there are C compilers >- # that will create temporary files in the current directory regardless of >- # the output directory. Thus, making CWD read-only will cause this test >- # to fail, enabling locking or at least warning the user not to do parallel >- # builds. >- chmod -w . >- >- lt_compiler_flag="-o out/conftest2.$ac_objext" >- # Insert the option either (1) after the last *FLAGS variable, or >- # (2) before a word containing "conftest.", or (3) at the end. >- # Note that $ac_compile itself does not contain backslashes and begins >- # with a dollar sign (not a hyphen), so the echo should work correctly. >- lt_compile=`echo "$ac_compile" | $SED \ >- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ >- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ >- -e 's:$: $lt_compiler_flag:'` >- (eval echo "\"\$as_me:16131: $lt_compile\"" >&5) >- (eval "$lt_compile" 2>out/conftest.err) >- ac_status=$? >- cat out/conftest.err >&5 >- echo "$as_me:16135: \$? = $ac_status" >&5 >- if (exit $ac_status) && test -s out/conftest2.$ac_objext >- then >- # The compiler can only warn and ignore the option if not recognized >- # So say no if there are warnings >- if test ! -s out/conftest.err; then >- lt_cv_prog_compiler_c_o_GCJ=yes >- fi >- fi >- chmod u+w . >- $rm conftest* >- # SGI C++ compiler will create directory out/ii_files/ for >- # template instantiation >- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files >- $rm out/* && rmdir out >- cd .. >- rmdir conftest >- $rm conftest* >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 >-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 >- >- >-hard_links="nottested" >-if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then >- # do not overwrite the value of need_locks provided by the user >- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 >-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 >- hard_links=yes >- $rm conftest* >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- touch conftest.a >- ln conftest.a conftest.b 2>&5 || hard_links=no >- ln conftest.a conftest.b 2>/dev/null && hard_links=no >- echo "$as_me:$LINENO: result: $hard_links" >&5 >-echo "${ECHO_T}$hard_links" >&6 >- if test "$hard_links" = no; then >- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 >-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} >- need_locks=warn >- fi >-else >- need_locks=no >-fi >- >-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 >-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 >- >- runpath_var= >- allow_undefined_flag_GCJ= >- enable_shared_with_static_runtimes_GCJ=no >- archive_cmds_GCJ= >- archive_expsym_cmds_GCJ= >- old_archive_From_new_cmds_GCJ= >- old_archive_from_expsyms_cmds_GCJ= >- export_dynamic_flag_spec_GCJ= >- whole_archive_flag_spec_GCJ= >- thread_safe_flag_spec_GCJ= >- hardcode_libdir_flag_spec_GCJ= >- hardcode_libdir_flag_spec_ld_GCJ= >- hardcode_libdir_separator_GCJ= >- hardcode_direct_GCJ=no >- hardcode_minus_L_GCJ=no >- hardcode_shlibpath_var_GCJ=unsupported >- link_all_deplibs_GCJ=unknown >- hardcode_automatic_GCJ=no >- module_cmds_GCJ= >- module_expsym_cmds_GCJ= >- always_export_symbols_GCJ=no >- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' >- # include_expsyms should be a list of space-separated symbols to be *always* >- # included in the symbol list >- include_expsyms_GCJ= >- # exclude_expsyms can be an extended regexp of symbols to exclude >- # it will be wrapped by ` (' and `)$', so one must not match beginning or >- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', >- # as well as any symbol that contains `d'. >- exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" >- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out >- # platforms (ab)use it in PIC code, but their linkers get confused if >- # the symbol is explicitly referenced. Since portable code cannot >- # rely on this symbol name, it's probably fine to never include it in >- # preloaded symbol tables. >- extract_expsyms_cmds= >- >- case $host_os in >- cygwin* | mingw* | pw32*) >- # FIXME: the MSVC++ port hasn't been tested in a loooong time >- # When not using gcc, we currently assume that we are using >- # Microsoft Visual C++. >- if test "$GCC" != yes; then >- with_gnu_ld=no >- fi >- ;; >- openbsd*) >- with_gnu_ld=no >- ;; >- esac >- >- ld_shlibs_GCJ=yes >- if test "$with_gnu_ld" = yes; then >- # If archive_cmds runs LD, not CC, wlarc should be empty >- wlarc='${wl}' >- >- # See if GNU ld supports shared libraries. >- case $host_os in >- aix3* | aix4* | aix5*) >- # On AIX/PPC, the GNU linker is very broken >- if test "$host_cpu" != ia64; then >- ld_shlibs_GCJ=no >- cat <<EOF 1>&2 >- >-*** Warning: the GNU linker, at least up to release 2.9.1, is reported >-*** to be unable to reliably create shared libraries on AIX. >-*** Therefore, libtool is disabling shared libraries support. If you >-*** really care for shared libraries, you may want to modify your PATH >-*** so that a non-GNU linker is found, and then restart. >- >-EOF >- fi >- ;; >- >- amigaos*) >- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_minus_L_GCJ=yes >- >- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports >- # that the semantics of dynamic libraries on AmigaOS, at least up >- # to version 4, is to share data among multiple programs linked >- # with the same dynamic library. Since this doesn't match the >- # behavior of shared libraries on other platforms, we can't use >- # them. >- ld_shlibs_GCJ=no >- ;; >- >- beos*) >- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- allow_undefined_flag_GCJ=unsupported >- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc >- # support --undefined. This deserves some investigation. FIXME >- archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- else >- ld_shlibs_GCJ=no >- fi >- ;; >- >- cygwin* | mingw* | pw32*) >- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, >- # as there is no search path for DLLs. >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- allow_undefined_flag_GCJ=unsupported >- always_export_symbols_GCJ=no >- enable_shared_with_static_runtimes_GCJ=yes >- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' >- >- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then >- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- # If the export-symbols file already is a .def file (1st line >- # is EXPORTS), use it as is; otherwise, prepend... >- archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then >- cp $export_symbols $output_objdir/$soname.def; >- else >- echo EXPORTS > $output_objdir/$soname.def; >- cat $export_symbols >> $output_objdir/$soname.def; >- fi~ >- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' >- else >- ld_shlibs=no >- fi >- ;; >- >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' >- wlarc= >- else >- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- fi >- ;; >- >- solaris* | sysv5*) >- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then >- ld_shlibs_GCJ=no >- cat <<EOF 1>&2 >- >-*** Warning: The releases 2.8.* of the GNU linker cannot reliably >-*** create shared libraries on Solaris systems. Therefore, libtool >-*** is disabling shared libraries support. We urge you to upgrade GNU >-*** binutils to release 2.9.1 or newer. Another option is to modify >-*** your PATH or compiler configuration so that the native linker is >-*** used, and then restart. >- >-EOF >- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- else >- ld_shlibs_GCJ=no >- fi >- ;; >- >- sunos4*) >- archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- wlarc= >- hardcode_direct_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- *) >- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then >- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' >- archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' >- else >- ld_shlibs_GCJ=no >- fi >- ;; >- esac >- >- if test "$ld_shlibs_GCJ" = yes; then >- runpath_var=LD_RUN_PATH >- hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' >- export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' >- # ancient GNU ld didn't support --whole-archive et. al. >- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then >- whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' >- else >- whole_archive_flag_spec_GCJ= >- fi >- fi >- else >- # PORTME fill in a description of your system's linker (not GNU ld) >- case $host_os in >- aix3*) >- allow_undefined_flag_GCJ=unsupported >- always_export_symbols_GCJ=yes >- archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' >- # Note: this linker hardcodes the directories in LIBPATH if there >- # are no directories specified by -L. >- hardcode_minus_L_GCJ=yes >- if test "$GCC" = yes && test -z "$link_static_flag"; then >- # Neither direct hardcoding nor static linking is supported with a >- # broken collect2. >- hardcode_direct_GCJ=unsupported >- fi >- ;; >- >- aix4* | aix5*) >- if test "$host_cpu" = ia64; then >- # On IA64, the linker does run time linking by default, so we don't >- # have to do anything special. >- aix_use_runtimelinking=no >- exp_sym_flag='-Bexport' >- no_entry_flag="" >- else >- # If we're using GNU nm, then we don't want the "-C" option. >- # -C means demangle to AIX nm, but means don't demangle with GNU nm >- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then >- export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- else >- export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' >- fi >- aix_use_runtimelinking=no >- >- # Test if we are trying to use run time linking or normal >- # AIX style linking. If -brtl is somewhere in LDFLAGS, we >- # need to do runtime linking. >- case $host_os in aix4.[23]|aix4.[23].*|aix5*) >- for ld_flag in $LDFLAGS; do >- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then >- aix_use_runtimelinking=yes >- break >- fi >- done >- esac >- >- exp_sym_flag='-bexport' >- no_entry_flag='-bnoentry' >- fi >- >- # When large executables or shared objects are built, AIX ld can >- # have problems creating the table of contents. If linking a library >- # or program results in "error TOC overflow" add -mminimal-toc to >- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not >- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. >- >- archive_cmds_GCJ='' >- hardcode_direct_GCJ=yes >- hardcode_libdir_separator_GCJ=':' >- link_all_deplibs_GCJ=yes >- >- if test "$GCC" = yes; then >- case $host_os in aix4.012|aix4.012.*) >- # We only want to do this on AIX 4.2 and lower, the check >- # below for broken collect2 doesn't work under 4.3+ >- collect2name=`${CC} -print-prog-name=collect2` >- if test -f "$collect2name" && \ >- strings "$collect2name" | grep resolve_lib_name >/dev/null >- then >- # We have reworked collect2 >- hardcode_direct_GCJ=yes >- else >- # We have old collect2 >- hardcode_direct_GCJ=unsupported >- # It fails to find uninstalled libraries when the uninstalled >- # path is not listed in the libpath. Setting hardcode_minus_L >- # to unsupported forces relinking >- hardcode_minus_L_GCJ=yes >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_libdir_separator_GCJ= >- fi >- esac >- shared_flag='-shared' >- else >- # not using gcc >- if test "$host_cpu" = ia64; then >- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release >- # chokes on -Wl,-G. The following line is correct: >- shared_flag='-G' >- else >- if test "$aix_use_runtimelinking" = yes; then >- shared_flag='${wl}-G' >- else >- shared_flag='${wl}-bM:SRE' >- fi >- fi >- fi >- >- # It seems that -bexpall does not export symbols beginning with >- # underscore (_), so it is better to generate a list of symbols to export. >- always_export_symbols_GCJ=yes >- if test "$aix_use_runtimelinking" = yes; then >- # Warning - without using the other runtime loading flags (-brtl), >- # -berok will link without error, but may produce a broken library. >- allow_undefined_flag_GCJ='-berok' >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" >- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" >- else >- if test "$host_cpu" = ia64; then >- hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' >- allow_undefined_flag_GCJ="-z nodefs" >- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" >- else >- # Determine the default libpath from the value encoded in an empty executable. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'` >-# Check for a 64-bit object if we didn't find anything. >-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } >-}'`; fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi >- >- hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" >- # Warning - without using the other run time loading flags, >- # -berok will link without error, but may produce a broken library. >- no_undefined_flag_GCJ=' ${wl}-bernotok' >- allow_undefined_flag_GCJ=' ${wl}-berok' >- # -bexpall does not export symbols beginning with underscore (_) >- always_export_symbols_GCJ=yes >- # Exported symbols can be pulled into shared objects from archives >- whole_archive_flag_spec_GCJ=' ' >- archive_cmds_need_lc_GCJ=yes >- # This is similar to how AIX traditionally builds it's shared libraries. >- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' >- fi >- fi >- ;; >- >- amigaos*) >- archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_minus_L_GCJ=yes >- # see comment about different semantics on the GNU ld section >- ld_shlibs_GCJ=no >- ;; >- >- bsdi4*) >- export_dynamic_flag_spec_GCJ=-rdynamic >- ;; >- >- cygwin* | mingw* | pw32*) >- # When not using gcc, we currently assume that we are using >- # Microsoft Visual C++. >- # hardcode_libdir_flag_spec is actually meaningless, as there is >- # no search path for DLLs. >- hardcode_libdir_flag_spec_GCJ=' ' >- allow_undefined_flag_GCJ=unsupported >- # Tell ltmain to make .lib files, not .a files. >- libext=lib >- # Tell ltmain to make .dll files, not .so files. >- shrext=".dll" >- # FIXME: Setting linknames here is a bad hack. >- archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' >- # The linker will automatically build a .lib file if we build a DLL. >- old_archive_From_new_cmds_GCJ='true' >- # FIXME: Should let the user specify the lib program. >- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' >- fix_srcfile_path='`cygpath -w "$srcfile"`' >- enable_shared_with_static_runtimes_GCJ=yes >- ;; >- >- darwin* | rhapsody*) >- if test "$GXX" = yes ; then >- archive_cmds_need_lc_GCJ=no >- case "$host_os" in >- rhapsody* | darwin1.[012]) >- allow_undefined_flag_GCJ='-undefined suppress' >- ;; >- *) # Darwin 1.3 on >- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then >- allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' >- else >- case ${MACOSX_DEPLOYMENT_TARGET} in >- 10.[012]) >- allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' >- ;; >- 10.*) >- allow_undefined_flag_GCJ='-undefined dynamic_lookup' >- ;; >- esac >- fi >- ;; >- esac >- lt_int_apple_cc_single_mod=no >- output_verbose_link_cmd='echo' >- if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then >- lt_int_apple_cc_single_mod=yes >- fi >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- else >- archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' >- fi >- module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' >- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's >- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then >- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- else >- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- fi >- module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' >- hardcode_direct_GCJ=no >- hardcode_automatic_GCJ=yes >- hardcode_shlibpath_var_GCJ=unsupported >- whole_archive_flag_spec_GCJ='-all_load $convenience' >- link_all_deplibs_GCJ=yes >- else >- ld_shlibs_GCJ=no >- fi >- ;; >- >- dgux*) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- freebsd1*) >- ld_shlibs_GCJ=no >- ;; >- >- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor >- # support. Future versions do this automatically, but an explicit c++rt0.o >- # does not break anything, and helps significantly (at the cost of a little >- # extra space). >- freebsd2.2*) >- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' >- hardcode_libdir_flag_spec_GCJ='-R$libdir' >- hardcode_direct_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- # Unfortunately, older versions of FreeBSD 2 do not have this feature. >- freebsd2*) >- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_GCJ=yes >- hardcode_minus_L_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. >- freebsd* | kfreebsd*-gnu) >- archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec_GCJ='-R$libdir' >- hardcode_direct_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- hpux9*) >- if test "$GCC" = yes; then >- archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- else >- archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' >- fi >- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator_GCJ=: >- hardcode_direct_GCJ=yes >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L_GCJ=yes >- export_dynamic_flag_spec_GCJ='${wl}-E' >- ;; >- >- hpux10* | hpux11*) >- if test "$GCC" = yes -a "$with_gnu_ld" = no; then >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- ;; >- *) >- archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' >- ;; >- esac >- else >- case "$host_cpu" in >- hppa*64*|ia64*) >- archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' >- ;; >- *) >- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' >- ;; >- esac >- fi >- if test "$with_gnu_ld" = no; then >- case "$host_cpu" in >- hppa*64*) >- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' >- hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' >- hardcode_libdir_separator_GCJ=: >- hardcode_direct_GCJ=no >- hardcode_shlibpath_var_GCJ=no >- ;; >- ia64*) >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_direct_GCJ=no >- hardcode_shlibpath_var_GCJ=no >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L_GCJ=yes >- ;; >- *) >- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' >- hardcode_libdir_separator_GCJ=: >- hardcode_direct_GCJ=yes >- export_dynamic_flag_spec_GCJ='${wl}-E' >- >- # hardcode_minus_L: Not really in the search PATH, >- # but as the default location of the library. >- hardcode_minus_L_GCJ=yes >- ;; >- esac >- fi >- ;; >- >- irix5* | irix6* | nonstopux*) >- if test "$GCC" = yes; then >- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- else >- archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' >- fi >- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_GCJ=: >- link_all_deplibs_GCJ=yes >- ;; >- >- netbsd*) >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out >- else >- archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF >- fi >- hardcode_libdir_flag_spec_GCJ='-R$libdir' >- hardcode_direct_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- newsos6) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_GCJ=yes >- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_GCJ=: >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- openbsd*) >- hardcode_direct_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' >- export_dynamic_flag_spec_GCJ='${wl}-E' >- else >- case $host_os in >- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) >- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec_GCJ='-R$libdir' >- ;; >- *) >- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' >- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' >- ;; >- esac >- fi >- ;; >- >- os2*) >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_minus_L_GCJ=yes >- allow_undefined_flag_GCJ=unsupported >- archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' >- old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' >- ;; >- >- osf3*) >- if test "$GCC" = yes; then >- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- else >- allow_undefined_flag_GCJ=' -expect_unresolved \*' >- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- fi >- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' >- hardcode_libdir_separator_GCJ=: >- ;; >- >- osf4* | osf5*) # as osf3* with the addition of -msym flag >- if test "$GCC" = yes; then >- allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' >- archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' >- hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' >- else >- allow_undefined_flag_GCJ=' -expect_unresolved \*' >- archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' >- archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ >- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' >- >- # Both c and cxx compiler support -rpath directly >- hardcode_libdir_flag_spec_GCJ='-rpath $libdir' >- fi >- hardcode_libdir_separator_GCJ=: >- ;; >- >- sco3.2v5*) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var_GCJ=no >- export_dynamic_flag_spec_GCJ='${wl}-Bexport' >- runpath_var=LD_RUN_PATH >- hardcode_runpath_var=yes >- ;; >- >- solaris*) >- no_undefined_flag_GCJ=' -z text' >- if test "$GCC" = yes; then >- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' >- else >- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' >- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' >- fi >- hardcode_libdir_flag_spec_GCJ='-R$libdir' >- hardcode_shlibpath_var_GCJ=no >- case $host_os in >- solaris2.[0-5] | solaris2.[0-5].*) ;; >- *) # Supported since Solaris 2.6 (maybe 2.5.1?) >- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; >- esac >- link_all_deplibs_GCJ=yes >- ;; >- >- sunos4*) >- if test "x$host_vendor" = xsequent; then >- # Use $CC to link under sequent, because it throws in some extra .o >- # files that make .init and .fini sections work. >- archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' >- else >- archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' >- fi >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_direct_GCJ=yes >- hardcode_minus_L_GCJ=yes >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- sysv4) >- case $host_vendor in >- sni) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_GCJ=yes # is this really true??? >- ;; >- siemens) >- ## LD is ld it makes a PLAMLIB >- ## CC just makes a GrossModule. >- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' >- reload_cmds_GCJ='$CC -r -o $output$reload_objs' >- hardcode_direct_GCJ=no >- ;; >- motorola) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie >- ;; >- esac >- runpath_var='LD_RUN_PATH' >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- sysv4.3*) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var_GCJ=no >- export_dynamic_flag_spec_GCJ='-Bexport' >- ;; >- >- sysv4*MP*) >- if test -d /usr/nec; then >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_shlibpath_var_GCJ=no >- runpath_var=LD_RUN_PATH >- hardcode_runpath_var=yes >- ld_shlibs_GCJ=yes >- fi >- ;; >- >- sysv4.2uw2*) >- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' >- hardcode_direct_GCJ=yes >- hardcode_minus_L_GCJ=no >- hardcode_shlibpath_var_GCJ=no >- hardcode_runpath_var=yes >- runpath_var=LD_RUN_PATH >- ;; >- >- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) >- no_undefined_flag_GCJ='${wl}-z ${wl}text' >- if test "$GCC" = yes; then >- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- else >- archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' >- fi >- runpath_var='LD_RUN_PATH' >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- sysv5*) >- no_undefined_flag_GCJ=' -z text' >- # $CC -shared without GNU ld will not create a library from C++ >- # object files and a static libstdc++, better avoid it by now >- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' >- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ >- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' >- hardcode_libdir_flag_spec_GCJ= >- hardcode_shlibpath_var_GCJ=no >- runpath_var='LD_RUN_PATH' >- ;; >- >- uts4*) >- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' >- hardcode_libdir_flag_spec_GCJ='-L$libdir' >- hardcode_shlibpath_var_GCJ=no >- ;; >- >- *) >- ld_shlibs_GCJ=no >- ;; >- esac >- fi >- >-echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 >-echo "${ECHO_T}$ld_shlibs_GCJ" >&6 >-test "$ld_shlibs_GCJ" = no && can_build_shared=no >- >-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" >-if test "$GCC" = yes; then >- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" >-fi >- >-# >-# Do we need to explicitly link libc? >-# >-case "x$archive_cmds_need_lc_GCJ" in >-x|xyes) >- # Assume -lc should be added >- archive_cmds_need_lc_GCJ=yes >- >- if test "$enable_shared" = yes && test "$GCC" = yes; then >- case $archive_cmds_GCJ in >- *'~'*) >- # FIXME: we may have to deal with multi-command sequences. >- ;; >- '$CC '*) >- # Test whether the compiler implicitly links with -lc since on some >- # systems, -lgcc has to come before -lc. If gcc already passes -lc >- # to ld, don't add -lc before -lgcc. >- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 >-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 >- $rm conftest* >- printf "$lt_simple_compile_test_code" > conftest.$ac_ext >- >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } 2>conftest.err; then >- soname=conftest >- lib=conftest >- libobjs=conftest.$ac_objext >- deplibs= >- wl=$lt_prog_compiler_wl_GCJ >- compiler_flags=-v >- linker_flags=-v >- verstring= >- output_objdir=. >- libname=conftest >- lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ >- allow_undefined_flag_GCJ= >- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 >- (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >- then >- archive_cmds_need_lc_GCJ=no >- else >- archive_cmds_need_lc_GCJ=yes >- fi >- allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag >- else >- cat conftest.err 1>&5 >- fi >- $rm conftest* >- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 >-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 >- ;; >- esac >- fi >- ;; >-esac >- >-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 >-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 >-library_names_spec= >-libname_spec='lib$name' >-soname_spec= >-shrext=".so" >-postinstall_cmds= >-postuninstall_cmds= >-finish_cmds= >-finish_eval= >-shlibpath_var= >-shlibpath_overrides_runpath=unknown >-version_type=none >-dynamic_linker="$host_os ld.so" >-sys_lib_dlsearch_path_spec="/lib /usr/lib" >-if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then >- # if the path contains ";" then we assume it to be the separator >- # otherwise default to the standard path separator (i.e. ":") - it is >- # assumed that no part of a normal pathname contains ";" but that should >- # okay in the real world where ";" in dirpaths is itself problematic. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >-else >- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" >-fi >-need_lib_prefix=unknown >-hardcode_into_libs=no >- >-# when you set need_version to no, make sure it does not cause -set_version >-# flags to be left without arguments >-need_version=unknown >- >-case $host_os in >-aix3*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' >- shlibpath_var=LIBPATH >- >- # AIX 3 has no versioning support, so we append a major version to the name. >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- >-aix4* | aix5*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- hardcode_into_libs=yes >- if test "$host_cpu" = ia64; then >- # AIX 5 supports IA64 >- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- else >- # With GCC up to 2.95.x, collect2 would create an import file >- # for dependence libraries. The import file would start with >- # the line `#! .'. This would cause the generated library to >- # depend on `.', always an invalid library. This was fixed in >- # development snapshots of GCC prior to 3.0. >- case $host_os in >- aix4 | aix4.[01] | aix4.[01].*) >- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' >- echo ' yes ' >- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then >- : >- else >- can_build_shared=no >- fi >- ;; >- esac >- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct >- # soname into executable. Probably we can add versioning support to >- # collect2, so additional links can be useful in future. >- if test "$aix_use_runtimelinking" = yes; then >- # If using run time linking (on AIX 4.2 or later) use lib<name>.so >- # instead of lib<name>.a to let people know that these are not >- # typical AIX shared libraries. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- else >- # We preserve .a as extension for shared libraries through AIX4.2 >- # and later when we are not doing run time linking. >- library_names_spec='${libname}${release}.a $libname.a' >- soname_spec='${libname}${release}${shared_ext}$major' >- fi >- shlibpath_var=LIBPATH >- fi >- ;; >- >-amigaos*) >- library_names_spec='$libname.ixlibrary $libname.a' >- # Create ${libname}_ixlibrary.a entries in /sys/libs. >- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' >- ;; >- >-beos*) >- library_names_spec='${libname}${shared_ext}' >- dynamic_linker="$host_os ld.so" >- shlibpath_var=LIBRARY_PATH >- ;; >- >-bsdi4*) >- version_type=linux >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" >- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" >- # the default ld.so.conf also contains /usr/contrib/lib and >- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow >- # libtool to hard-code these into programs >- ;; >- >-cygwin* | mingw* | pw32*) >- version_type=windows >- shrext=".dll" >- need_version=no >- need_lib_prefix=no >- >- case $GCC,$host_os in >- yes,cygwin* | yes,mingw* | yes,pw32*) >- library_names_spec='$libname.dll.a' >- # DLL is installed to $(libdir)/../bin by postinstall_cmds >- postinstall_cmds='base_file=`basename \${file}`~ >- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ >- dldir=$destdir/`dirname \$dlpath`~ >- test -d \$dldir || mkdir -p \$dldir~ >- $install_prog $dir/$dlname \$dldir/$dlname' >- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ >- dlpath=$dir/\$dldll~ >- $rm \$dlpath' >- shlibpath_overrides_runpath=yes >- >- case $host_os in >- cygwin*) >- # Cygwin DLLs use 'cyg' prefix rather than 'lib' >- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" >- ;; >- mingw*) >- # MinGW DLLs use traditional 'lib' prefix >- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' >- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` >- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then >- # It is most probably a Windows format PATH printed by >- # mingw gcc, but we are running on Cygwin. Gcc prints its search >- # path with ; separators, and with drive letters. We can handle the >- # drive letters (cygwin fileutils understands them), so leave them, >- # especially as we might pass files found there to a mingw objdump, >- # which wouldn't understand a cygwinified path. Ahh. >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` >- else >- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` >- fi >- ;; >- pw32*) >- # pw32 DLLs use 'pw' prefix rather than 'lib' >- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' >- ;; >- esac >- ;; >- >- *) >- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' >- ;; >- esac >- dynamic_linker='Win32 ld.exe' >- # FIXME: first we should search . and the directory the executable is in >- shlibpath_var=PATH >- ;; >- >-darwin* | rhapsody*) >- dynamic_linker="$host_os dyld" >- version_type=darwin >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' >- soname_spec='${libname}${release}${major}$shared_ext' >- shlibpath_overrides_runpath=yes >- shlibpath_var=DYLD_LIBRARY_PATH >- shrext='$(test .$module = .yes && echo .so || echo .dylib)' >- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. >- if test "$GCC" = yes; then >- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` >- else >- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' >- fi >- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' >- ;; >- >-dgux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-freebsd1*) >- dynamic_linker=no >- ;; >- >-kfreebsd*-gnu) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- dynamic_linker='GNU ld.so' >- ;; >- >-freebsd*) >- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` >- version_type=freebsd-$objformat >- case $version_type in >- freebsd-elf*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' >- need_version=no >- need_lib_prefix=no >- ;; >- freebsd-*) >- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' >- need_version=yes >- ;; >- esac >- shlibpath_var=LD_LIBRARY_PATH >- case $host_os in >- freebsd2*) >- shlibpath_overrides_runpath=yes >- ;; >- freebsd3.01* | freebsdelf3.01*) >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- *) # from 3.2 on >- shlibpath_overrides_runpath=no >- hardcode_into_libs=yes >- ;; >- esac >- ;; >- >-gnu*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- hardcode_into_libs=yes >- ;; >- >-hpux9* | hpux10* | hpux11*) >- # Give a soname corresponding to the major version so that dld.sl refuses to >- # link against other versions. >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- case "$host_cpu" in >- ia64*) >- shrext='.so' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.so" >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- if test "X$HPUX_IA64_MODE" = X32; then >- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" >- else >- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" >- fi >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- hppa*64*) >- shrext='.sl' >- hardcode_into_libs=yes >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH >- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" >- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec >- ;; >- *) >- shrext='.sl' >- dynamic_linker="$host_os dld.sl" >- shlibpath_var=SHLIB_PATH >- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- ;; >- esac >- # HP-UX runs *really* slowly unless shared libraries are mode 555. >- postinstall_cmds='chmod 555 $lib' >- ;; >- >-irix5* | irix6* | nonstopux*) >- case $host_os in >- nonstopux*) version_type=nonstopux ;; >- *) >- if test "$lt_cv_prog_gnu_ld" = yes; then >- version_type=linux >- else >- version_type=irix >- fi ;; >- esac >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' >- case $host_os in >- irix5* | nonstopux*) >- libsuff= shlibsuff= >- ;; >- *) >- case $LD in # libtool.m4 will add one of these switches to LD >- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") >- libsuff= shlibsuff= libmagic=32-bit;; >- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") >- libsuff=32 shlibsuff=N32 libmagic=N32;; >- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") >- libsuff=64 shlibsuff=64 libmagic=64-bit;; >- *) libsuff= shlibsuff= libmagic=never-match;; >- esac >- ;; >- esac >- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" >- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" >- hardcode_into_libs=yes >- ;; >- >-# No shared lib support for Linux oldld, aout, or coff. >-linux*oldld* | linux*aout* | linux*coff*) >- dynamic_linker=no >- ;; >- >-# This must be Linux ELF. >-linux*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=no >- # This implies no fast_install, which is unacceptable. >- # Some rework will be needed to allow for fast_install >- # before this can be enabled. >- hardcode_into_libs=yes >- >- # We used to test for /lib/ld.so.1 and disable shared libraries on >- # powerpc, because MkLinux only supported shared libraries with the >- # GNU dynamic linker. Since this was broken with cross compilers, >- # most powerpc-linux boxes support dynamic linking these days and >- # people can always --disable-shared, the test was removed, and we >- # assume the GNU/Linux dynamic linker is in use. >- dynamic_linker='GNU/Linux ld.so' >- ;; >- >-netbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- dynamic_linker='NetBSD (a.out) ld.so' >- else >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- dynamic_linker='NetBSD ld.elf_so' >- fi >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- ;; >- >-newsos6) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-nto-qnx*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- ;; >- >-openbsd*) >- version_type=sunos >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then >- case $host_os in >- openbsd2.[89] | openbsd2.[89].*) >- shlibpath_overrides_runpath=no >- ;; >- *) >- shlibpath_overrides_runpath=yes >- ;; >- esac >- else >- shlibpath_overrides_runpath=yes >- fi >- ;; >- >-os2*) >- libname_spec='$name' >- shrext=".dll" >- need_lib_prefix=no >- library_names_spec='$libname${shared_ext} $libname.a' >- dynamic_linker='OS/2 ld.exe' >- shlibpath_var=LIBPATH >- ;; >- >-osf3* | osf4* | osf5*) >- version_type=osf >- need_lib_prefix=no >- need_version=no >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" >- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" >- ;; >- >-sco3.2v5*) >- version_type=osf >- soname_spec='${libname}${release}${shared_ext}$major' >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-solaris*) >- version_type=linux >- need_lib_prefix=no >- need_version=no >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- hardcode_into_libs=yes >- # ldd complains unless libraries are executable >- postinstall_cmds='chmod +x $lib' >- ;; >- >-sunos4*) >- version_type=sunos >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' >- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' >- shlibpath_var=LD_LIBRARY_PATH >- shlibpath_overrides_runpath=yes >- if test "$with_gnu_ld" = yes; then >- need_lib_prefix=no >- fi >- need_version=yes >- ;; >- >-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- case $host_vendor in >- sni) >- shlibpath_overrides_runpath=no >- need_lib_prefix=no >- export_dynamic_flag_spec='${wl}-Blargedynsym' >- runpath_var=LD_RUN_PATH >- ;; >- siemens) >- need_lib_prefix=no >- ;; >- motorola) >- need_lib_prefix=no >- need_version=no >- shlibpath_overrides_runpath=no >- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' >- ;; >- esac >- ;; >- >-sysv4*MP*) >- if test -d /usr/nec ;then >- version_type=linux >- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' >- soname_spec='$libname${shared_ext}.$major' >- shlibpath_var=LD_LIBRARY_PATH >- fi >- ;; >- >-uts4*) >- version_type=linux >- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' >- soname_spec='${libname}${release}${shared_ext}$major' >- shlibpath_var=LD_LIBRARY_PATH >- ;; >- >-*) >- dynamic_linker=no >- ;; >-esac >-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 >-echo "${ECHO_T}$dynamic_linker" >&6 >-test "$dynamic_linker" = no && can_build_shared=no >- >-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 >-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 >-hardcode_action_GCJ= >-if test -n "$hardcode_libdir_flag_spec_GCJ" || \ >- test -n "$runpath_var GCJ" || \ >- test "X$hardcode_automatic_GCJ"="Xyes" ; then >- >- # We can hardcode non-existant directories. >- if test "$hardcode_direct_GCJ" != no && >- # If the only mechanism to avoid hardcoding is shlibpath_var, we >- # have to relink, otherwise we might link with an installed library >- # when we should be linking with a yet-to-be-installed one >- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && >- test "$hardcode_minus_L_GCJ" != no; then >- # Linking always hardcodes the temporary library directory. >- hardcode_action_GCJ=relink >- else >- # We can link without hardcoding, and we can hardcode nonexisting dirs. >- hardcode_action_GCJ=immediate >- fi >-else >- # We cannot hardcode anything, or else we can only hardcode existing >- # directories. >- hardcode_action_GCJ=unsupported >-fi >-echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 >-echo "${ECHO_T}$hardcode_action_GCJ" >&6 >- >-if test "$hardcode_action_GCJ" = relink; then >- # Fast installation is not supported >- enable_fast_install=no >-elif test "$shlibpath_overrides_runpath" = yes || >- test "$enable_shared" = no; then >- # Fast installation is not necessary >- enable_fast_install=needless >-fi >- >-striplib= >-old_striplib= >-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 >-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 >-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then >- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" >- test -z "$striplib" && striplib="$STRIP --strip-unneeded" >-# <PATCH NAME="ISW20030916-1"> >-# <NEW> >-# The following section is a PATCH to overcome the >-# stripped import library issues under cygwin >- case $host_os in >- cygwin*) >- striplib= >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- *) >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- ;; >- esac >-# </NEW> >-# <OLD> >-# AC_MSG_RESULT([yes]) >-# </OLD> >-# </PATCH> >- >-else >-# FIXME - insert some real tests, host_os isn't really good enough >- case $host_os in >- darwin*) >- if test -n "$STRIP" ; then >- striplib="$STRIP -x" >- echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6 >- else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- ;; >- *) >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >- ;; >- esac >-fi >- >-if test "x$enable_dlopen" != xyes; then >- enable_dlopen=unknown >- enable_dlopen_self=unknown >- enable_dlopen_self_static=unknown >-else >- lt_cv_dlopen=no >- lt_cv_dlopen_libs= >- >- case $host_os in >- beos*) >- lt_cv_dlopen="load_add_on" >- lt_cv_dlopen_libs= >- lt_cv_dlopen_self=yes >- ;; >- >- mingw* | pw32*) >- lt_cv_dlopen="LoadLibrary" >- lt_cv_dlopen_libs= >- ;; >- >- cygwin*) >- lt_cv_dlopen="dlopen" >- lt_cv_dlopen_libs= >- ;; >- >- darwin*) >- # if libdl is installed we need to link against it >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" >-else >- >- lt_cv_dlopen="dyld" >- lt_cv_dlopen_libs= >- lt_cv_dlopen_self=yes >- >-fi >- >- ;; >- >- *) >- echo "$as_me:$LINENO: checking for shl_load" >&5 >-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 >-if test "${ac_cv_func_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define shl_load innocuous_shl_load >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char shl_load (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef shl_load >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_shl_load) || defined (__stub___shl_load) >-choke me >-#else >-char (*f) () = shl_load; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != shl_load; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 >-if test $ac_cv_func_shl_load = yes; then >- lt_cv_dlopen="shl_load" >-else >- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 >-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-int >-main () >-{ >-shl_load (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 >-if test $ac_cv_lib_dld_shl_load = yes; then >- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" >-else >- echo "$as_me:$LINENO: checking for dlopen" >&5 >-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 >-if test "${ac_cv_func_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define dlopen innocuous_dlopen >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char dlopen (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef dlopen >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_dlopen) || defined (__stub___dlopen) >-choke me >-#else >-char (*f) () = dlopen; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != dlopen; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 >-if test $ac_cv_func_dlopen = yes; then >- lt_cv_dlopen="dlopen" >-else >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" >-else >- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 >-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 >-if test "${ac_cv_lib_svld_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lsvld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_svld_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_svld_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 >-if test $ac_cv_lib_svld_dlopen = yes; then >- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" >-else >- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 >-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_dld_link+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dld_link (); >-int >-main () >-{ >-dld_link (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_dld_link=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_dld_link=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 >-if test $ac_cv_lib_dld_dld_link = yes; then >- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >- >- ;; >- esac >- >- if test "x$lt_cv_dlopen" != xno; then >- enable_dlopen=yes >- else >- enable_dlopen=no >- fi >- >- case $lt_cv_dlopen in >- dlopen) >- save_CPPFLAGS="$CPPFLAGS" >- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" >- >- save_LDFLAGS="$LDFLAGS" >- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" >- >- save_LIBS="$LIBS" >- LIBS="$lt_cv_dlopen_libs $LIBS" >- >- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 >-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 >-if test "${lt_cv_dlopen_self+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$cross_compiling" = yes; then : >- lt_cv_dlopen_self=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 18291 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; >- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; >- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; >- esac >- else : >- # compilation failed >- lt_cv_dlopen_self=no >- fi >-fi >-rm -fr conftest* >- >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 >-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 >- >- if test "x$lt_cv_dlopen_self" = xyes; then >- LDFLAGS="$LDFLAGS $link_static_flag" >- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 >-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 >-if test "${lt_cv_dlopen_self_static+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$cross_compiling" = yes; then : >- lt_cv_dlopen_self_static=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 18389 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; >- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; >- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; >- esac >- else : >- # compilation failed >- lt_cv_dlopen_self_static=no >- fi >-fi >-rm -fr conftest* >- >- >-fi >-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 >-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 >- fi >- >- CPPFLAGS="$save_CPPFLAGS" >- LDFLAGS="$save_LDFLAGS" >- LIBS="$save_LIBS" >- ;; >- esac >- >- case $lt_cv_dlopen_self in >- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; >- *) enable_dlopen_self=unknown ;; >- esac >- >- case $lt_cv_dlopen_self_static in >- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; >- *) enable_dlopen_self_static=unknown ;; >- esac >-fi >- >- >-# The else clause should only fire when bootstrapping the >-# libtool distribution, otherwise you forgot to ship ltmain.sh >-# with your package, and you will get complaints that there are >-# no rules to generate ltmain.sh. >-if test -f "$ltmain"; then >- # See if we are running on zsh, and set the options which allow our commands through >- # without removal of \ escapes. >- if test -n "${ZSH_VERSION+set}" ; then >- setopt NO_GLOB_SUBST >- fi >- # Now quote all the things that may contain metacharacters while being >- # careful not to overquote the AC_SUBSTed values. We take copies of the >- # variables and quote the copies for generation of the libtool script. >- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ >- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ >- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ >- deplibs_check_method reload_flag reload_cmds need_locks \ >- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ >- lt_cv_sys_global_symbol_to_c_name_address \ >- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ >- old_postinstall_cmds old_postuninstall_cmds \ >- compiler_GCJ \ >- CC_GCJ \ >- LD_GCJ \ >- lt_prog_compiler_wl_GCJ \ >- lt_prog_compiler_pic_GCJ \ >- lt_prog_compiler_static_GCJ \ >- lt_prog_compiler_no_builtin_flag_GCJ \ >- export_dynamic_flag_spec_GCJ \ >- thread_safe_flag_spec_GCJ \ >- whole_archive_flag_spec_GCJ \ >- enable_shared_with_static_runtimes_GCJ \ >- old_archive_cmds_GCJ \ >- old_archive_from_new_cmds_GCJ \ >- predep_objects_GCJ \ >- postdep_objects_GCJ \ >- predeps_GCJ \ >- postdeps_GCJ \ >- compiler_lib_search_path_GCJ \ >- archive_cmds_GCJ \ >- archive_expsym_cmds_GCJ \ >- postinstall_cmds_GCJ \ >- postuninstall_cmds_GCJ \ >- old_archive_from_expsyms_cmds_GCJ \ >- allow_undefined_flag_GCJ \ >- no_undefined_flag_GCJ \ >- export_symbols_cmds_GCJ \ >- hardcode_libdir_flag_spec_GCJ \ >- hardcode_libdir_flag_spec_ld_GCJ \ >- hardcode_libdir_separator_GCJ \ >- hardcode_automatic_GCJ \ >- module_cmds_GCJ \ >- module_expsym_cmds_GCJ \ >- lt_cv_prog_compiler_c_o_GCJ \ >- exclude_expsyms_GCJ \ >- include_expsyms_GCJ; do >- >- case $var in >- old_archive_cmds_GCJ | \ >- old_archive_from_new_cmds_GCJ | \ >- archive_cmds_GCJ | \ >- archive_expsym_cmds_GCJ | \ >- module_cmds_GCJ | \ >- module_expsym_cmds_GCJ | \ >- old_archive_from_expsyms_cmds_GCJ | \ >- export_symbols_cmds_GCJ | \ >- extract_expsyms_cmds | reload_cmds | finish_cmds | \ >- postinstall_cmds | postuninstall_cmds | \ >- old_postinstall_cmds | old_postuninstall_cmds | \ >- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) >- # Double-quote double-evaled strings. >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" >- ;; >- *) >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" >- ;; >- esac >- done >- >- case $lt_echo in >- *'\$0 --fallback-echo"') >- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` >- ;; >- esac >- >-cfgfile="$ofile" >- >- cat <<__EOF__ >> "$cfgfile" >-# ### BEGIN LIBTOOL TAG CONFIG: $tagname >- >-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: >- >-# Shell to use when invoking shell scripts. >-SHELL=$lt_SHELL >- >-# Whether or not to build shared libraries. >-build_libtool_libs=$enable_shared >- >-# Whether or not to build static libraries. >-build_old_libs=$enable_static >- >-# Whether or not to add -lc for building shared libraries. >-build_libtool_need_lc=$archive_cmds_need_lc_GCJ >- >-# Whether or not to disallow shared libs when runtime libs are static >-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ >- >-# Whether or not to optimize for fast installation. >-fast_install=$enable_fast_install >- >-# The host system. >-host_alias=$host_alias >-host=$host >- >-# An echo program that does not interpret backslashes. >-echo=$lt_echo >- >-# The archiver. >-AR=$lt_AR >-AR_FLAGS=$lt_AR_FLAGS >- >-# A C compiler. >-LTCC=$lt_LTCC >- >-# A language-specific compiler. >-CC=$lt_compiler_GCJ >- >-# Is the compiler the GNU C compiler? >-with_gcc=$GCC_GCJ >- >-# An ERE matcher. >-EGREP=$lt_EGREP >- >-# The linker used to build libraries. >-LD=$lt_LD_GCJ >- >-# Whether we need hard or soft links. >-LN_S=$lt_LN_S >- >-# A BSD-compatible nm program. >-NM=$lt_NM >- >-# A symbol stripping program >-STRIP=$STRIP >- >-# Used to examine libraries when file_magic_cmd begins "file" >-MAGIC_CMD=$MAGIC_CMD >- >-# Used on cygwin: DLL creation program. >-DLLTOOL="$DLLTOOL" >- >-# Used on cygwin: object dumper. >-OBJDUMP="$OBJDUMP" >- >-# Used on cygwin: assembler. >-AS="$AS" >- >-# The name of the directory that contains temporary libtool files. >-objdir=$objdir >- >-# How to create reloadable object files. >-reload_flag=$lt_reload_flag >-reload_cmds=$lt_reload_cmds >- >-# How to pass a linker flag through the compiler. >-wl=$lt_lt_prog_compiler_wl_GCJ >- >-# Object file suffix (normally "o"). >-objext="$ac_objext" >- >-# Old archive suffix (normally "a"). >-libext="$libext" >- >-# Shared library suffix (normally ".so"). >-shrext='$shrext' >- >-# Executable file suffix (normally ""). >-exeext="$exeext" >- >-# Additional compiler flags for building library objects. >-pic_flag=$lt_lt_prog_compiler_pic_GCJ >-pic_mode=$pic_mode >- >-# What is the maximum length of a command? >-max_cmd_len=$lt_cv_sys_max_cmd_len >- >-# Does compiler simultaneously support -c and -o options? >-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ >- >-# Must we lock files when doing compilation ? >-need_locks=$lt_need_locks >- >-# Do we need the lib prefix for modules? >-need_lib_prefix=$need_lib_prefix >- >-# Do we need a version for libraries? >-need_version=$need_version >- >-# Whether dlopen is supported. >-dlopen_support=$enable_dlopen >- >-# Whether dlopen of programs is supported. >-dlopen_self=$enable_dlopen_self >- >-# Whether dlopen of statically linked programs is supported. >-dlopen_self_static=$enable_dlopen_self_static >- >-# Compiler flag to prevent dynamic linking. >-link_static_flag=$lt_lt_prog_compiler_static_GCJ >- >-# Compiler flag to turn off builtin functions. >-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ >- >-# Compiler flag to allow reflexive dlopens. >-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ >- >-# Compiler flag to generate shared objects directly from archives. >-whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ >- >-# Compiler flag to generate thread-safe objects. >-thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ >- >-# Library versioning type. >-version_type=$version_type >- >-# Format of library name prefix. >-libname_spec=$lt_libname_spec >- >-# List of archive names. First name is the real one, the rest are links. >-# The last name is the one that the linker finds with -lNAME. >-library_names_spec=$lt_library_names_spec >- >-# The coded name of the library, if different from the real name. >-soname_spec=$lt_soname_spec >- >-# Commands used to build and install an old-style archive. >-RANLIB=$lt_RANLIB >-old_archive_cmds=$lt_old_archive_cmds_GCJ >-old_postinstall_cmds=$lt_old_postinstall_cmds >-old_postuninstall_cmds=$lt_old_postuninstall_cmds >- >-# Create an old-style archive from a shared archive. >-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ >- >-# Create a temporary old-style archive to link instead of a shared archive. >-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ >- >-# Commands used to build and install a shared archive. >-archive_cmds=$lt_archive_cmds_GCJ >-archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ >-postinstall_cmds=$lt_postinstall_cmds >-postuninstall_cmds=$lt_postuninstall_cmds >- >-# Commands used to build a loadable module (assumed same as above if empty) >-module_cmds=$lt_module_cmds_GCJ >-module_expsym_cmds=$lt_module_expsym_cmds_GCJ >- >-# Commands to strip libraries. >-old_striplib=$lt_old_striplib >-striplib=$lt_striplib >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predep_objects=$lt_predep_objects_GCJ >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdep_objects=$lt_postdep_objects_GCJ >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predeps=$lt_predeps_GCJ >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdeps=$lt_postdeps_GCJ >- >-# The library search path used internally by the compiler when linking >-# a shared library. >-compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ >- >-# Method to check whether dependent libraries are shared objects. >-deplibs_check_method=$lt_deplibs_check_method >- >-# Command to use when deplibs_check_method == file_magic. >-file_magic_cmd=$lt_file_magic_cmd >- >-# Flag that allows shared libraries with undefined symbols to be built. >-allow_undefined_flag=$lt_allow_undefined_flag_GCJ >- >-# Flag that forces no undefined symbols. >-no_undefined_flag=$lt_no_undefined_flag_GCJ >- >-# Commands used to finish a libtool library installation in a directory. >-finish_cmds=$lt_finish_cmds >- >-# Same as above, but a single script fragment to be evaled but not shown. >-finish_eval=$lt_finish_eval >- >-# Take the output of nm and produce a listing of raw symbols and C names. >-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe >- >-# Transform the output of nm in a proper C declaration >-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl >- >-# Transform the output of nm in a C name address pair >-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address >- >-# This is the shared library runtime path variable. >-runpath_var=$runpath_var >- >-# This is the shared library path variable. >-shlibpath_var=$shlibpath_var >- >-# Is shlibpath searched before the hard-coded library search path? >-shlibpath_overrides_runpath=$shlibpath_overrides_runpath >- >-# How to hardcode a shared library path into an executable. >-hardcode_action=$hardcode_action_GCJ >- >-# Whether we should hardcode library paths into libraries. >-hardcode_into_libs=$hardcode_into_libs >- >-# Flag to hardcode \$libdir into a binary during linking. >-# This must work even if \$libdir does not exist. >-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ >- >-# If ld is used when linking, flag to hardcode \$libdir into >-# a binary during linking. This must work even if \$libdir does >-# not exist. >-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ >- >-# Whether we need a single -rpath flag with a separated argument. >-hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ >- >-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the >-# resulting binary. >-hardcode_direct=$hardcode_direct_GCJ >- >-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the >-# resulting binary. >-hardcode_minus_L=$hardcode_minus_L_GCJ >- >-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into >-# the resulting binary. >-hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ >- >-# Set to yes if building a shared library automatically hardcodes DIR into the library >-# and all subsequent libraries and executables linked against it. >-hardcode_automatic=$hardcode_automatic_GCJ >- >-# Variables whose values should be saved in libtool wrapper scripts and >-# restored at relink time. >-variables_saved_for_relink="$variables_saved_for_relink" >- >-# Whether libtool must link a program against all its dependency libraries. >-link_all_deplibs=$link_all_deplibs_GCJ >- >-# Compile-time system search path for libraries >-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec >- >-# Run-time system search path for libraries >-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec >- >-# Fix the shell variable \$srcfile for the compiler. >-fix_srcfile_path="$fix_srcfile_path_GCJ" >- >-# Set to yes if exported symbols are required. >-always_export_symbols=$always_export_symbols_GCJ >- >-# The commands to list exported symbols. >-export_symbols_cmds=$lt_export_symbols_cmds_GCJ >- >-# The commands to extract the exported symbol list from a shared archive. >-extract_expsyms_cmds=$lt_extract_expsyms_cmds >- >-# Symbols that should not be listed in the preloaded symbols. >-exclude_expsyms=$lt_exclude_expsyms_GCJ >- >-# Symbols that must always be exported. >-include_expsyms=$lt_include_expsyms_GCJ >- >-# ### END LIBTOOL TAG CONFIG: $tagname >- >-__EOF__ >- >- >-else >- # If there is no Makefile yet, we rely on a make rule to execute >- # `config.status --recheck' to rerun these tests and create the >- # libtool script then. >- test -f Makefile && make "$ltmain" >-fi >- >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >-CC="$lt_save_CC" >- >- else >- tagname="" >- fi >- ;; >- >- RC) >- >- >- >-# Source file extension for RC test sources. >-ac_ext=rc >- >-# Object file extension for compiled RC test sources. >-objext=o >-objext_RC=$objext >- >-# Code to be used in simple compile tests >-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' >- >-# Code to be used in simple link tests >-lt_simple_link_test_code="$lt_simple_compile_test_code" >- >-# ltmain only uses $CC for tagged configurations so make sure $CC is set. >- >-# If no C compiler was specified, use CC. >-LTCC=${LTCC-"$CC"} >- >-# Allow CC to be a program name with arguments. >-compiler=$CC >- >- >-# Allow CC to be a program name with arguments. >-lt_save_CC="$CC" >-CC=${RC-"windres"} >-compiler=$CC >-compiler_RC=$CC >-lt_cv_prog_compiler_c_o_RC=yes >- >-# The else clause should only fire when bootstrapping the >-# libtool distribution, otherwise you forgot to ship ltmain.sh >-# with your package, and you will get complaints that there are >-# no rules to generate ltmain.sh. >-if test -f "$ltmain"; then >- # See if we are running on zsh, and set the options which allow our commands through >- # without removal of \ escapes. >- if test -n "${ZSH_VERSION+set}" ; then >- setopt NO_GLOB_SUBST >- fi >- # Now quote all the things that may contain metacharacters while being >- # careful not to overquote the AC_SUBSTed values. We take copies of the >- # variables and quote the copies for generation of the libtool script. >- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM SED SHELL \ >- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ >- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ >- deplibs_check_method reload_flag reload_cmds need_locks \ >- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ >- lt_cv_sys_global_symbol_to_c_name_address \ >- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ >- old_postinstall_cmds old_postuninstall_cmds \ >- compiler_RC \ >- CC_RC \ >- LD_RC \ >- lt_prog_compiler_wl_RC \ >- lt_prog_compiler_pic_RC \ >- lt_prog_compiler_static_RC \ >- lt_prog_compiler_no_builtin_flag_RC \ >- export_dynamic_flag_spec_RC \ >- thread_safe_flag_spec_RC \ >- whole_archive_flag_spec_RC \ >- enable_shared_with_static_runtimes_RC \ >- old_archive_cmds_RC \ >- old_archive_from_new_cmds_RC \ >- predep_objects_RC \ >- postdep_objects_RC \ >- predeps_RC \ >- postdeps_RC \ >- compiler_lib_search_path_RC \ >- archive_cmds_RC \ >- archive_expsym_cmds_RC \ >- postinstall_cmds_RC \ >- postuninstall_cmds_RC \ >- old_archive_from_expsyms_cmds_RC \ >- allow_undefined_flag_RC \ >- no_undefined_flag_RC \ >- export_symbols_cmds_RC \ >- hardcode_libdir_flag_spec_RC \ >- hardcode_libdir_flag_spec_ld_RC \ >- hardcode_libdir_separator_RC \ >- hardcode_automatic_RC \ >- module_cmds_RC \ >- module_expsym_cmds_RC \ >- lt_cv_prog_compiler_c_o_RC \ >- exclude_expsyms_RC \ >- include_expsyms_RC; do >- >- case $var in >- old_archive_cmds_RC | \ >- old_archive_from_new_cmds_RC | \ >- archive_cmds_RC | \ >- archive_expsym_cmds_RC | \ >- module_cmds_RC | \ >- module_expsym_cmds_RC | \ >- old_archive_from_expsyms_cmds_RC | \ >- export_symbols_cmds_RC | \ >- extract_expsyms_cmds | reload_cmds | finish_cmds | \ >- postinstall_cmds | postuninstall_cmds | \ >- old_postinstall_cmds | old_postuninstall_cmds | \ >- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) >- # Double-quote double-evaled strings. >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" >- ;; >- *) >- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" >- ;; >- esac >- done >- >- case $lt_echo in >- *'\$0 --fallback-echo"') >- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` >- ;; >- esac >- >-cfgfile="$ofile" >- >- cat <<__EOF__ >> "$cfgfile" >-# ### BEGIN LIBTOOL TAG CONFIG: $tagname >- >-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: >- >-# Shell to use when invoking shell scripts. >-SHELL=$lt_SHELL >- >-# Whether or not to build shared libraries. >-build_libtool_libs=$enable_shared >- >-# Whether or not to build static libraries. >-build_old_libs=$enable_static >- >-# Whether or not to add -lc for building shared libraries. >-build_libtool_need_lc=$archive_cmds_need_lc_RC >- >-# Whether or not to disallow shared libs when runtime libs are static >-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC >- >-# Whether or not to optimize for fast installation. >-fast_install=$enable_fast_install >- >-# The host system. >-host_alias=$host_alias >-host=$host >- >-# An echo program that does not interpret backslashes. >-echo=$lt_echo >- >-# The archiver. >-AR=$lt_AR >-AR_FLAGS=$lt_AR_FLAGS >- >-# A C compiler. >-LTCC=$lt_LTCC >- >-# A language-specific compiler. >-CC=$lt_compiler_RC >- >-# Is the compiler the GNU C compiler? >-with_gcc=$GCC_RC >- >-# An ERE matcher. >-EGREP=$lt_EGREP >- >-# The linker used to build libraries. >-LD=$lt_LD_RC >- >-# Whether we need hard or soft links. >-LN_S=$lt_LN_S >- >-# A BSD-compatible nm program. >-NM=$lt_NM >- >-# A symbol stripping program >-STRIP=$STRIP >- >-# Used to examine libraries when file_magic_cmd begins "file" >-MAGIC_CMD=$MAGIC_CMD >- >-# Used on cygwin: DLL creation program. >-DLLTOOL="$DLLTOOL" >- >-# Used on cygwin: object dumper. >-OBJDUMP="$OBJDUMP" >- >-# Used on cygwin: assembler. >-AS="$AS" >- >-# The name of the directory that contains temporary libtool files. >-objdir=$objdir >- >-# How to create reloadable object files. >-reload_flag=$lt_reload_flag >-reload_cmds=$lt_reload_cmds >- >-# How to pass a linker flag through the compiler. >-wl=$lt_lt_prog_compiler_wl_RC >- >-# Object file suffix (normally "o"). >-objext="$ac_objext" >- >-# Old archive suffix (normally "a"). >-libext="$libext" >- >-# Shared library suffix (normally ".so"). >-shrext='$shrext' >- >-# Executable file suffix (normally ""). >-exeext="$exeext" >- >-# Additional compiler flags for building library objects. >-pic_flag=$lt_lt_prog_compiler_pic_RC >-pic_mode=$pic_mode >- >-# What is the maximum length of a command? >-max_cmd_len=$lt_cv_sys_max_cmd_len >- >-# Does compiler simultaneously support -c and -o options? >-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC >- >-# Must we lock files when doing compilation ? >-need_locks=$lt_need_locks >- >-# Do we need the lib prefix for modules? >-need_lib_prefix=$need_lib_prefix >- >-# Do we need a version for libraries? >-need_version=$need_version >- >-# Whether dlopen is supported. >-dlopen_support=$enable_dlopen >- >-# Whether dlopen of programs is supported. >-dlopen_self=$enable_dlopen_self >- >-# Whether dlopen of statically linked programs is supported. >-dlopen_self_static=$enable_dlopen_self_static >- >-# Compiler flag to prevent dynamic linking. >-link_static_flag=$lt_lt_prog_compiler_static_RC >- >-# Compiler flag to turn off builtin functions. >-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC >- >-# Compiler flag to allow reflexive dlopens. >-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC >- >-# Compiler flag to generate shared objects directly from archives. >-whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC >- >-# Compiler flag to generate thread-safe objects. >-thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC >- >-# Library versioning type. >-version_type=$version_type >- >-# Format of library name prefix. >-libname_spec=$lt_libname_spec >- >-# List of archive names. First name is the real one, the rest are links. >-# The last name is the one that the linker finds with -lNAME. >-library_names_spec=$lt_library_names_spec >- >-# The coded name of the library, if different from the real name. >-soname_spec=$lt_soname_spec >- >-# Commands used to build and install an old-style archive. >-RANLIB=$lt_RANLIB >-old_archive_cmds=$lt_old_archive_cmds_RC >-old_postinstall_cmds=$lt_old_postinstall_cmds >-old_postuninstall_cmds=$lt_old_postuninstall_cmds >- >-# Create an old-style archive from a shared archive. >-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC >- >-# Create a temporary old-style archive to link instead of a shared archive. >-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC >- >-# Commands used to build and install a shared archive. >-archive_cmds=$lt_archive_cmds_RC >-archive_expsym_cmds=$lt_archive_expsym_cmds_RC >-postinstall_cmds=$lt_postinstall_cmds >-postuninstall_cmds=$lt_postuninstall_cmds >- >-# Commands used to build a loadable module (assumed same as above if empty) >-module_cmds=$lt_module_cmds_RC >-module_expsym_cmds=$lt_module_expsym_cmds_RC >- >-# Commands to strip libraries. >-old_striplib=$lt_old_striplib >-striplib=$lt_striplib >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predep_objects=$lt_predep_objects_RC >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdep_objects=$lt_postdep_objects_RC >- >-# Dependencies to place before the objects being linked to create a >-# shared library. >-predeps=$lt_predeps_RC >- >-# Dependencies to place after the objects being linked to create a >-# shared library. >-postdeps=$lt_postdeps_RC >- >-# The library search path used internally by the compiler when linking >-# a shared library. >-compiler_lib_search_path=$lt_compiler_lib_search_path_RC >- >-# Method to check whether dependent libraries are shared objects. >-deplibs_check_method=$lt_deplibs_check_method >- >-# Command to use when deplibs_check_method == file_magic. >-file_magic_cmd=$lt_file_magic_cmd >- >-# Flag that allows shared libraries with undefined symbols to be built. >-allow_undefined_flag=$lt_allow_undefined_flag_RC >- >-# Flag that forces no undefined symbols. >-no_undefined_flag=$lt_no_undefined_flag_RC >- >-# Commands used to finish a libtool library installation in a directory. >-finish_cmds=$lt_finish_cmds >- >-# Same as above, but a single script fragment to be evaled but not shown. >-finish_eval=$lt_finish_eval >- >-# Take the output of nm and produce a listing of raw symbols and C names. >-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe >- >-# Transform the output of nm in a proper C declaration >-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl >- >-# Transform the output of nm in a C name address pair >-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address >- >-# This is the shared library runtime path variable. >-runpath_var=$runpath_var >- >-# This is the shared library path variable. >-shlibpath_var=$shlibpath_var >- >-# Is shlibpath searched before the hard-coded library search path? >-shlibpath_overrides_runpath=$shlibpath_overrides_runpath >- >-# How to hardcode a shared library path into an executable. >-hardcode_action=$hardcode_action_RC >- >-# Whether we should hardcode library paths into libraries. >-hardcode_into_libs=$hardcode_into_libs >- >-# Flag to hardcode \$libdir into a binary during linking. >-# This must work even if \$libdir does not exist. >-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC >- >-# If ld is used when linking, flag to hardcode \$libdir into >-# a binary during linking. This must work even if \$libdir does >-# not exist. >-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC >- >-# Whether we need a single -rpath flag with a separated argument. >-hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC >- >-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the >-# resulting binary. >-hardcode_direct=$hardcode_direct_RC >- >-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the >-# resulting binary. >-hardcode_minus_L=$hardcode_minus_L_RC >- >-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into >-# the resulting binary. >-hardcode_shlibpath_var=$hardcode_shlibpath_var_RC >- >-# Set to yes if building a shared library automatically hardcodes DIR into the library >-# and all subsequent libraries and executables linked against it. >-hardcode_automatic=$hardcode_automatic_RC >- >-# Variables whose values should be saved in libtool wrapper scripts and >-# restored at relink time. >-variables_saved_for_relink="$variables_saved_for_relink" >- >-# Whether libtool must link a program against all its dependency libraries. >-link_all_deplibs=$link_all_deplibs_RC >- >-# Compile-time system search path for libraries >-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec >- >-# Run-time system search path for libraries >-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec >- >-# Fix the shell variable \$srcfile for the compiler. >-fix_srcfile_path="$fix_srcfile_path_RC" >- >-# Set to yes if exported symbols are required. >-always_export_symbols=$always_export_symbols_RC >- >-# The commands to list exported symbols. >-export_symbols_cmds=$lt_export_symbols_cmds_RC >- >-# The commands to extract the exported symbol list from a shared archive. >-extract_expsyms_cmds=$lt_extract_expsyms_cmds >- >-# Symbols that should not be listed in the preloaded symbols. >-exclude_expsyms=$lt_exclude_expsyms_RC >- >-# Symbols that must always be exported. >-include_expsyms=$lt_include_expsyms_RC >- >-# ### END LIBTOOL TAG CONFIG: $tagname >- >-__EOF__ >- >- >-else >- # If there is no Makefile yet, we rely on a make rule to execute >- # `config.status --recheck' to rerun these tests and create the >- # libtool script then. >- test -f Makefile && make "$ltmain" >-fi >- >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >-CC="$lt_save_CC" >- >- ;; >- >- *) >- { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 >-echo "$as_me: error: Unsupported tag name: $tagname" >&2;} >- { (exit 1); exit 1; }; } >- ;; >- esac >- >- # Append the new tag name to the list of available tags. >- if test -n "$tagname" ; then >- available_tags="$available_tags $tagname" >- fi >- fi >- done >- IFS="$lt_save_ifs" >- >- # Now substitute the updated list of available tags. >- if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then >- mv "${ofile}T" "$ofile" >- chmod +x "$ofile" >- else >- rm -f "${ofile}T" >- { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 >-echo "$as_me: error: unable to update list of available tagged configurations." >&2;} >- { (exit 1); exit 1; }; } >- fi >-fi >- >- >- >-# This can be used to rebuild libtool when needed >-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" >- >-# Always use our own libtool. >-LIBTOOL='$(SHELL) $(top_builddir)/libtool' >- >-# Prevent multiple expansion >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- # (we build libtool for ourselves) >- >- >-# ----------------------------------------------------------------------------- >-# >-# AC_LIB_LTDL >-# >-# Even though libltdl is installed together with libtool, you may wish >-# to include libltdl in the distribution of your package, for the convenience >-# of users of your package that don't have libtool or libltdl installed. >-# >-# The most simplistic way to add libltdl to your package is to copy the >-# source files, 'ltdl.c' and 'ltdl.h', to a source directory withing your >-# package and to build and link them along with the rest of your sources. >-# >-# To do this, you must add a call to the 'AC_LIB_LTDL' macro to your package's >-# 'configure.in' to perform the required configure time checks in order that >-# 'ltdl.o' is built correctly. >-# >-# This method does have its problems though: if you try to link the package >-# binaries with an installed libltdl, or a library which depends on libltdl, >-# you may have problems with duplicate symbol definitions. >-# >-# In order to enable this flavor of libltdl, you should add the line >-# 'AC_LIBLTDL_CONVENIENCE' to your `configure.in', before 'AC_PROG_LIBTOOL'. >-# >-# In order to select the installable version of libltdl, you should add a >-# call of the macro 'AC_LIBLTDL_INSTALLABLE' to your 'configure.in' before >-# 'AC_PROG_LIBTOOL'. This macro will check whether libltdl is already >-# installed and, if not, request the libltdl embedded in your package to be >-# built and installed. >-# >-# Whatever macro you use, it is up to you to ensure that your 'configure.in' >-# will configure libltdl, using 'AC_CONFIG_SUBDIRS', and that your 'Makefile's >-# will start sub-makes within libltdl's directory, using automake's SUBDIRS, >-# for example. Both macros define the shell variables LIBLTDL, to the link flag >-# that you should use to link with libltdl, and LTDLINCL, to the preprocessor >-# flag that you should use to compile with programs that include 'ltdl.h'. It >-# is up to you to use 'AC_SUBST' to ensure that this variable will be available >-# in 'Makefile's, or add them to variables that are 'AC_SUBST'ed by default, >-# such as LIBS and CPPFLAGS. >-# >-# So, when you want to link a program with libltdl, be it a convenience, >-# installed or installable library, just compile with '$(LTDLINCL)' and link >-# it with '$(LIBLTDL)', using libtool. >-# >-# You should probably also add 'AC_LIBTOOL_DLOPEN' to your 'configure.in' before >-# 'AC_PROG_LIBTOOL', otherwise libtool will assume no dlopening mechanism is >-# supported, and revert to dlpreopening, which is probably not what you want. >-# >-# The following example shows you how to embed the convenience libltdl >-# in your package. In order to use the installable variant just replace >-# 'AC_LIBLTDL_CONVENIENCE' with 'AC_LIBLTDL_INSTALLABLE'. We assume that libltdl >-# was embedded using 'libtoolize --ltdl': >-# >-# configure.in: >-# >-# ... >-# dnl Enable building of the convenience library >-# dnl and set LIBLTDL accordingly >-# AC_LIBLTDL_CONVENIENCE >-# dnl Substitute LTDLINCL and LIBLTDL in the Makefiles >-# AC_SUBST(LTDLINCL) >-# AC_SUBST(LIBLTDL) >-# dnl Check for dlopen support >-# AC_LIBTOOL_DLOPEN >-# dnl Configure libtool >-# AC_PROG_LIBTOOL >-# dnl Configure libltdl >-# AC_CONFIG_SUBDIRS(libltdl) >-# ... >-# >-# Makefile.am: >-# >-# ... >-# SUBDIRS = libltdl >-# >-# INCLUDES = $(LTDLINCL) >-# >-# myprog_LDFLAGS = -export-dynamic >-# # The quotes around -dlopen below fool automake <= 1.4 into accepting it >-# myprog_LDADD = $(LIBLTDL) "-dlopen" self "-dlopen" foo1.la >-# myprog_DEPENDENCIES = $(LIBLTDL) foo1.la >-# ... >-# >-# ----------------------------------------------------------------------------- >- >-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 >-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 >-if test "${ac_cv_c_const+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >-/* FIXME: Include the comments suggested by Paul. */ >-#ifndef __cplusplus >- /* Ultrix mips cc rejects this. */ >- typedef int charset[2]; >- const charset x; >- /* SunOS 4.1.1 cc rejects this. */ >- char const *const *ccp; >- char **p; >- /* NEC SVR4.0.2 mips cc rejects this. */ >- struct point {int x, y;}; >- static struct point const zero = {0,0}; >- /* AIX XL C 1.02.0.0 rejects this. >- It does not let you subtract one const X* pointer from another in >- an arm of an if-expression whose if-part is not a constant >- expression */ >- const char *g = "string"; >- ccp = &g + (g ? g-g : 0); >- /* HPUX 7.0 cc rejects these. */ >- ++ccp; >- p = (char**) ccp; >- ccp = (char const *const *) p; >- { /* SCO 3.2v4 cc rejects this. */ >- char *t; >- char const *s = 0 ? (char *) 0 : (char const *) 0; >- >- *t++ = 0; >- } >- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ >- int x[] = {25, 17}; >- const int *foo = &x[0]; >- ++foo; >- } >- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ >- typedef const int *iptr; >- iptr p = 0; >- ++p; >- } >- { /* AIX XL C 1.02.0.0 rejects this saying >- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ >- struct s { int j; const int *ap[3]; }; >- struct s *b; b->j = 5; >- } >- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ >- const int foo = 10; >- } >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_c_const=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_c_const=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 >-echo "${ECHO_T}$ac_cv_c_const" >&6 >-if test $ac_cv_c_const = no; then >- >-cat >>confdefs.h <<\_ACEOF >-#define const >-_ACEOF >- >-fi >- >- >- >- >- >- >-ac_header_dirent=no >-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do >- as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 >-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >-#include <$ac_hdr> >- >-int >-main () >-{ >-if ((DIR *) 0) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 >-_ACEOF >- >-ac_header_dirent=$ac_hdr; break >-fi >- >-done >-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. >-if test $ac_header_dirent = dirent.h; then >- echo "$as_me:$LINENO: checking for library containing opendir" >&5 >-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 >-if test "${ac_cv_search_opendir+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_func_search_save_LIBS=$LIBS >-ac_cv_search_opendir=no >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char opendir (); >-int >-main () >-{ >-opendir (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_search_opendir="none required" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test "$ac_cv_search_opendir" = no; then >- for ac_lib in dir; do >- LIBS="-l$ac_lib $ac_func_search_save_LIBS" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char opendir (); >-int >-main () >-{ >-opendir (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_search_opendir="-l$ac_lib" >-break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- done >-fi >-LIBS=$ac_func_search_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 >-echo "${ECHO_T}$ac_cv_search_opendir" >&6 >-if test "$ac_cv_search_opendir" != no; then >- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" >- >-fi >- >-else >- echo "$as_me:$LINENO: checking for library containing opendir" >&5 >-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 >-if test "${ac_cv_search_opendir+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_func_search_save_LIBS=$LIBS >-ac_cv_search_opendir=no >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char opendir (); >-int >-main () >-{ >-opendir (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_search_opendir="none required" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-if test "$ac_cv_search_opendir" = no; then >- for ac_lib in x; do >- LIBS="-l$ac_lib $ac_func_search_save_LIBS" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char opendir (); >-int >-main () >-{ >-opendir (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_search_opendir="-l$ac_lib" >-break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- done >-fi >-LIBS=$ac_func_search_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 >-echo "${ECHO_T}$ac_cv_search_opendir" >&6 >-if test "$ac_cv_search_opendir" != no; then >- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" >- >-fi >- >-fi >- >-# Check whether --enable-ltdl-install or --disable-ltdl-install was given. >-if test "${enable_ltdl_install+set}" = set; then >- enableval="$enable_ltdl_install" >- >-fi; >- >- >- >-if test x"${enable_ltdl_install-no}" != xno; then >- INSTALL_LTDL_TRUE= >- INSTALL_LTDL_FALSE='#' >-else >- INSTALL_LTDL_TRUE='#' >- INSTALL_LTDL_FALSE= >-fi >- >- >- >-if test x"${enable_ltdl_convenience-no}" != xno; then >- CONVENIENCE_LTDL_TRUE= >- CONVENIENCE_LTDL_FALSE='#' >-else >- CONVENIENCE_LTDL_TRUE='#' >- CONVENIENCE_LTDL_FALSE= >-fi >- >- >- >-echo "$as_me:$LINENO: checking which extension is used for loadable modules" >&5 >-echo $ECHO_N "checking which extension is used for loadable modules... $ECHO_C" >&6 >-if test "${libltdl_cv_shlibext+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >-module=yes >-eval libltdl_cv_shlibext=$shrext_cmds >- >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_shlibext" >&5 >-echo "${ECHO_T}$libltdl_cv_shlibext" >&6 >-if test -n "$libltdl_cv_shlibext"; then >- >-cat >>confdefs.h <<_ACEOF >-#define LTDL_SHLIB_EXT "$libltdl_cv_shlibext" >-_ACEOF >- >-fi >- >- >-echo "$as_me:$LINENO: checking which variable specifies run-time library path" >&5 >-echo $ECHO_N "checking which variable specifies run-time library path... $ECHO_C" >&6 >-if test "${libltdl_cv_shlibpath_var+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- libltdl_cv_shlibpath_var="$shlibpath_var" >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_shlibpath_var" >&5 >-echo "${ECHO_T}$libltdl_cv_shlibpath_var" >&6 >-if test -n "$libltdl_cv_shlibpath_var"; then >- >-cat >>confdefs.h <<_ACEOF >-#define LTDL_SHLIBPATH_VAR "$libltdl_cv_shlibpath_var" >-_ACEOF >- >-fi >- >- >-echo "$as_me:$LINENO: checking for the default library search path" >&5 >-echo $ECHO_N "checking for the default library search path... $ECHO_C" >&6 >-if test "${libltdl_cv_sys_search_path+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- libltdl_cv_sys_search_path="$sys_lib_dlsearch_path_spec" >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_sys_search_path" >&5 >-echo "${ECHO_T}$libltdl_cv_sys_search_path" >&6 >-if test -n "$libltdl_cv_sys_search_path"; then >- sys_search_path= >- for dir in $libltdl_cv_sys_search_path; do >- if test -z "$sys_search_path"; then >- sys_search_path="$dir" >- else >- sys_search_path="$sys_search_path$PATH_SEPARATOR$dir" >- fi >- done >- >-cat >>confdefs.h <<_ACEOF >-#define LTDL_SYSSEARCHPATH "$sys_search_path" >-_ACEOF >- >-fi >- >-echo "$as_me:$LINENO: checking for objdir" >&5 >-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 >-if test "${libltdl_cv_objdir+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- libltdl_cv_objdir="$objdir" >- if test -n "$objdir"; then >- : >- else >- rm -f .libs 2>/dev/null >- mkdir .libs 2>/dev/null >- if test -d .libs; then >- libltdl_cv_objdir=.libs >- else >- # MS-DOS does not allow filenames that begin with a dot. >- libltdl_cv_objdir=_libs >- fi >- rmdir .libs 2>/dev/null >- fi >- >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_objdir" >&5 >-echo "${ECHO_T}$libltdl_cv_objdir" >&6 >- >-cat >>confdefs.h <<_ACEOF >-#define LTDL_OBJDIR "$libltdl_cv_objdir/" >-_ACEOF >- >- >- >-echo "$as_me:$LINENO: checking whether libtool supports -dlopen/-dlpreopen" >&5 >-echo $ECHO_N "checking whether libtool supports -dlopen/-dlpreopen... $ECHO_C" >&6 >-if test "${libltdl_cv_preloaded_symbols+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -n "$lt_cv_sys_global_symbol_pipe"; then >- libltdl_cv_preloaded_symbols=yes >- else >- libltdl_cv_preloaded_symbols=no >- fi >- >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_preloaded_symbols" >&5 >-echo "${ECHO_T}$libltdl_cv_preloaded_symbols" >&6 >-if test x"$libltdl_cv_preloaded_symbols" = xyes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_PRELOADED_SYMBOLS 1 >-_ACEOF >- >-fi >- >-LIBADD_DL= >- >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- >-echo "$as_me:$LINENO: checking for shl_load" >&5 >-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 >-if test "${ac_cv_func_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define shl_load innocuous_shl_load >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char shl_load (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef shl_load >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_shl_load) || defined (__stub___shl_load) >-choke me >-#else >-char (*f) () = shl_load; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != shl_load; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 >-if test $ac_cv_func_shl_load = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_SHL_LOAD 1 >-_ACEOF >- >-else >- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 >-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_shl_load+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char shl_load (); >-int >-main () >-{ >-shl_load (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_shl_load=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_shl_load=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 >-if test $ac_cv_lib_dld_shl_load = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_SHL_LOAD 1 >-_ACEOF >- >- LIBADD_DL="$LIBADD_DL -ldld" >-else >- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 >-if test $ac_cv_lib_dl_dlopen = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_LIBDL 1 >-_ACEOF >- >- LIBADD_DL="-ldl" libltdl_cv_lib_dl_dlopen="yes" >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#if HAVE_DLFCN_H >-# include <dlfcn.h> >-#endif >- >-int >-main () >-{ >-dlopen(0, 0); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_LIBDL 1 >-_ACEOF >- libltdl_cv_func_dlopen="yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 >-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 >-if test "${ac_cv_lib_svld_dlopen+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lsvld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_svld_dlopen=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_svld_dlopen=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 >-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 >-if test $ac_cv_lib_svld_dlopen = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_LIBDL 1 >-_ACEOF >- >- LIBADD_DL="-lsvld" libltdl_cv_func_dlopen="yes" >-else >- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 >-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 >-if test "${ac_cv_lib_dld_dld_link+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldld $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dld_link (); >-int >-main () >-{ >-dld_link (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dld_dld_link=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dld_dld_link=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 >-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 >-if test $ac_cv_lib_dld_dld_link = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_DLD 1 >-_ACEOF >- >- LIBADD_DL="$LIBADD_DL -ldld" >-else >- echo "$as_me:$LINENO: checking for _dyld_func_lookup" >&5 >-echo $ECHO_N "checking for _dyld_func_lookup... $ECHO_C" >&6 >-if test "${ac_cv_func__dyld_func_lookup+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define _dyld_func_lookup to an innocuous variant, in case <limits.h> declares _dyld_func_lookup. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define _dyld_func_lookup innocuous__dyld_func_lookup >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char _dyld_func_lookup (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef _dyld_func_lookup >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char _dyld_func_lookup (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub__dyld_func_lookup) || defined (__stub____dyld_func_lookup) >-choke me >-#else >-char (*f) () = _dyld_func_lookup; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != _dyld_func_lookup; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func__dyld_func_lookup=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func__dyld_func_lookup=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func__dyld_func_lookup" >&5 >-echo "${ECHO_T}$ac_cv_func__dyld_func_lookup" >&6 >-if test $ac_cv_func__dyld_func_lookup = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_DYLD 1 >-_ACEOF >- >-fi >- >- >-fi >- >- >-fi >- >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- >-fi >- >- >-fi >- >- >-fi >- >- >-if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes >-then >- lt_save_LIBS="$LIBS" >- LIBS="$LIBS $LIBADD_DL" >- >-for ac_func in dlerror >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- LIBS="$lt_save_LIBS" >-fi >-ac_ext=c >-ac_cpp='$CPP $CPPFLAGS' >-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >-ac_compiler_gnu=$ac_cv_c_compiler_gnu >- >- >- >-echo "$as_me:$LINENO: checking for _ prefix in compiled symbols" >&5 >-echo $ECHO_N "checking for _ prefix in compiled symbols... $ECHO_C" >&6 >-if test "${ac_cv_sys_symbol_underscore+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_sys_symbol_underscore=no >- cat > conftest.$ac_ext <<EOF >-void nm_test_func(){} >-int main(){nm_test_func;return 0;} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; then >- # Now try to grab the symbols. >- ac_nlist=conftest.nm >- if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\"") >&5 >- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s "$ac_nlist"; then >- # See whether the symbols have a leading underscore. >- if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then >- ac_cv_sys_symbol_underscore=yes >- else >- if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then >- : >- else >- echo "configure: cannot find nm_test_func in $ac_nlist" >&5 >- fi >- fi >- else >- echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&5 >- fi >- else >- echo "configure: failed program was:" >&5 >- cat conftest.c >&5 >- fi >- rm -rf conftest* >- >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sys_symbol_underscore" >&5 >-echo "${ECHO_T}$ac_cv_sys_symbol_underscore" >&6 >- >- >-if test x"$ac_cv_sys_symbol_underscore" = xyes; then >- if test x"$libltdl_cv_func_dlopen" = xyes || >- test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then >- echo "$as_me:$LINENO: checking whether we have to add an underscore for dlsym" >&5 >-echo $ECHO_N "checking whether we have to add an underscore for dlsym... $ECHO_C" >&6 >-if test "${libltdl_cv_need_uscore+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- libltdl_cv_need_uscore=unknown >- save_LIBS="$LIBS" >- LIBS="$LIBS $LIBADD_DL" >- if test "$cross_compiling" = yes; then : >- libltdl_cv_need_uscore=cross >-else >- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >- lt_status=$lt_dlunknown >- cat > conftest.$ac_ext <<EOF >-#line 20802 "configure" >-#include "confdefs.h" >- >-#if HAVE_DLFCN_H >-#include <dlfcn.h> >-#endif >- >-#include <stdio.h> >- >-#ifdef RTLD_GLOBAL >-# define LT_DLGLOBAL RTLD_GLOBAL >-#else >-# ifdef DL_GLOBAL >-# define LT_DLGLOBAL DL_GLOBAL >-# else >-# define LT_DLGLOBAL 0 >-# endif >-#endif >- >-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we >- find out it does not work in some platform. */ >-#ifndef LT_DLLAZY_OR_NOW >-# ifdef RTLD_LAZY >-# define LT_DLLAZY_OR_NOW RTLD_LAZY >-# else >-# ifdef DL_LAZY >-# define LT_DLLAZY_OR_NOW DL_LAZY >-# else >-# ifdef RTLD_NOW >-# define LT_DLLAZY_OR_NOW RTLD_NOW >-# else >-# ifdef DL_NOW >-# define LT_DLLAZY_OR_NOW DL_NOW >-# else >-# define LT_DLLAZY_OR_NOW 0 >-# endif >-# endif >-# endif >-# endif >-#endif >- >-#ifdef __cplusplus >-extern "C" void exit (int); >-#endif >- >-void fnord() { int i=42;} >-int main () >-{ >- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); >- int status = $lt_dlunknown; >- >- if (self) >- { >- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; >- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; >- /* dlclose (self); */ >- } >- >- exit (status); >-} >-EOF >- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then >- (./conftest; exit; ) 2>/dev/null >- lt_status=$? >- case x$lt_status in >- x$lt_dlno_uscore) libltdl_cv_need_uscore=no ;; >- x$lt_dlneed_uscore) libltdl_cv_need_uscore=yes ;; >- x$lt_unknown|x*) ;; >- esac >- else : >- # compilation failed >- >- fi >-fi >-rm -fr conftest* >- >- LIBS="$save_LIBS" >- >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_need_uscore" >&5 >-echo "${ECHO_T}$libltdl_cv_need_uscore" >&6 >- fi >-fi >- >-if test x"$libltdl_cv_need_uscore" = xyes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define NEED_USCORE 1 >-_ACEOF >- >-fi >- >- >-echo "$as_me:$LINENO: checking whether deplibs are loaded by dlopen" >&5 >-echo $ECHO_N "checking whether deplibs are loaded by dlopen... $ECHO_C" >&6 >-if test "${libltdl_cv_sys_dlopen_deplibs+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # PORTME does your system automatically load deplibs for dlopen? >- # or its logical equivalent (e.g. shl_load for HP-UX < 11) >- # For now, we just catch OSes we know something about -- in the >- # future, we'll try test this programmatically. >- libltdl_cv_sys_dlopen_deplibs=unknown >- case "$host_os" in >- aix3*|aix4.1.*|aix4.2.*) >- # Unknown whether this is true for these versions of AIX, but >- # we want this `case' here to explicitly catch those versions. >- libltdl_cv_sys_dlopen_deplibs=unknown >- ;; >- aix[45]*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- darwin*) >- # Assuming the user has installed a libdl from somewhere, this is true >- # If you are looking for one http://www.opendarwin.org/projects/dlcompat >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- kfreebsd*-gnu) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- gnu*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- hpux10*|hpux11*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- irix[12345]*|irix6.[01]*) >- # Catch all versions of IRIX before 6.2, and indicate that we don't >- # know how it worked for any of those versions. >- libltdl_cv_sys_dlopen_deplibs=unknown >- ;; >- irix*) >- # The case above catches anything before 6.2, and it's known that >- # at 6.2 and later dlopen does load deplibs. >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- linux*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- netbsd*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- openbsd*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- osf[1234]*) >- # dlopen did load deplibs (at least at 4.x), but until the 5.x series, >- # it did *not* use an RPATH in a shared library to find objects the >- # library depends on, so we explictly say `no'. >- libltdl_cv_sys_dlopen_deplibs=no >- ;; >- osf5.0|osf5.0a|osf5.1) >- # dlopen *does* load deplibs and with the right loader patch applied >- # it even uses RPATH in a shared library to search for shared objects >- # that the library depends on, but there's no easy way to know if that >- # patch is installed. Since this is the case, all we can really >- # say is unknown -- it depends on the patch being installed. If >- # it is, this changes to `yes'. Without it, it would be `no'. >- libltdl_cv_sys_dlopen_deplibs=unknown >- ;; >- osf*) >- # the two cases above should catch all versions of osf <= 5.1. Read >- # the comments above for what we know about them. >- # At > 5.1, deplibs are loaded *and* any RPATH in a shared library >- # is used to find them so we can finally say `yes'. >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- solaris*) >- libltdl_cv_sys_dlopen_deplibs=yes >- ;; >- esac >- >-fi >-echo "$as_me:$LINENO: result: $libltdl_cv_sys_dlopen_deplibs" >&5 >-echo "${ECHO_T}$libltdl_cv_sys_dlopen_deplibs" >&6 >-if test "$libltdl_cv_sys_dlopen_deplibs" != yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define LTDL_DLOPEN_DEPLIBS 1 >-_ACEOF >- >-fi >- >- >-for ac_header in argz.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >- >-done >- >- >-echo "$as_me:$LINENO: checking for error_t" >&5 >-echo $ECHO_N "checking for error_t... $ECHO_C" >&6 >-if test "${ac_cv_type_error_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#if HAVE_ARGZ_H >-# include <argz.h> >-#endif >- >-int >-main () >-{ >-if ((error_t *) 0) >- return 0; >-if (sizeof (error_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_error_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_error_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_error_t" >&5 >-echo "${ECHO_T}$ac_cv_type_error_t" >&6 >-if test $ac_cv_type_error_t = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_ERROR_T 1 >-_ACEOF >- >- >-else >- >-cat >>confdefs.h <<\_ACEOF >-#define error_t int >-_ACEOF >- >-fi >- >- >- >- >- >- >- >-for ac_func in argz_append argz_create_sep argz_insert argz_next argz_stringify >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >-for ac_header in assert.h ctype.h errno.h malloc.h memory.h stdlib.h \ >- stdio.h unistd.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >- >-done >- >- >- >- >- >-for ac_header in dl.h sys/dl.h dld.h mach-o/dyld.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >- >-done >- >- >- >-for ac_header in string.h strings.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- break >-fi >- >-done >- >- >- >- >-for ac_func in strchr index >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- break >-fi >-done >- >- >- >-for ac_func in strrchr rindex >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- break >-fi >-done >- >- >- >-for ac_func in memcpy bcopy >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- break >-fi >-done >- >- >- >-for ac_func in memmove strcmp >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >- >-for ac_func in closedir opendir readdir >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- # (we need the ltdl libtool library) >- # (see PROGRAMMING NOTE above) >- >- >-# ----------------------------------------------------------------------------- >-# (See comments in the 'AC_CHECK_LIB' Libraries section further below) >-# ----------------------------------------------------------------------------- >-{ echo "$as_me:$LINENO: (use of lt_dlopen forced by Hercules Dynamic Loader requirement) " >&5 >-echo "$as_me: (use of lt_dlopen forced by Hercules Dynamic Loader requirement) " >&6;} >-hc_cv_have_lt_dlopen=yes >- >- >- >- >- >- MKINSTALLDIRS= >- if test -n "$ac_aux_dir"; then >- case "$ac_aux_dir" in >- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; >- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; >- esac >- fi >- if test -z "$MKINSTALLDIRS"; then >- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" >- fi >- >- >- >- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 >-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 >- # Check whether --enable-nls or --disable-nls was given. >-if test "${enable_nls+set}" = set; then >- enableval="$enable_nls" >- USE_NLS=$enableval >-else >- USE_NLS=yes >-fi; >- echo "$as_me:$LINENO: result: $USE_NLS" >&5 >-echo "${ECHO_T}$USE_NLS" >&6 >- >- >- >- >- >- >-# Prepare PATH_SEPARATOR. >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >- else >- PATH_SEPARATOR=: >- fi >- rm -f conf$$.sh >-fi >- >-# Find out how to test for executable files. Don't use a zero-byte file, >-# as systems may use methods other than mode bits to determine executability. >-cat >conf$$.file <<_ASEOF >-#! /bin/sh >-exit 0 >-_ASEOF >-chmod +x conf$$.file >-if test -x conf$$.file >/dev/null 2>&1; then >- ac_executable_p="test -x" >-else >- ac_executable_p="test -f" >-fi >-rm -f conf$$.file >- >-# Extract the first word of "msgfmt", so it can be a program name with args. >-set dummy msgfmt; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_path_MSGFMT+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- case "$MSGFMT" in >- [\\/]* | ?:[\\/]*) >- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. >- ;; >- *) >- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in $PATH; do >- IFS="$ac_save_IFS" >- test -z "$ac_dir" && ac_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then >- echo "$as_me: trying $ac_dir/$ac_word..." >&5 >- if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && >- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then >- ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" >- break 2 >- fi >- fi >- done >- done >- IFS="$ac_save_IFS" >- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" >- ;; >-esac >-fi >-MSGFMT="$ac_cv_path_MSGFMT" >-if test "$MSGFMT" != ":"; then >- echo "$as_me:$LINENO: result: $MSGFMT" >&5 >-echo "${ECHO_T}$MSGFMT" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- # Extract the first word of "gmsgfmt", so it can be a program name with args. >-set dummy gmsgfmt; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_path_GMSGFMT+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- case $GMSGFMT in >- [\\/]* | ?:[\\/]*) >- ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. >- ;; >- *) >- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then >- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >- break 2 >- fi >-done >-done >- >- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" >- ;; >-esac >-fi >-GMSGFMT=$ac_cv_path_GMSGFMT >- >-if test -n "$GMSGFMT"; then >- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 >-echo "${ECHO_T}$GMSGFMT" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- >- >-# Prepare PATH_SEPARATOR. >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >- else >- PATH_SEPARATOR=: >- fi >- rm -f conf$$.sh >-fi >- >-# Find out how to test for executable files. Don't use a zero-byte file, >-# as systems may use methods other than mode bits to determine executability. >-cat >conf$$.file <<_ASEOF >-#! /bin/sh >-exit 0 >-_ASEOF >-chmod +x conf$$.file >-if test -x conf$$.file >/dev/null 2>&1; then >- ac_executable_p="test -x" >-else >- ac_executable_p="test -f" >-fi >-rm -f conf$$.file >- >-# Extract the first word of "xgettext", so it can be a program name with args. >-set dummy xgettext; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_path_XGETTEXT+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- case "$XGETTEXT" in >- [\\/]* | ?:[\\/]*) >- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. >- ;; >- *) >- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in $PATH; do >- IFS="$ac_save_IFS" >- test -z "$ac_dir" && ac_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then >- echo "$as_me: trying $ac_dir/$ac_word..." >&5 >- if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && >- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then >- ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" >- break 2 >- fi >- fi >- done >- done >- IFS="$ac_save_IFS" >- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" >- ;; >-esac >-fi >-XGETTEXT="$ac_cv_path_XGETTEXT" >-if test "$XGETTEXT" != ":"; then >- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 >-echo "${ECHO_T}$XGETTEXT" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- rm -f messages.po >- >- >-# Prepare PATH_SEPARATOR. >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >- else >- PATH_SEPARATOR=: >- fi >- rm -f conf$$.sh >-fi >- >-# Find out how to test for executable files. Don't use a zero-byte file, >-# as systems may use methods other than mode bits to determine executability. >-cat >conf$$.file <<_ASEOF >-#! /bin/sh >-exit 0 >-_ASEOF >-chmod +x conf$$.file >-if test -x conf$$.file >/dev/null 2>&1; then >- ac_executable_p="test -x" >-else >- ac_executable_p="test -f" >-fi >-rm -f conf$$.file >- >-# Extract the first word of "msgmerge", so it can be a program name with args. >-set dummy msgmerge; ac_word=$2 >-echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 >-if test "${ac_cv_path_MSGMERGE+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- case "$MSGMERGE" in >- [\\/]* | ?:[\\/]*) >- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. >- ;; >- *) >- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR >- for ac_dir in $PATH; do >- IFS="$ac_save_IFS" >- test -z "$ac_dir" && ac_dir=. >- for ac_exec_ext in '' $ac_executable_extensions; do >- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then >- echo "$as_me: trying $ac_dir/$ac_word..." >&5 >- if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then >- ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" >- break 2 >- fi >- fi >- done >- done >- IFS="$ac_save_IFS" >- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" >- ;; >-esac >-fi >-MSGMERGE="$ac_cv_path_MSGMERGE" >-if test "$MSGMERGE" != ":"; then >- echo "$as_me:$LINENO: result: $MSGMERGE" >&5 >-echo "${ECHO_T}$MSGMERGE" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >- >- >- if test "$GMSGFMT" != ":"; then >- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && >- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then >- : ; >- else >- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` >- echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 >-echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 >- GMSGFMT=":" >- fi >- fi >- >- if test "$XGETTEXT" != ":"; then >- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && >- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then >- : ; >- else >- echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 >-echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 >- XGETTEXT=":" >- fi >- rm -f messages.po >- fi >- >- ac_config_commands="$ac_config_commands default-1" >- >- >- >- if test "X$prefix" = "XNONE"; then >- acl_final_prefix="$ac_default_prefix" >- else >- acl_final_prefix="$prefix" >- fi >- if test "X$exec_prefix" = "XNONE"; then >- acl_final_exec_prefix='${prefix}' >- else >- acl_final_exec_prefix="$exec_prefix" >- fi >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" >- prefix="$acl_save_prefix" >- >- >-# Check whether --with-gnu-ld or --without-gnu-ld was given. >-if test "${with_gnu_ld+set}" = set; then >- withval="$with_gnu_ld" >- test "$withval" = no || with_gnu_ld=yes >-else >- with_gnu_ld=no >-fi; >-# Prepare PATH_SEPARATOR. >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >- else >- PATH_SEPARATOR=: >- fi >- rm -f conf$$.sh >-fi >-ac_prog=ld >-if test "$GCC" = yes; then >- # Check if gcc -print-prog-name=ld gives a path. >- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 >-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 >- case $host in >- *-*-mingw*) >- # gcc leaves a trailing carriage return which upsets mingw >- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; >- *) >- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; >- esac >- case $ac_prog in >- # Accept absolute paths. >- [\\/]* | [A-Za-z]:[\\/]*) >- re_direlt='/[^/][^/]*/\.\./' >- # Canonicalize the path of ld >- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` >- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do >- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` >- done >- test -z "$LD" && LD="$ac_prog" >- ;; >- "") >- # If it fails, then pretend we aren't using GCC. >- ac_prog=ld >- ;; >- *) >- # If it is relative, then search for the first ld in PATH. >- with_gnu_ld=unknown >- ;; >- esac >-elif test "$with_gnu_ld" = yes; then >- echo "$as_me:$LINENO: checking for GNU ld" >&5 >-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 >-else >- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 >-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 >-fi >-if test "${acl_cv_path_LD+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test -z "$LD"; then >- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" >- for ac_dir in $PATH; do >- test -z "$ac_dir" && ac_dir=. >- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then >- acl_cv_path_LD="$ac_dir/$ac_prog" >- # Check to see if the program is GNU ld. I'd rather use --version, >- # but apparently some GNU ld's only accept -v. >- # Break only if it was the GNU/non-GNU ld that we prefer. >- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in >- *GNU* | *'with BFD'*) >- test "$with_gnu_ld" != no && break ;; >- *) >- test "$with_gnu_ld" != yes && break ;; >- esac >- fi >- done >- IFS="$ac_save_ifs" >-else >- acl_cv_path_LD="$LD" # Let the user override the test with a path. >-fi >-fi >- >-LD="$acl_cv_path_LD" >-if test -n "$LD"; then >- echo "$as_me:$LINENO: result: $LD" >&5 >-echo "${ECHO_T}$LD" >&6 >-else >- echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6 >-fi >-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 >-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} >- { (exit 1); exit 1; }; } >-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 >-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 >-if test "${acl_cv_prog_gnu_ld+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # I'd rather use --version here, but apparently some GNU ld's only accept -v. >-case `$LD -v 2>&1 </dev/null` in >-*GNU* | *'with BFD'*) >- acl_cv_prog_gnu_ld=yes ;; >-*) >- acl_cv_prog_gnu_ld=no ;; >-esac >-fi >-echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 >-echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 >-with_gnu_ld=$acl_cv_prog_gnu_ld >- >- >- >- >- echo "$as_me:$LINENO: checking for shared library run path origin" >&5 >-echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 >-if test "${acl_cv_rpath+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ >- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh >- . ./conftest.sh >- rm -f ./conftest.sh >- acl_cv_rpath=done >- >-fi >-echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 >-echo "${ECHO_T}$acl_cv_rpath" >&6 >- wl="$acl_cv_wl" >- libext="$acl_cv_libext" >- shlibext="$acl_cv_shlibext" >- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" >- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" >- hardcode_direct="$acl_cv_hardcode_direct" >- hardcode_minus_L="$acl_cv_hardcode_minus_L" >- # Check whether --enable-rpath or --disable-rpath was given. >-if test "${enable_rpath+set}" = set; then >- enableval="$enable_rpath" >- : >-else >- enable_rpath=yes >-fi; >- >- >- >- >- >- >- >- use_additional=yes >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- >- eval additional_includedir=\"$includedir\" >- eval additional_libdir=\"$libdir\" >- >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- >-# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. >-if test "${with_libiconv_prefix+set}" = set; then >- withval="$with_libiconv_prefix" >- >- if test "X$withval" = "Xno"; then >- use_additional=no >- else >- if test "X$withval" = "X"; then >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- >- eval additional_includedir=\"$includedir\" >- eval additional_libdir=\"$libdir\" >- >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- else >- additional_includedir="$withval/include" >- additional_libdir="$withval/lib" >- fi >- fi >- >-fi; >- LIBICONV= >- LTLIBICONV= >- INCICONV= >- rpathdirs= >- ltrpathdirs= >- names_already_handled= >- names_next_round='iconv ' >- while test -n "$names_next_round"; do >- names_this_round="$names_next_round" >- names_next_round= >- for name in $names_this_round; do >- already_handled= >- for n in $names_already_handled; do >- if test "$n" = "$name"; then >- already_handled=yes >- break >- fi >- done >- if test -z "$already_handled"; then >- names_already_handled="$names_already_handled $name" >- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` >- eval value=\"\$HAVE_LIB$uppername\" >- if test -n "$value"; then >- if test "$value" = yes; then >- eval value=\"\$LIB$uppername\" >- test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" >- eval value=\"\$LTLIB$uppername\" >- test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" >- else >- : >- fi >- else >- found_dir= >- found_la= >- found_so= >- found_a= >- if test $use_additional = yes; then >- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then >- found_dir="$additional_libdir" >- found_so="$additional_libdir/lib$name.$shlibext" >- if test -f "$additional_libdir/lib$name.la"; then >- found_la="$additional_libdir/lib$name.la" >- fi >- else >- if test -f "$additional_libdir/lib$name.$libext"; then >- found_dir="$additional_libdir" >- found_a="$additional_libdir/lib$name.$libext" >- if test -f "$additional_libdir/lib$name.la"; then >- found_la="$additional_libdir/lib$name.la" >- fi >- fi >- fi >- fi >- if test "X$found_dir" = "X"; then >- for x in $LDFLAGS $LTLIBICONV; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- case "$x" in >- -L*) >- dir=`echo "X$x" | sed -e 's/^X-L//'` >- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then >- found_dir="$dir" >- found_so="$dir/lib$name.$shlibext" >- if test -f "$dir/lib$name.la"; then >- found_la="$dir/lib$name.la" >- fi >- else >- if test -f "$dir/lib$name.$libext"; then >- found_dir="$dir" >- found_a="$dir/lib$name.$libext" >- if test -f "$dir/lib$name.la"; then >- found_la="$dir/lib$name.la" >- fi >- fi >- fi >- ;; >- esac >- if test "X$found_dir" != "X"; then >- break >- fi >- done >- fi >- if test "X$found_dir" != "X"; then >- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" >- if test "X$found_so" != "X"; then >- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" >- else >- haveit= >- for x in $ltrpathdirs; do >- if test "X$x" = "X$found_dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- ltrpathdirs="$ltrpathdirs $found_dir" >- fi >- if test "$hardcode_direct" = yes; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" >- else >- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" >- haveit= >- for x in $rpathdirs; do >- if test "X$x" = "X$found_dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- rpathdirs="$rpathdirs $found_dir" >- fi >- else >- haveit= >- for x in $LDFLAGS $LIBICONV; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-L$found_dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" >- fi >- if test "$hardcode_minus_L" != no; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" >- else >- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" >- fi >- fi >- fi >- fi >- else >- if test "X$found_a" != "X"; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" >- else >- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" >- fi >- fi >- additional_includedir= >- case "$found_dir" in >- */lib | */lib/) >- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` >- additional_includedir="$basedir/include" >- ;; >- esac >- if test "X$additional_includedir" != "X"; then >- if test "X$additional_includedir" != "X/usr/include"; then >- haveit= >- if test "X$additional_includedir" = "X/usr/local/include"; then >- if test -n "$GCC"; then >- case $host_os in >- linux* | gnu* | k*bsd*-gnu) haveit=yes;; >- esac >- fi >- fi >- if test -z "$haveit"; then >- for x in $CPPFLAGS $INCICONV; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-I$additional_includedir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- if test -d "$additional_includedir"; then >- INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" >- fi >- fi >- fi >- fi >- fi >- if test -n "$found_la"; then >- save_libdir="$libdir" >- case "$found_la" in >- */* | *\\*) . "$found_la" ;; >- *) . "./$found_la" ;; >- esac >- libdir="$save_libdir" >- for dep in $dependency_libs; do >- case "$dep" in >- -L*) >- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >- if test "X$additional_libdir" != "X/usr/lib"; then >- haveit= >- if test "X$additional_libdir" = "X/usr/local/lib"; then >- if test -n "$GCC"; then >- case $host_os in >- linux* | gnu* | k*bsd*-gnu) haveit=yes;; >- esac >- fi >- fi >- if test -z "$haveit"; then >- haveit= >- for x in $LDFLAGS $LIBICONV; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-L$additional_libdir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" >- fi >- fi >- haveit= >- for x in $LDFLAGS $LTLIBICONV; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-L$additional_libdir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" >- fi >- fi >- fi >- fi >- ;; >- -R*) >- dir=`echo "X$dep" | sed -e 's/^X-R//'` >- if test "$enable_rpath" != no; then >- haveit= >- for x in $rpathdirs; do >- if test "X$x" = "X$dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- rpathdirs="$rpathdirs $dir" >- fi >- haveit= >- for x in $ltrpathdirs; do >- if test "X$x" = "X$dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- ltrpathdirs="$ltrpathdirs $dir" >- fi >- fi >- ;; >- -l*) >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` >- ;; >- *.la) >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` >- ;; >- *) >- LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" >- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" >- ;; >- esac >- done >- fi >- else >- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" >- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" >- fi >- fi >- fi >- done >- done >- if test "X$rpathdirs" != "X"; then >- if test -n "$hardcode_libdir_separator"; then >- alldirs= >- for found_dir in $rpathdirs; do >- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" >- done >- acl_save_libdir="$libdir" >- libdir="$alldirs" >- eval flag=\"$hardcode_libdir_flag_spec\" >- libdir="$acl_save_libdir" >- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" >- else >- for found_dir in $rpathdirs; do >- acl_save_libdir="$libdir" >- libdir="$found_dir" >- eval flag=\"$hardcode_libdir_flag_spec\" >- libdir="$acl_save_libdir" >- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" >- done >- fi >- fi >- if test "X$ltrpathdirs" != "X"; then >- for found_dir in $ltrpathdirs; do >- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" >- done >- fi >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 >-echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 >-if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- gt_save_CPPFLAGS="$CPPFLAGS" >- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" >- gt_save_LIBS="$LIBS" >- LIBS="$LIBS -framework CoreFoundation" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <CFPreferences.h> >-int >-main () >-{ >-CFPreferencesCopyAppValue(NULL, NULL) >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- gt_cv_func_CFPreferencesCopyAppValue=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-gt_cv_func_CFPreferencesCopyAppValue=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- CPPFLAGS="$gt_save_CPPFLAGS" >- LIBS="$gt_save_LIBS" >-fi >-echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 >-echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 >- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 >-_ACEOF >- >- fi >- echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 >-echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 >-if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- gt_save_CPPFLAGS="$CPPFLAGS" >- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" >- gt_save_LIBS="$LIBS" >- LIBS="$LIBS -framework CoreFoundation" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <CFLocale.h> >-int >-main () >-{ >-CFLocaleCopyCurrent(); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- gt_cv_func_CFLocaleCopyCurrent=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-gt_cv_func_CFLocaleCopyCurrent=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- CPPFLAGS="$gt_save_CPPFLAGS" >- LIBS="$gt_save_LIBS" >-fi >-echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 >-echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 >- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_CFLOCALECOPYCURRENT 1 >-_ACEOF >- >- fi >- INTL_MACOSX_LIBS= >- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then >- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" >- fi >- >- >- >- >- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 >-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 >- # Check whether --enable-nls or --disable-nls was given. >-if test "${enable_nls+set}" = set; then >- enableval="$enable_nls" >- USE_NLS=$enableval >-else >- USE_NLS=yes >-fi; >- echo "$as_me:$LINENO: result: $USE_NLS" >&5 >-echo "${ECHO_T}$USE_NLS" >&6 >- >- >- >- >- LIBINTL= >- LTLIBINTL= >- POSUB= >- >- if test "$USE_NLS" = "yes"; then >- gt_use_preinstalled_gnugettext=no >- >- >- >- >- >- >- echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 >-echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 >-if test "${gt_cv_func_gnugettext1_libc+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <libintl.h> >-extern int _nl_msg_cat_cntr; >-extern int *_nl_domain_bindings; >-int >-main () >-{ >-bindtextdomain ("", ""); >-return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- gt_cv_func_gnugettext1_libc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-gt_cv_func_gnugettext1_libc=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 >-echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 >- >- if test "$gt_cv_func_gnugettext1_libc" != "yes"; then >- >- >- >- >- >- am_save_CPPFLAGS="$CPPFLAGS" >- >- for element in $INCICONV; do >- haveit= >- for x in $CPPFLAGS; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X$element"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" >- fi >- done >- >- >- echo "$as_me:$LINENO: checking for iconv" >&5 >-echo $ECHO_N "checking for iconv... $ECHO_C" >&6 >-if test "${am_cv_func_iconv+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- am_cv_func_iconv="no, consider installing GNU libiconv" >- am_cv_lib_iconv=no >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >-#include <iconv.h> >-int >-main () >-{ >-iconv_t cd = iconv_open("",""); >- iconv(cd,NULL,NULL,NULL,NULL); >- iconv_close(cd); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- am_cv_func_iconv=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- if test "$am_cv_func_iconv" != yes; then >- am_save_LIBS="$LIBS" >- LIBS="$LIBS $LIBICONV" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >-#include <iconv.h> >-int >-main () >-{ >-iconv_t cd = iconv_open("",""); >- iconv(cd,NULL,NULL,NULL,NULL); >- iconv_close(cd); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- am_cv_lib_iconv=yes >- am_cv_func_iconv=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- LIBS="$am_save_LIBS" >- fi >- >-fi >-echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 >-echo "${ECHO_T}$am_cv_func_iconv" >&6 >- if test "$am_cv_func_iconv" = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_ICONV 1 >-_ACEOF >- >- fi >- if test "$am_cv_lib_iconv" = yes; then >- echo "$as_me:$LINENO: checking how to link with libiconv" >&5 >-echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 >- echo "$as_me:$LINENO: result: $LIBICONV" >&5 >-echo "${ECHO_T}$LIBICONV" >&6 >- else >- CPPFLAGS="$am_save_CPPFLAGS" >- LIBICONV= >- LTLIBICONV= >- fi >- >- >- >- >- >- >- use_additional=yes >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- >- eval additional_includedir=\"$includedir\" >- eval additional_libdir=\"$libdir\" >- >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- >-# Check whether --with-libintl-prefix or --without-libintl-prefix was given. >-if test "${with_libintl_prefix+set}" = set; then >- withval="$with_libintl_prefix" >- >- if test "X$withval" = "Xno"; then >- use_additional=no >- else >- if test "X$withval" = "X"; then >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- >- eval additional_includedir=\"$includedir\" >- eval additional_libdir=\"$libdir\" >- >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- else >- additional_includedir="$withval/include" >- additional_libdir="$withval/lib" >- fi >- fi >- >-fi; >- LIBINTL= >- LTLIBINTL= >- INCINTL= >- rpathdirs= >- ltrpathdirs= >- names_already_handled= >- names_next_round='intl ' >- while test -n "$names_next_round"; do >- names_this_round="$names_next_round" >- names_next_round= >- for name in $names_this_round; do >- already_handled= >- for n in $names_already_handled; do >- if test "$n" = "$name"; then >- already_handled=yes >- break >- fi >- done >- if test -z "$already_handled"; then >- names_already_handled="$names_already_handled $name" >- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` >- eval value=\"\$HAVE_LIB$uppername\" >- if test -n "$value"; then >- if test "$value" = yes; then >- eval value=\"\$LIB$uppername\" >- test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" >- eval value=\"\$LTLIB$uppername\" >- test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" >- else >- : >- fi >- else >- found_dir= >- found_la= >- found_so= >- found_a= >- if test $use_additional = yes; then >- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then >- found_dir="$additional_libdir" >- found_so="$additional_libdir/lib$name.$shlibext" >- if test -f "$additional_libdir/lib$name.la"; then >- found_la="$additional_libdir/lib$name.la" >- fi >- else >- if test -f "$additional_libdir/lib$name.$libext"; then >- found_dir="$additional_libdir" >- found_a="$additional_libdir/lib$name.$libext" >- if test -f "$additional_libdir/lib$name.la"; then >- found_la="$additional_libdir/lib$name.la" >- fi >- fi >- fi >- fi >- if test "X$found_dir" = "X"; then >- for x in $LDFLAGS $LTLIBINTL; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- case "$x" in >- -L*) >- dir=`echo "X$x" | sed -e 's/^X-L//'` >- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then >- found_dir="$dir" >- found_so="$dir/lib$name.$shlibext" >- if test -f "$dir/lib$name.la"; then >- found_la="$dir/lib$name.la" >- fi >- else >- if test -f "$dir/lib$name.$libext"; then >- found_dir="$dir" >- found_a="$dir/lib$name.$libext" >- if test -f "$dir/lib$name.la"; then >- found_la="$dir/lib$name.la" >- fi >- fi >- fi >- ;; >- esac >- if test "X$found_dir" != "X"; then >- break >- fi >- done >- fi >- if test "X$found_dir" != "X"; then >- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" >- if test "X$found_so" != "X"; then >- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" >- else >- haveit= >- for x in $ltrpathdirs; do >- if test "X$x" = "X$found_dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- ltrpathdirs="$ltrpathdirs $found_dir" >- fi >- if test "$hardcode_direct" = yes; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" >- else >- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" >- haveit= >- for x in $rpathdirs; do >- if test "X$x" = "X$found_dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- rpathdirs="$rpathdirs $found_dir" >- fi >- else >- haveit= >- for x in $LDFLAGS $LIBINTL; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-L$found_dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" >- fi >- if test "$hardcode_minus_L" != no; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" >- else >- LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" >- fi >- fi >- fi >- fi >- else >- if test "X$found_a" != "X"; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" >- else >- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" >- fi >- fi >- additional_includedir= >- case "$found_dir" in >- */lib | */lib/) >- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` >- additional_includedir="$basedir/include" >- ;; >- esac >- if test "X$additional_includedir" != "X"; then >- if test "X$additional_includedir" != "X/usr/include"; then >- haveit= >- if test "X$additional_includedir" = "X/usr/local/include"; then >- if test -n "$GCC"; then >- case $host_os in >- linux* | gnu* | k*bsd*-gnu) haveit=yes;; >- esac >- fi >- fi >- if test -z "$haveit"; then >- for x in $CPPFLAGS $INCINTL; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-I$additional_includedir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- if test -d "$additional_includedir"; then >- INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" >- fi >- fi >- fi >- fi >- fi >- if test -n "$found_la"; then >- save_libdir="$libdir" >- case "$found_la" in >- */* | *\\*) . "$found_la" ;; >- *) . "./$found_la" ;; >- esac >- libdir="$save_libdir" >- for dep in $dependency_libs; do >- case "$dep" in >- -L*) >- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` >- if test "X$additional_libdir" != "X/usr/lib"; then >- haveit= >- if test "X$additional_libdir" = "X/usr/local/lib"; then >- if test -n "$GCC"; then >- case $host_os in >- linux* | gnu* | k*bsd*-gnu) haveit=yes;; >- esac >- fi >- fi >- if test -z "$haveit"; then >- haveit= >- for x in $LDFLAGS $LIBINTL; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-L$additional_libdir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" >- fi >- fi >- haveit= >- for x in $LDFLAGS $LTLIBINTL; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X-L$additional_libdir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- if test -d "$additional_libdir"; then >- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" >- fi >- fi >- fi >- fi >- ;; >- -R*) >- dir=`echo "X$dep" | sed -e 's/^X-R//'` >- if test "$enable_rpath" != no; then >- haveit= >- for x in $rpathdirs; do >- if test "X$x" = "X$dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- rpathdirs="$rpathdirs $dir" >- fi >- haveit= >- for x in $ltrpathdirs; do >- if test "X$x" = "X$dir"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- ltrpathdirs="$ltrpathdirs $dir" >- fi >- fi >- ;; >- -l*) >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` >- ;; >- *.la) >- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` >- ;; >- *) >- LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" >- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" >- ;; >- esac >- done >- fi >- else >- LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" >- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" >- fi >- fi >- fi >- done >- done >- if test "X$rpathdirs" != "X"; then >- if test -n "$hardcode_libdir_separator"; then >- alldirs= >- for found_dir in $rpathdirs; do >- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" >- done >- acl_save_libdir="$libdir" >- libdir="$alldirs" >- eval flag=\"$hardcode_libdir_flag_spec\" >- libdir="$acl_save_libdir" >- LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" >- else >- for found_dir in $rpathdirs; do >- acl_save_libdir="$libdir" >- libdir="$found_dir" >- eval flag=\"$hardcode_libdir_flag_spec\" >- libdir="$acl_save_libdir" >- LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" >- done >- fi >- fi >- if test "X$ltrpathdirs" != "X"; then >- for found_dir in $ltrpathdirs; do >- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" >- done >- fi >- >- echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 >-echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 >-if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- gt_save_CPPFLAGS="$CPPFLAGS" >- CPPFLAGS="$CPPFLAGS $INCINTL" >- gt_save_LIBS="$LIBS" >- LIBS="$LIBS $LIBINTL" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <libintl.h> >-extern int _nl_msg_cat_cntr; >-extern >-#ifdef __cplusplus >-"C" >-#endif >-const char *_nl_expand_alias (const char *); >-int >-main () >-{ >-bindtextdomain ("", ""); >-return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- gt_cv_func_gnugettext1_libintl=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-gt_cv_func_gnugettext1_libintl=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then >- LIBS="$LIBS $LIBICONV" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <libintl.h> >-extern int _nl_msg_cat_cntr; >-extern >-#ifdef __cplusplus >-"C" >-#endif >-const char *_nl_expand_alias (const char *); >-int >-main () >-{ >-bindtextdomain ("", ""); >-return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- LIBINTL="$LIBINTL $LIBICONV" >- LTLIBINTL="$LTLIBINTL $LTLIBICONV" >- gt_cv_func_gnugettext1_libintl=yes >- >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- fi >- CPPFLAGS="$gt_save_CPPFLAGS" >- LIBS="$gt_save_LIBS" >-fi >-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 >-echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 >- fi >- >- if test "$gt_cv_func_gnugettext1_libc" = "yes" \ >- || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ >- && test "$PACKAGE" != gettext-runtime \ >- && test "$PACKAGE" != gettext-tools; }; then >- gt_use_preinstalled_gnugettext=yes >- else >- LIBINTL= >- LTLIBINTL= >- INCINTL= >- fi >- >- >- >- if test -n "$INTL_MACOSX_LIBS"; then >- if test "$gt_use_preinstalled_gnugettext" = "yes" \ >- || test "$nls_cv_use_gnu_gettext" = "yes"; then >- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" >- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" >- fi >- fi >- >- if test "$gt_use_preinstalled_gnugettext" = "yes" \ >- || test "$nls_cv_use_gnu_gettext" = "yes"; then >- >-cat >>confdefs.h <<\_ACEOF >-#define ENABLE_NLS 1 >-_ACEOF >- >- else >- USE_NLS=no >- fi >- fi >- >- echo "$as_me:$LINENO: checking whether to use NLS" >&5 >-echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 >- echo "$as_me:$LINENO: result: $USE_NLS" >&5 >-echo "${ECHO_T}$USE_NLS" >&6 >- if test "$USE_NLS" = "yes"; then >- echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 >-echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 >- if test "$gt_use_preinstalled_gnugettext" = "yes"; then >- if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then >- gt_source="external libintl" >- else >- gt_source="libc" >- fi >- else >- gt_source="included intl directory" >- fi >- echo "$as_me:$LINENO: result: $gt_source" >&5 >-echo "${ECHO_T}$gt_source" >&6 >- fi >- >- if test "$USE_NLS" = "yes"; then >- >- if test "$gt_use_preinstalled_gnugettext" = "yes"; then >- if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then >- echo "$as_me:$LINENO: checking how to link with libintl" >&5 >-echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 >- echo "$as_me:$LINENO: result: $LIBINTL" >&5 >-echo "${ECHO_T}$LIBINTL" >&6 >- >- for element in $INCINTL; do >- haveit= >- for x in $CPPFLAGS; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X$element"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" >- fi >- done >- >- fi >- >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_GETTEXT 1 >-_ACEOF >- >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_DCGETTEXT 1 >-_ACEOF >- >- fi >- >- POSUB=po >- fi >- >- >- >- INTLLIBS="$LIBINTL" >- >- >- >- >- >- # >- >- >- >- >- >- am_save_CPPFLAGS="$CPPFLAGS" >- >- for element in $INCICONV; do >- haveit= >- for x in $CPPFLAGS; do >- >- acl_save_prefix="$prefix" >- prefix="$acl_final_prefix" >- acl_save_exec_prefix="$exec_prefix" >- exec_prefix="$acl_final_exec_prefix" >- eval x=\"$x\" >- exec_prefix="$acl_save_exec_prefix" >- prefix="$acl_save_prefix" >- >- if test "X$x" = "X$element"; then >- haveit=yes >- break >- fi >- done >- if test -z "$haveit"; then >- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" >- fi >- done >- >- >- echo "$as_me:$LINENO: checking for iconv" >&5 >-echo $ECHO_N "checking for iconv... $ECHO_C" >&6 >-if test "${am_cv_func_iconv+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- am_cv_func_iconv="no, consider installing GNU libiconv" >- am_cv_lib_iconv=no >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >-#include <iconv.h> >-int >-main () >-{ >-iconv_t cd = iconv_open("",""); >- iconv(cd,NULL,NULL,NULL,NULL); >- iconv_close(cd); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- am_cv_func_iconv=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- if test "$am_cv_func_iconv" != yes; then >- am_save_LIBS="$LIBS" >- LIBS="$LIBS $LIBICONV" >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >-#include <iconv.h> >-int >-main () >-{ >-iconv_t cd = iconv_open("",""); >- iconv(cd,NULL,NULL,NULL,NULL); >- iconv_close(cd); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- am_cv_lib_iconv=yes >- am_cv_func_iconv=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- LIBS="$am_save_LIBS" >- fi >- >-fi >-echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 >-echo "${ECHO_T}$am_cv_func_iconv" >&6 >- if test "$am_cv_func_iconv" = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_ICONV 1 >-_ACEOF >- >- fi >- if test "$am_cv_lib_iconv" = yes; then >- echo "$as_me:$LINENO: checking how to link with libiconv" >&5 >-echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 >- echo "$as_me:$LINENO: result: $LIBICONV" >&5 >-echo "${ECHO_T}$LIBICONV" >&6 >- else >- CPPFLAGS="$am_save_CPPFLAGS" >- LIBICONV= >- LTLIBICONV= >- fi >- >- >- >- if test "$am_cv_func_iconv" = yes; then >- echo "$as_me:$LINENO: checking for iconv declaration" >&5 >-echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 >- if test "${am_cv_proto_iconv+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-#include <stdlib.h> >-#include <iconv.h> >-extern >-#ifdef __cplusplus >-"C" >-#endif >-#if defined(__STDC__) || defined(__cplusplus) >-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); >-#else >-size_t iconv(); >-#endif >- >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- am_cv_proto_iconv_arg1="" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-am_cv_proto_iconv_arg1="const" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" >-fi >- >- am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` >- echo "$as_me:$LINENO: result: ${ac_t:- >- }$am_cv_proto_iconv" >&5 >-echo "${ECHO_T}${ac_t:- >- }$am_cv_proto_iconv" >&6 >- >-cat >>confdefs.h <<_ACEOF >-#define ICONV_CONST $am_cv_proto_iconv_arg1 >-_ACEOF >- >- fi >- >- >- >- >- >- >- if test "$lt_cv_prog_gnu_ld" = "yes"; then >- >- LDFLAGS="$LDFLAGS -Wl,--warn-common" >- fi >- # (add duplicate symbols option to LDFLAGS) >- >-# ----------------------------------------------------------------------------- >-# The following is a "global error" flag used to defer aborting configure >-# until after ALL errors have been detected/reported. >-# ----------------------------------------------------------------------------- >- >-hc_error=no >- >-############################################################################### >-# Autoheader templates >-############################################################################### >- >-# All AC_DEFINE() macros used within autoconf (to define pre-processor vars >-# used during the actual build process) must have corresponding AH_TEMPLATE >-# statements coded somewhere. We place them all here simply for convenience. >-# The order in which they appear below is the very same order that they will >-# appear in the resulting config.h file. (Not important, but handy to know) >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >- >-############################################################################### >-# OS-specific settings that we can't figure out any other way (yet) >-############################################################################### >- >-# >-# Determine what type of host we're building on... >-# >- >-case "$host_os" in >- >- linux*) >- >- hc_cv_is_nix=yes >- hc_cv_is_windows=no >- hc_cv_is_mingw32=no >- hc_cv_is_apple=no >- ;; >- >- mingw*) >- >- hc_cv_is_nix=no >- hc_cv_is_windows=yes >- hc_cv_is_mingw32=yes >- hc_cv_is_apple=no >- ;; >- >- cygwin*) >- >- hc_cv_is_nix=no >- hc_cv_is_windows=yes >- hc_cv_is_mingw32=no >- hc_cv_is_apple=no >- ;; >- >- darwin*) >- >- if test $host_vendor = apple; then >- >- hc_cv_is_nix=no >- hc_cv_is_windows=no >- hc_cv_is_mingw32=no >- hc_cv_is_apple=yes >- >- else >- >- hc_cv_is_nix=no >- hc_cv_is_windows=no >- hc_cv_is_mingw32=no >- hc_cv_is_apple=no >- >- fi >- ;; >- >- *bsd*) >- hc_cv_is_nix=yes >- hc_cv_is_windows=no >- hc_cv_is_mingw32=no >- hc_cv_is_apple=no >- ;; >- >- *) >- hc_cv_is_nix=no >- hc_cv_is_windows=no >- hc_cv_is_mingw32=no >- hc_cv_is_apple=no >- ;; >-esac >- >-#------------------------------------------------------# >-# Hard-coded host-operating-system-specific settings # >-# that we have no other/easy way to figure out... # >-#------------------------------------------------------# >- >-if test "$hc_cv_is_nix" = "yes"; then >- >- hc_cv_build_hercifc=yes >- hc_cv_non_unique_gettimeofday=no >- >-elif test "$hc_cv_is_windows" = "yes"; then >- >- hc_cv_build_hercifc=no >- hc_cv_non_unique_gettimeofday=yes >- >-elif test "$hc_cv_is_apple" = "yes"; then >- >- hc_cv_build_hercifc=yes >- hc_cv_non_unique_gettimeofday=no >- >-else >- hc_cv_build_hercifc=no >- hc_cv_non_unique_gettimeofday=no >-fi >- >-############################################################################### >-# Checks for REQUIRED (non-optional) header files... >-############################################################################### >- >-# PROGRAMMING NOTE: We use 'AC_CHECK_HEADER' here (singular) since we don't >-# care whether 'HAVE_XXX' gets #defined or not since, because these are re- >-# quired headers, if any of them are not found, we abort and thus we don't >-# need to have any 'HAVE_XXX' pre-processor #defined entered into config.h >-# (because we can't build Herc at all if any of them don't happen to exist) >- >-if test "${ac_cv_header_ctype_h+set}" = set; then >- echo "$as_me:$LINENO: checking for ctype.h" >&5 >-echo $ECHO_N "checking for ctype.h... $ECHO_C" >&6 >-if test "${ac_cv_header_ctype_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_ctype_h" >&5 >-echo "${ECHO_T}$ac_cv_header_ctype_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking ctype.h usability" >&5 >-echo $ECHO_N "checking ctype.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <ctype.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking ctype.h presence" >&5 >-echo $ECHO_N "checking ctype.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <ctype.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: ctype.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: ctype.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: ctype.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: ctype.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: ctype.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: ctype.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: ctype.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: ctype.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: ctype.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: ctype.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: ctype.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: ctype.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: ctype.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: ctype.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: ctype.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: ctype.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for ctype.h" >&5 >-echo $ECHO_N "checking for ctype.h... $ECHO_C" >&6 >-if test "${ac_cv_header_ctype_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_ctype_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_ctype_h" >&5 >-echo "${ECHO_T}$ac_cv_header_ctype_h" >&6 >- >-fi >-if test $ac_cv_header_ctype_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'ctype.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'ctype.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_errno_h+set}" = set; then >- echo "$as_me:$LINENO: checking for errno.h" >&5 >-echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 >-if test "${ac_cv_header_errno_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 >-echo "${ECHO_T}$ac_cv_header_errno_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking errno.h usability" >&5 >-echo $ECHO_N "checking errno.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <errno.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking errno.h presence" >&5 >-echo $ECHO_N "checking errno.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <errno.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: errno.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: errno.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: errno.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: errno.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: errno.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: errno.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: errno.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: errno.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: errno.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: errno.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: errno.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for errno.h" >&5 >-echo $ECHO_N "checking for errno.h... $ECHO_C" >&6 >-if test "${ac_cv_header_errno_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_errno_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5 >-echo "${ECHO_T}$ac_cv_header_errno_h" >&6 >- >-fi >-if test $ac_cv_header_errno_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'errno.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'errno.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_fcntl_h+set}" = set; then >- echo "$as_me:$LINENO: checking for fcntl.h" >&5 >-echo $ECHO_N "checking for fcntl.h... $ECHO_C" >&6 >-if test "${ac_cv_header_fcntl_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_fcntl_h" >&5 >-echo "${ECHO_T}$ac_cv_header_fcntl_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking fcntl.h usability" >&5 >-echo $ECHO_N "checking fcntl.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <fcntl.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking fcntl.h presence" >&5 >-echo $ECHO_N "checking fcntl.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <fcntl.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: fcntl.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: fcntl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: fcntl.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: fcntl.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: fcntl.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: fcntl.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: fcntl.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: fcntl.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: fcntl.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: fcntl.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: fcntl.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: fcntl.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: fcntl.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: fcntl.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: fcntl.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: fcntl.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for fcntl.h" >&5 >-echo $ECHO_N "checking for fcntl.h... $ECHO_C" >&6 >-if test "${ac_cv_header_fcntl_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_fcntl_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_fcntl_h" >&5 >-echo "${ECHO_T}$ac_cv_header_fcntl_h" >&6 >- >-fi >-if test $ac_cv_header_fcntl_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'fcntl.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'fcntl.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_limits_h+set}" = set; then >- echo "$as_me:$LINENO: checking for limits.h" >&5 >-echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 >-if test "${ac_cv_header_limits_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 >-echo "${ECHO_T}$ac_cv_header_limits_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking limits.h usability" >&5 >-echo $ECHO_N "checking limits.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <limits.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking limits.h presence" >&5 >-echo $ECHO_N "checking limits.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <limits.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: limits.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: limits.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: limits.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: limits.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: limits.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: limits.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: limits.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: limits.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: limits.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: limits.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: limits.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for limits.h" >&5 >-echo $ECHO_N "checking for limits.h... $ECHO_C" >&6 >-if test "${ac_cv_header_limits_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_limits_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5 >-echo "${ECHO_T}$ac_cv_header_limits_h" >&6 >- >-fi >-if test $ac_cv_header_limits_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'limits.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'limits.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_setjmp_h+set}" = set; then >- echo "$as_me:$LINENO: checking for setjmp.h" >&5 >-echo $ECHO_N "checking for setjmp.h... $ECHO_C" >&6 >-if test "${ac_cv_header_setjmp_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_setjmp_h" >&5 >-echo "${ECHO_T}$ac_cv_header_setjmp_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking setjmp.h usability" >&5 >-echo $ECHO_N "checking setjmp.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <setjmp.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking setjmp.h presence" >&5 >-echo $ECHO_N "checking setjmp.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <setjmp.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: setjmp.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: setjmp.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: setjmp.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: setjmp.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: setjmp.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: setjmp.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: setjmp.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: setjmp.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: setjmp.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: setjmp.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: setjmp.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: setjmp.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: setjmp.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: setjmp.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: setjmp.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: setjmp.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for setjmp.h" >&5 >-echo $ECHO_N "checking for setjmp.h... $ECHO_C" >&6 >-if test "${ac_cv_header_setjmp_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_setjmp_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_setjmp_h" >&5 >-echo "${ECHO_T}$ac_cv_header_setjmp_h" >&6 >- >-fi >-if test $ac_cv_header_setjmp_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'setjmp.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'setjmp.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_stdarg_h+set}" = set; then >- echo "$as_me:$LINENO: checking for stdarg.h" >&5 >-echo $ECHO_N "checking for stdarg.h... $ECHO_C" >&6 >-if test "${ac_cv_header_stdarg_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdarg_h" >&5 >-echo "${ECHO_T}$ac_cv_header_stdarg_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking stdarg.h usability" >&5 >-echo $ECHO_N "checking stdarg.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <stdarg.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking stdarg.h presence" >&5 >-echo $ECHO_N "checking stdarg.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdarg.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: stdarg.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: stdarg.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdarg.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: stdarg.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: stdarg.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: stdarg.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdarg.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: stdarg.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdarg.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: stdarg.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdarg.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: stdarg.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdarg.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: stdarg.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdarg.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: stdarg.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for stdarg.h" >&5 >-echo $ECHO_N "checking for stdarg.h... $ECHO_C" >&6 >-if test "${ac_cv_header_stdarg_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_stdarg_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdarg_h" >&5 >-echo "${ECHO_T}$ac_cv_header_stdarg_h" >&6 >- >-fi >-if test $ac_cv_header_stdarg_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'stdarg.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'stdarg.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_stdio_h+set}" = set; then >- echo "$as_me:$LINENO: checking for stdio.h" >&5 >-echo $ECHO_N "checking for stdio.h... $ECHO_C" >&6 >-if test "${ac_cv_header_stdio_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdio_h" >&5 >-echo "${ECHO_T}$ac_cv_header_stdio_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking stdio.h usability" >&5 >-echo $ECHO_N "checking stdio.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <stdio.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking stdio.h presence" >&5 >-echo $ECHO_N "checking stdio.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdio.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: stdio.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: stdio.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdio.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: stdio.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: stdio.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: stdio.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdio.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: stdio.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdio.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: stdio.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdio.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: stdio.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdio.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: stdio.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdio.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: stdio.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for stdio.h" >&5 >-echo $ECHO_N "checking for stdio.h... $ECHO_C" >&6 >-if test "${ac_cv_header_stdio_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_stdio_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdio_h" >&5 >-echo "${ECHO_T}$ac_cv_header_stdio_h" >&6 >- >-fi >-if test $ac_cv_header_stdio_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'stdio.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'stdio.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_stdlib_h+set}" = set; then >- echo "$as_me:$LINENO: checking for stdlib.h" >&5 >-echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 >-if test "${ac_cv_header_stdlib_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 >-echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking stdlib.h usability" >&5 >-echo $ECHO_N "checking stdlib.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <stdlib.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking stdlib.h presence" >&5 >-echo $ECHO_N "checking stdlib.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdlib.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: stdlib.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: stdlib.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: stdlib.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdlib.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: stdlib.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdlib.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: stdlib.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: stdlib.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: stdlib.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: stdlib.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: stdlib.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for stdlib.h" >&5 >-echo $ECHO_N "checking for stdlib.h... $ECHO_C" >&6 >-if test "${ac_cv_header_stdlib_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_stdlib_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5 >-echo "${ECHO_T}$ac_cv_header_stdlib_h" >&6 >- >-fi >-if test $ac_cv_header_stdlib_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'stdlib.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'stdlib.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_string_h+set}" = set; then >- echo "$as_me:$LINENO: checking for string.h" >&5 >-echo $ECHO_N "checking for string.h... $ECHO_C" >&6 >-if test "${ac_cv_header_string_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 >-echo "${ECHO_T}$ac_cv_header_string_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking string.h usability" >&5 >-echo $ECHO_N "checking string.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <string.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking string.h presence" >&5 >-echo $ECHO_N "checking string.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <string.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: string.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: string.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: string.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: string.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: string.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: string.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: string.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: string.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: string.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: string.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: string.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: string.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for string.h" >&5 >-echo $ECHO_N "checking for string.h... $ECHO_C" >&6 >-if test "${ac_cv_header_string_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_string_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5 >-echo "${ECHO_T}$ac_cv_header_string_h" >&6 >- >-fi >-if test $ac_cv_header_string_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'string.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'string.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_time_h+set}" = set; then >- echo "$as_me:$LINENO: checking for time.h" >&5 >-echo $ECHO_N "checking for time.h... $ECHO_C" >&6 >-if test "${ac_cv_header_time_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_time_h" >&5 >-echo "${ECHO_T}$ac_cv_header_time_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking time.h usability" >&5 >-echo $ECHO_N "checking time.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <time.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking time.h presence" >&5 >-echo $ECHO_N "checking time.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <time.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: time.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: time.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: time.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: time.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: time.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: time.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: time.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: time.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: time.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: time.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: time.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: time.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: time.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: time.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: time.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: time.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for time.h" >&5 >-echo $ECHO_N "checking for time.h... $ECHO_C" >&6 >-if test "${ac_cv_header_time_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_time_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_time_h" >&5 >-echo "${ECHO_T}$ac_cv_header_time_h" >&6 >- >-fi >-if test $ac_cv_header_time_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'time.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'time.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_unistd_h+set}" = set; then >- echo "$as_me:$LINENO: checking for unistd.h" >&5 >-echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 >-if test "${ac_cv_header_unistd_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 >-echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking unistd.h usability" >&5 >-echo $ECHO_N "checking unistd.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <unistd.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking unistd.h presence" >&5 >-echo $ECHO_N "checking unistd.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <unistd.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: unistd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: unistd.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: unistd.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: unistd.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: unistd.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: unistd.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: unistd.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: unistd.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: unistd.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: unistd.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: unistd.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: unistd.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: unistd.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for unistd.h" >&5 >-echo $ECHO_N "checking for unistd.h... $ECHO_C" >&6 >-if test "${ac_cv_header_unistd_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_unistd_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_unistd_h" >&5 >-echo "${ECHO_T}$ac_cv_header_unistd_h" >&6 >- >-fi >-if test $ac_cv_header_unistd_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'unistd.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'unistd.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_sys_stat_h+set}" = set; then >- echo "$as_me:$LINENO: checking for sys/stat.h" >&5 >-echo $ECHO_N "checking for sys/stat.h... $ECHO_C" >&6 >-if test "${ac_cv_header_sys_stat_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_sys_stat_h" >&5 >-echo "${ECHO_T}$ac_cv_header_sys_stat_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking sys/stat.h usability" >&5 >-echo $ECHO_N "checking sys/stat.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <sys/stat.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking sys/stat.h presence" >&5 >-echo $ECHO_N "checking sys/stat.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/stat.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: sys/stat.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: sys/stat.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: sys/stat.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: sys/stat.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: sys/stat.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: sys/stat.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: sys/stat.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/stat.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: sys/stat.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for sys/stat.h" >&5 >-echo $ECHO_N "checking for sys/stat.h... $ECHO_C" >&6 >-if test "${ac_cv_header_sys_stat_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_sys_stat_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_sys_stat_h" >&5 >-echo "${ECHO_T}$ac_cv_header_sys_stat_h" >&6 >- >-fi >-if test $ac_cv_header_sys_stat_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'sys/stat.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'sys/stat.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_sys_time_h+set}" = set; then >- echo "$as_me:$LINENO: checking for sys/time.h" >&5 >-echo $ECHO_N "checking for sys/time.h... $ECHO_C" >&6 >-if test "${ac_cv_header_sys_time_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_sys_time_h" >&5 >-echo "${ECHO_T}$ac_cv_header_sys_time_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking sys/time.h usability" >&5 >-echo $ECHO_N "checking sys/time.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <sys/time.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking sys/time.h presence" >&5 >-echo $ECHO_N "checking sys/time.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/time.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: sys/time.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: sys/time.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/time.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: sys/time.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: sys/time.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: sys/time.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/time.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: sys/time.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/time.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: sys/time.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/time.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: sys/time.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/time.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: sys/time.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/time.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: sys/time.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for sys/time.h" >&5 >-echo $ECHO_N "checking for sys/time.h... $ECHO_C" >&6 >-if test "${ac_cv_header_sys_time_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_sys_time_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_sys_time_h" >&5 >-echo "${ECHO_T}$ac_cv_header_sys_time_h" >&6 >- >-fi >-if test $ac_cv_header_sys_time_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'sys/time.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'sys/time.h' not found " >&6; hc_error=yes >-fi >- >- >-if test "${ac_cv_header_sys_types_h+set}" = set; then >- echo "$as_me:$LINENO: checking for sys/types.h" >&5 >-echo $ECHO_N "checking for sys/types.h... $ECHO_C" >&6 >-if test "${ac_cv_header_sys_types_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h" >&5 >-echo "${ECHO_T}$ac_cv_header_sys_types_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking sys/types.h usability" >&5 >-echo $ECHO_N "checking sys/types.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <sys/types.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking sys/types.h presence" >&5 >-echo $ECHO_N "checking sys/types.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: sys/types.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: sys/types.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/types.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: sys/types.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: sys/types.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: sys/types.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/types.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: sys/types.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/types.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: sys/types.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/types.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: sys/types.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/types.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: sys/types.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: sys/types.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: sys/types.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for sys/types.h" >&5 >-echo $ECHO_N "checking for sys/types.h... $ECHO_C" >&6 >-if test "${ac_cv_header_sys_types_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_sys_types_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h" >&5 >-echo "${ECHO_T}$ac_cv_header_sys_types_h" >&6 >- >-fi >-if test $ac_cv_header_sys_types_h = yes; then >- : >-else >- echo "$as_me:$LINENO: result: ERROR: Required header 'sys/types.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'sys/types.h' not found " >&6; hc_error=yes >-fi >- >- >- >-# PROGRAMMING NOTE: the pthread.h header only required if this is not >-# an fthreads build. Thus we delay aborting until later once we know >-# (if this is a windows build; otherwise we abort right away) >- >-if test "${ac_cv_header_pthread_h+set}" = set; then >- echo "$as_me:$LINENO: checking for pthread.h" >&5 >-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 >-if test "${ac_cv_header_pthread_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 >-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking pthread.h usability" >&5 >-echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <pthread.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking pthread.h presence" >&5 >-echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <pthread.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for pthread.h" >&5 >-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 >-if test "${ac_cv_header_pthread_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_pthread_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 >-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 >- >-fi >-if test $ac_cv_header_pthread_h = yes; then >- hc_cv_have_pthread_h=yes >-else >- >- if test "$hc_cv_is_windows" = "yes"; then >- >- hc_cv_alt_pthread_location=/usr/Pthreads >- >- { echo "$as_me:$LINENO: looking for pthread.h in ${hc_cv_alt_pthread_location} " >&5 >-echo "$as_me: looking for pthread.h in ${hc_cv_alt_pthread_location} " >&6;} >- >- hc_temp=$CFLAGS >- CFLAGS="$CFLAGS -I${hc_cv_alt_pthread_location}" >- >- if test "${ac_cv_header_pthread_h+set}" = set; then >- echo "$as_me:$LINENO: checking for pthread.h" >&5 >-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 >-if test "${ac_cv_header_pthread_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 >-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking pthread.h usability" >&5 >-echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <pthread.h> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking pthread.h presence" >&5 >-echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <pthread.h> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for pthread.h" >&5 >-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 >-if test "${ac_cv_header_pthread_h+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_header_pthread_h=$ac_header_preproc >-fi >-echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 >-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 >- >-fi >-if test $ac_cv_header_pthread_h = yes; then >- hc_cv_have_pthread_h=yes >-else >- hc_cv_have_pthread_h=no >- >-fi >- >- >- >- CFLAGS=$hc_temp >- >- else >- echo "$as_me:$LINENO: result: ERROR: Required header 'pthread.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'pthread.h' not found " >&6 >- hc_error=yes >- fi >- >- >-fi >- >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for optional (non-required) header files... >-############################################################################### >- >-# PROGRAMMING NOTE: We use 'AC_CHECK_HEADERS' here (plural) to cause autoconf >-# to automatically add a #define/#undef 'HAVE_XXX' statement into config.h to >-# let us know whether the header exists on this system or not (since, because >-# these are optional headers, we are still able to successfully build Herc if >-# they don't happen to exist). The 'hc_cv_have_xxx' variables are only defined >-# in case other parts of configure.ac need to know whether the header exists >-# or not without having to do their own AC_CHECK_HEADERS (since we've already >-# done it). >- >-#------------------------------------------------------------------------------ >-# PROGRAMMING NOTE: on Darwin sys/socket.h must be included before >-# net/if.h, net/route.h, or netinet/in.h can be #included, and on OS X 10.3 >-# (but not 10.4) sys/types.h must be #included before sys/socket.h. Thus >-# the below four header checks are treated specially. If we ever drop support >-# for OS X 10.3, a lot of this cruft can be removed, not just here but >-# anywhere we find ourselves manually including sys/types.h. >- >-# PROGRAMMING NOTE: on *BSD sys/socket.h must be included before net/if.h, >-# net/route.h, or netinet/in.h can be #included. >- >- >-for ac_header in sys/socket.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_socket_h=yes >-else >- hc_cv_have_sys_socket_h=no >-fi >- >-done >- >- >-for ac_header in net/if.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_net_if_h=yes >-else >- hc_cv_have_net_if_h=no >-fi >- >-done >- >- >-for ac_header in netinet/in.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_netinet_in_h=yes >-else >- hc_cv_have_netinet_in_h=no >-fi >- >-done >- >- >-for ac_header in netinet/tcp.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_netinet_tcp_h=yes >-else >- hc_cv_have_netinet_tcp_h=no >-fi >- >-done >- >- >-for ac_header in net/route.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_net_route_h=yes >-else >- hc_cv_have_net_route_h=no >-fi >- >-done >- >-#------------------------------------------------------------------------------ >- >- >-for ac_header in arpa/inet.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_arpa_inet_h=yes >-else >- hc_cv_have_arpa_inet_h=no >-fi >- >-done >- >- >-for ac_header in linux/if_tun.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_linux_if_tun_h=yes >-else >- hc_cv_have_linux_if_tun_h=no >-fi >- >-done >- >- >-for ac_header in sys/ioctl.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_ioctl_h=yes >-else >- hc_cv_have_sys_ioctl_h=no >-fi >- >-done >- >- >-for ac_header in sys/mman.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_mman_h=yes >-else >- hc_cv_have_sys_mman_h=no >-fi >- >-done >- >- >-#------------------------------------------------------------------------------ >-# PROGRAMMING NOTE: on *BSD systems sys/param.h must be #included before >-# sys/mount.h as it contains the #define of NGROUPS. >- >- >-for ac_header in sys/param.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_param_h=yes >-else >- hc_cv_have_sys_param_h=no >-fi >- >-done >- >- >-for ac_header in sys/mount.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #if HAVE_SYS_PARAM_H >- #include <sys/param.h> >- #endif >- >- >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_Header=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_Header=no" >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_mount_h=yes >-else >- hc_cv_have_sys_mount_h=no >-fi >- >-done >- >-#------------------------------------------------------------------------------ >- >- >-for ac_header in sys/mtio.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_mtio_h=yes >-else >- hc_cv_have_sys_mtio_h=no >-fi >- >-done >- >- >-for ac_header in sys/resource.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_resource_h=yes >-else >- hc_cv_have_sys_resource_h=no >-fi >- >-done >- >- >-for ac_header in sys/uio.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_uio_h=yes >-else >- hc_cv_have_sys_uio_h=no >-fi >- >-done >- >- >-for ac_header in sys/utsname.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_utsname_h=yes >-else >- hc_cv_have_sys_utsname_h=no >-fi >- >-done >- >- >-for ac_header in sys/wait.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_wait_h=yes >-else >- hc_cv_have_sys_wait_h=no >-fi >- >-done >- >- >-for ac_header in sys/un.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sys_un_h=yes >-else >- hc_cv_have_sys_un_h=no >-fi >- >-done >- >- >-for ac_header in byteswap.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_byteswap_h=yes >-else >- hc_cv_have_byteswap_h=no >-fi >- >-done >- >- >-for ac_header in bzlib.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_bzlib_h=yes >-else >- hc_cv_have_bzlib_h=no >-fi >- >-done >- >- >-for ac_header in dlfcn.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_dlfcn_h=yes >-else >- hc_cv_have_dlfcn_h=no >-fi >- >-done >- >- >-for ac_header in fenv.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_fenv_h=yes >-else >- hc_cv_have_fenv_h=no >-fi >- >-done >- >- >-for ac_header in inttypes.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_inttypes_h=yes >-else >- hc_cv_have_inttypes_h=no >-fi >- >-done >- >- >-for ac_header in iconv.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_iconv_h=yes >-else >- hc_cv_have_iconv_h=no >-fi >- >-done >- >- >-for ac_header in libintl.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_libintl_h=yes >-else >- hc_cv_have_libintl_h=no >-fi >- >-done >- >- >-for ac_header in locale.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_locale_h=yes >-else >- hc_cv_have_locale_h=no >-fi >- >-done >- >- >-for ac_header in ltdl.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_ltdl_h=yes >-else >- hc_cv_have_ltdl_h=no >-fi >- >-done >- >- >-for ac_header in malloc.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_malloc_h=yes >-else >- hc_cv_have_malloc_h=no >-fi >- >-done >- >- >-for ac_header in math.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_math_h=yes >-else >- hc_cv_have_math_h=no >-fi >- >-done >- >- >-for ac_header in netdb.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_netdb_h=yes >-else >- hc_cv_have_netdb_h=no >-fi >- >-done >- >- >-for ac_header in pwd.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_pwd_h=yes >-else >- hc_cv_have_pwd_h=no >-fi >- >-done >- >- >-for ac_header in regex.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_regex_h=yes >-else >- hc_cv_have_regex_h=no >-fi >- >-done >- >- >-for ac_header in sched.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_sched_h=yes >-else >- hc_cv_have_sched_h=no >-fi >- >-done >- >- >-for ac_header in signal.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_signal_h=yes >-else >- hc_cv_have_signal_h=no >-fi >- >-done >- >- >-for ac_header in termios.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_termios_h=yes >-else >- hc_cv_have_termios_h=no >-fi >- >-done >- >- >-for ac_header in time.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_time_h=yes >-else >- hc_cv_have_time_h=no >-fi >- >-done >- >- >-for ac_header in zlib.h >-do >-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >-else >- # Is the header compilable? >-echo "$as_me:$LINENO: checking $ac_header usability" >&5 >-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-#include <$ac_header> >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_header_compiler=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_header_compiler=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >-echo "${ECHO_T}$ac_header_compiler" >&6 >- >-# Is the header present? >-echo "$as_me:$LINENO: checking $ac_header presence" >&5 >-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <$ac_header> >-_ACEOF >-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 >- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } >/dev/null; then >- if test -s conftest.err; then >- ac_cpp_err=$ac_c_preproc_warn_flag >- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag >- else >- ac_cpp_err= >- fi >-else >- ac_cpp_err=yes >-fi >-if test -z "$ac_cpp_err"; then >- ac_header_preproc=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >- ac_header_preproc=no >-fi >-rm -f conftest.err conftest.$ac_ext >-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >-echo "${ECHO_T}$ac_header_preproc" >&6 >- >-# So? What about this header? >-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >- yes:no: ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >- ac_header_preproc=yes >- ;; >- no:yes:* ) >- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >- ( >- cat <<\_ASBOX >-## ------------------------------------------ ## >-## Report this to the AC_PACKAGE_NAME lists. ## >-## ------------------------------------------ ## >-_ASBOX >- ) | >- sed "s/^/$as_me: WARNING: /" >&2 >- ;; >-esac >-echo "$as_me:$LINENO: checking for $ac_header" >&5 >-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_Header+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- eval "$as_ac_Header=\$ac_header_preproc" >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 >- >-fi >-if test `eval echo '${'$as_ac_Header'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_zlib_h=yes >-else >- hc_cv_have_zlib_h=no >-fi >- >-done >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for declarations... >-############################################################################### >- >-# PROGRAMMING NOTE: For declaration checks, you need to be careful to use the >-# following test in your program: >-# >-# #if defined(HAVE_DECL_XXXX) && !HAVE_DECL_XXXXX >-# ...code to handle not declared case... >-# #endif >-# >-# This is because UNLIKE other 'AC_CHECK' macros, when a SYMBOL isn't DECLared, >-# "HAVE_DECL_XXXX" is #defined to '0' instead of leaving "HAVE_DECL_XXXX" #undefined. >-# (e.g. #defined to 1 if you have the declaration and #defined to 0 if you don't) >- >-echo "$as_me:$LINENO: checking whether SIGUSR1 is declared" >&5 >-echo $ECHO_N "checking whether SIGUSR1 is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIGUSR1+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <signal.h> >- >-int >-main () >-{ >-#ifndef SIGUSR1 >- char *p = (char *) SIGUSR1; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIGUSR1=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIGUSR1=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIGUSR1" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIGUSR1" >&6 >-if test $ac_cv_have_decl_SIGUSR1 = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGUSR1 1 >-_ACEOF >- >-hc_cv_have_sigusr1=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGUSR1 0 >-_ACEOF >- >-hc_cv_have_sigusr1=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIGUSR2 is declared" >&5 >-echo $ECHO_N "checking whether SIGUSR2 is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIGUSR2+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <signal.h> >- >-int >-main () >-{ >-#ifndef SIGUSR2 >- char *p = (char *) SIGUSR2; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIGUSR2=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIGUSR2=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIGUSR2" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIGUSR2" >&6 >-if test $ac_cv_have_decl_SIGUSR2 = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGUSR2 1 >-_ACEOF >- >-hc_cv_have_sigusr2=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGUSR2 0 >-_ACEOF >- >-hc_cv_have_sigusr2=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIGPIPE is declared" >&5 >-echo $ECHO_N "checking whether SIGPIPE is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIGPIPE+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <signal.h> >- >-int >-main () >-{ >-#ifndef SIGPIPE >- char *p = (char *) SIGPIPE; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIGPIPE=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIGPIPE=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIGPIPE" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIGPIPE" >&6 >-if test $ac_cv_have_decl_SIGPIPE = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGPIPE 1 >-_ACEOF >- >-hc_cv_have_sigpipe=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGPIPE 0 >-_ACEOF >- >-hc_cv_have_sigpipe=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIGBUS is declared" >&5 >-echo $ECHO_N "checking whether SIGBUS is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIGBUS+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <signal.h> >- >-int >-main () >-{ >-#ifndef SIGBUS >- char *p = (char *) SIGBUS; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIGBUS=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIGBUS=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIGBUS" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIGBUS" >&6 >-if test $ac_cv_have_decl_SIGBUS = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGBUS 1 >-_ACEOF >- >-hc_cv_have_sigbus=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIGBUS 0 >-_ACEOF >- >-hc_cv_have_sigbus=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether IFNAMSIZ is declared" >&5 >-echo $ECHO_N "checking whether IFNAMSIZ is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_IFNAMSIZ+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-int >-main () >-{ >-#ifndef IFNAMSIZ >- char *p = (char *) IFNAMSIZ; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_IFNAMSIZ=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_IFNAMSIZ=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_IFNAMSIZ" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_IFNAMSIZ" >&6 >-if test $ac_cv_have_decl_IFNAMSIZ = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_IFNAMSIZ 1 >-_ACEOF >- >-hc_cv_have_ifnamsiz=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_IFNAMSIZ 0 >-_ACEOF >- >-hc_cv_have_ifnamsiz=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether LOGIN_NAME_MAX is declared" >&5 >-echo $ECHO_N "checking whether LOGIN_NAME_MAX is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_LOGIN_NAME_MAX+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <limits.h> >- >-int >-main () >-{ >-#ifndef LOGIN_NAME_MAX >- char *p = (char *) LOGIN_NAME_MAX; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_LOGIN_NAME_MAX=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_LOGIN_NAME_MAX=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_LOGIN_NAME_MAX" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_LOGIN_NAME_MAX" >&6 >-if test $ac_cv_have_decl_LOGIN_NAME_MAX = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_LOGIN_NAME_MAX 1 >-_ACEOF >- >-hc_cv_have_login_name_max=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_LOGIN_NAME_MAX 0 >-_ACEOF >- >-hc_cv_have_login_name_max=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether _SC_NPROCESSORS_CONF is declared" >&5 >-echo $ECHO_N "checking whether _SC_NPROCESSORS_CONF is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl__SC_NPROCESSORS_CONF+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <unistd.h> >- >-int >-main () >-{ >-#ifndef _SC_NPROCESSORS_CONF >- char *p = (char *) _SC_NPROCESSORS_CONF; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl__SC_NPROCESSORS_CONF=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl__SC_NPROCESSORS_CONF=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl__SC_NPROCESSORS_CONF" >&5 >-echo "${ECHO_T}$ac_cv_have_decl__SC_NPROCESSORS_CONF" >&6 >-if test $ac_cv_have_decl__SC_NPROCESSORS_CONF = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL__SC_NPROCESSORS_CONF 1 >-_ACEOF >- >-hc_cv_have_sc_nprocessors_conf=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL__SC_NPROCESSORS_CONF 0 >-_ACEOF >- >-hc_cv_have_sc_nprocessors_conf=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether _SC_NPROCESSORS_ONLN is declared" >&5 >-echo $ECHO_N "checking whether _SC_NPROCESSORS_ONLN is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl__SC_NPROCESSORS_ONLN+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <unistd.h> >- >-int >-main () >-{ >-#ifndef _SC_NPROCESSORS_ONLN >- char *p = (char *) _SC_NPROCESSORS_ONLN; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl__SC_NPROCESSORS_ONLN=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl__SC_NPROCESSORS_ONLN=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl__SC_NPROCESSORS_ONLN" >&5 >-echo "${ECHO_T}$ac_cv_have_decl__SC_NPROCESSORS_ONLN" >&6 >-if test $ac_cv_have_decl__SC_NPROCESSORS_ONLN = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL__SC_NPROCESSORS_ONLN 1 >-_ACEOF >- >-hc_cv_have_sc_nprocessors_onln=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL__SC_NPROCESSORS_ONLN 0 >-_ACEOF >- >-hc_cv_have_sc_nprocessors_onln=no >-fi >- >- >- >-echo "$as_me:$LINENO: checking whether SIOCSIFNETMASK is declared" >&5 >-echo $ECHO_N "checking whether SIOCSIFNETMASK is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIOCSIFNETMASK+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <linux/sockios.h> >- >-int >-main () >-{ >-#ifndef SIOCSIFNETMASK >- char *p = (char *) SIOCSIFNETMASK; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIOCSIFNETMASK=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIOCSIFNETMASK=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIOCSIFNETMASK" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIOCSIFNETMASK" >&6 >-if test $ac_cv_have_decl_SIOCSIFNETMASK = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCSIFNETMASK 1 >-_ACEOF >- >-hc_cv_have_siocsifnetmask=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCSIFNETMASK 0 >-_ACEOF >- >-hc_cv_have_siocsifnetmask=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIOCSIFHWADDR is declared" >&5 >-echo $ECHO_N "checking whether SIOCSIFHWADDR is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIOCSIFHWADDR+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <linux/sockios.h> >- >-int >-main () >-{ >-#ifndef SIOCSIFHWADDR >- char *p = (char *) SIOCSIFHWADDR; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIOCSIFHWADDR=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIOCSIFHWADDR=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIOCSIFHWADDR" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIOCSIFHWADDR" >&6 >-if test $ac_cv_have_decl_SIOCSIFHWADDR = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCSIFHWADDR 1 >-_ACEOF >- >-hc_cv_have_siocsifhwaddr=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCSIFHWADDR 0 >-_ACEOF >- >-hc_cv_have_siocsifhwaddr=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIOCADDRT is declared" >&5 >-echo $ECHO_N "checking whether SIOCADDRT is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIOCADDRT+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <linux/sockios.h> >- >-int >-main () >-{ >-#ifndef SIOCADDRT >- char *p = (char *) SIOCADDRT; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIOCADDRT=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIOCADDRT=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIOCADDRT" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIOCADDRT" >&6 >-if test $ac_cv_have_decl_SIOCADDRT = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCADDRT 1 >-_ACEOF >- >-hc_cv_have_siocaddrt=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCADDRT 0 >-_ACEOF >- >-hc_cv_have_siocaddrt=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIOCDELRT is declared" >&5 >-echo $ECHO_N "checking whether SIOCDELRT is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIOCDELRT+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <linux/sockios.h> >- >-int >-main () >-{ >-#ifndef SIOCDELRT >- char *p = (char *) SIOCDELRT; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIOCDELRT=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIOCDELRT=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIOCDELRT" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIOCDELRT" >&6 >-if test $ac_cv_have_decl_SIOCDELRT = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCDELRT 1 >-_ACEOF >- >-hc_cv_have_siocdelrt=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCDELRT 0 >-_ACEOF >- >-hc_cv_have_siocdelrt=no >-fi >- >- >-echo "$as_me:$LINENO: checking whether SIOCDIFADDR is declared" >&5 >-echo $ECHO_N "checking whether SIOCDIFADDR is declared... $ECHO_C" >&6 >-if test "${ac_cv_have_decl_SIOCDIFADDR+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <linux/sockios.h> >- >-int >-main () >-{ >-#ifndef SIOCDIFADDR >- char *p = (char *) SIOCDIFADDR; >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_have_decl_SIOCDIFADDR=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_have_decl_SIOCDIFADDR=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_have_decl_SIOCDIFADDR" >&5 >-echo "${ECHO_T}$ac_cv_have_decl_SIOCDIFADDR" >&6 >-if test $ac_cv_have_decl_SIOCDIFADDR = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCDIFADDR 1 >-_ACEOF >- >-hc_cv_have_siocdifaddr=yes >-else >- cat >>confdefs.h <<_ACEOF >-#define HAVE_DECL_SIOCDIFADDR 0 >-_ACEOF >- >-hc_cv_have_siocdifaddr=no >-fi >- >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for types... >-############################################################################### >- >-echo "$as_me:$LINENO: checking for u_int8_t" >&5 >-echo $ECHO_N "checking for u_int8_t... $ECHO_C" >&6 >-if test "${ac_cv_type_u_int8_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((u_int8_t *) 0) >- return 0; >-if (sizeof (u_int8_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_u_int8_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_u_int8_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5 >-echo "${ECHO_T}$ac_cv_type_u_int8_t" >&6 >-if test $ac_cv_type_u_int8_t = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_U_INT8_T 1 >-_ACEOF >- >-hc_cv_have_u_int8_t=yes >-else >- hc_cv_have_u_int8_t=no >-fi >- >-echo "$as_me:$LINENO: checking for useconds_t" >&5 >-echo $ECHO_N "checking for useconds_t... $ECHO_C" >&6 >-if test "${ac_cv_type_useconds_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((useconds_t *) 0) >- return 0; >-if (sizeof (useconds_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_useconds_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_useconds_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_useconds_t" >&5 >-echo "${ECHO_T}$ac_cv_type_useconds_t" >&6 >-if test $ac_cv_type_useconds_t = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_USECONDS_T 1 >-_ACEOF >- >-hc_cv_have_useconds_t=yes >-else >- hc_cv_have_useconds_t=no >-fi >- >-echo "$as_me:$LINENO: checking for id_t" >&5 >-echo $ECHO_N "checking for id_t... $ECHO_C" >&6 >-if test "${ac_cv_type_id_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((id_t *) 0) >- return 0; >-if (sizeof (id_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_id_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_id_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_id_t" >&5 >-echo "${ECHO_T}$ac_cv_type_id_t" >&6 >-if test $ac_cv_type_id_t = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_ID_T 1 >-_ACEOF >- >-hc_cv_have_id_t=yes >-else >- hc_cv_have_id_t=no >-fi >- >-echo "$as_me:$LINENO: checking for u_char" >&5 >-echo $ECHO_N "checking for u_char... $ECHO_C" >&6 >-if test "${ac_cv_type_u_char+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-int >-main () >-{ >-if ((u_char *) 0) >- return 0; >-if (sizeof (u_char)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_u_char=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_u_char=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_u_char" >&5 >-echo "${ECHO_T}$ac_cv_type_u_char" >&6 >-if test $ac_cv_type_u_char = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_U_CHAR 1 >-_ACEOF >- >-hc_cv_have_u_char=yes >-else >- hc_cv_have_u_char=no >-fi >- >-echo "$as_me:$LINENO: checking for u_short" >&5 >-echo $ECHO_N "checking for u_short... $ECHO_C" >&6 >-if test "${ac_cv_type_u_short+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-int >-main () >-{ >-if ((u_short *) 0) >- return 0; >-if (sizeof (u_short)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_u_short=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_u_short=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_u_short" >&5 >-echo "${ECHO_T}$ac_cv_type_u_short" >&6 >-if test $ac_cv_type_u_short = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_U_SHORT 1 >-_ACEOF >- >-hc_cv_have_u_short=yes >-else >- hc_cv_have_u_short=no >-fi >- >-echo "$as_me:$LINENO: checking for u_int" >&5 >-echo $ECHO_N "checking for u_int... $ECHO_C" >&6 >-if test "${ac_cv_type_u_int+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-int >-main () >-{ >-if ((u_int *) 0) >- return 0; >-if (sizeof (u_int)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_u_int=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_u_int=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_u_int" >&5 >-echo "${ECHO_T}$ac_cv_type_u_int" >&6 >-if test $ac_cv_type_u_int = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_U_INT 1 >-_ACEOF >- >-hc_cv_have_u_int=yes >-else >- hc_cv_have_u_int=no >-fi >- >-echo "$as_me:$LINENO: checking for u_long" >&5 >-echo $ECHO_N "checking for u_long... $ECHO_C" >&6 >-if test "${ac_cv_type_u_long+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-int >-main () >-{ >-if ((u_long *) 0) >- return 0; >-if (sizeof (u_long)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_u_long=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_u_long=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_u_long" >&5 >-echo "${ECHO_T}$ac_cv_type_u_long" >&6 >-if test $ac_cv_type_u_long = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_U_LONG 1 >-_ACEOF >- >-hc_cv_have_u_long=yes >-else >- hc_cv_have_u_long=no >-fi >- >-echo "$as_me:$LINENO: checking for in_addr_t" >&5 >-echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6 >-if test "${ac_cv_type_in_addr_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- #if HAVE_NETINET_IN_H >- #include <netinet/in.h> >- #endif >- >- >-int >-main () >-{ >-if ((in_addr_t *) 0) >- return 0; >-if (sizeof (in_addr_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_in_addr_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_in_addr_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_in_addr_t" >&5 >-echo "${ECHO_T}$ac_cv_type_in_addr_t" >&6 >-if test $ac_cv_type_in_addr_t = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_IN_ADDR_T 1 >-_ACEOF >- >-hc_cv_have_in_addr_t=yes >-else >- hc_cv_have_in_addr_t=no >-fi >- >-echo "$as_me:$LINENO: checking for socklen_t" >&5 >-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 >-if test "${ac_cv_type_socklen_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <sys/types.h> >- #if HAVE_SYS_SOCKET_H >- #include <sys/socket.h> >- #endif >- >- >-int >-main () >-{ >-if ((socklen_t *) 0) >- return 0; >-if (sizeof (socklen_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_socklen_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_socklen_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 >-echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 >-if test $ac_cv_type_socklen_t = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_SOCKLEN_T 1 >-_ACEOF >- >-hc_cv_have_socklen_t=yes >-else >- hc_cv_have_socklen_t=no >-fi >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for libraries... >-############################################################################### >- >-# PROGRAMMING NOTE: we require libtool (or, optionally, dlltool (a less power- >-# ful (flexible) libtool-like tool for Windows platforms) in order to support >-# OPTION_DYNAMIC_LOAD. This is a relatively safe requirement since we provide >-# a version of libtool with Hercules (and build it as part of the preliminary >-# autoconf processing; see the 'Programs' section above). However, we need to >-# keep the below check for 'dlopen' anyway since we prefer that libtool use it >-# instead of its own equivalent (lt_dlopen) if it's available. >- >- >-echo "$as_me:$LINENO: checking for _pipe in -lmsvcrt" >&5 >-echo $ECHO_N "checking for _pipe in -lmsvcrt... $ECHO_C" >&6 >-if test "${ac_cv_lib_msvcrt__pipe__________+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lmsvcrt $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char _pipe (); >-int >-main () >-{ >-_pipe (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_msvcrt__pipe__________=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_msvcrt__pipe__________=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_msvcrt__pipe__________" >&5 >-echo "${ECHO_T}$ac_cv_lib_msvcrt__pipe__________" >&6 >-if test $ac_cv_lib_msvcrt__pipe__________ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBMSVCRT 1 >-_ACEOF >- >- LIBS="-lmsvcrt $LIBS" >- >-fi >- >- >-echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 >-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 >-if test "${ac_cv_lib_dl_dlopen_________+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-ldl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char dlopen (); >-int >-main () >-{ >-dlopen (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_dl_dlopen_________=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_dl_dlopen_________=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen_________" >&5 >-echo "${ECHO_T}$ac_cv_lib_dl_dlopen_________" >&6 >-if test $ac_cv_lib_dl_dlopen_________ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBDL 1 >-_ACEOF >- >- LIBS="-ldl $LIBS" >- >-fi >- >- >-echo "$as_me:$LINENO: checking for sqrt in -lm" >&5 >-echo $ECHO_N "checking for sqrt in -lm... $ECHO_C" >&6 >-if test "${ac_cv_lib_m_sqrt___________+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lm $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char sqrt (); >-int >-main () >-{ >-sqrt (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_m_sqrt___________=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_m_sqrt___________=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt___________" >&5 >-echo "${ECHO_T}$ac_cv_lib_m_sqrt___________" >&6 >-if test $ac_cv_lib_m_sqrt___________ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBM 1 >-_ACEOF >- >- LIBS="-lm $LIBS" >- >-fi >- >- >-echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 >-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 >-if test "${ac_cv_lib_socket_connect________+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lsocket $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char connect (); >-int >-main () >-{ >-connect (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_socket_connect________=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_socket_connect________=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect________" >&5 >-echo "${ECHO_T}$ac_cv_lib_socket_connect________" >&6 >-if test $ac_cv_lib_socket_connect________ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBSOCKET 1 >-_ACEOF >- >- LIBS="-lsocket $LIBS" >- >-fi >- >- >-echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 >-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 >-if test "${ac_cv_lib_nsl_gethostbyname__+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lnsl $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char gethostbyname (); >-int >-main () >-{ >-gethostbyname (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_nsl_gethostbyname__=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_nsl_gethostbyname__=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname__" >&5 >-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname__" >&6 >-if test $ac_cv_lib_nsl_gethostbyname__ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBNSL 1 >-_ACEOF >- >- LIBS="-lnsl $LIBS" >- >-fi >- >- >-echo "$as_me:$LINENO: checking for inet_aton in -lresolv" >&5 >-echo $ECHO_N "checking for inet_aton in -lresolv... $ECHO_C" >&6 >-if test "${ac_cv_lib_resolv_inet_aton______+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lresolv $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char inet_aton (); >-int >-main () >-{ >-inet_aton (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_resolv_inet_aton______=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_resolv_inet_aton______=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_inet_aton______" >&5 >-echo "${ECHO_T}$ac_cv_lib_resolv_inet_aton______" >&6 >-if test $ac_cv_lib_resolv_inet_aton______ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBRESOLV 1 >-_ACEOF >- >- LIBS="-lresolv $LIBS" >- >-fi >- >- >-echo "$as_me:$LINENO: checking for uncompress in -lz" >&5 >-echo $ECHO_N "checking for uncompress in -lz... $ECHO_C" >&6 >-if test "${ac_cv_lib_z_uncompress_____+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lz $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char uncompress (); >-int >-main () >-{ >-uncompress (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_z_uncompress_____=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_z_uncompress_____=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_z_uncompress_____" >&5 >-echo "${ECHO_T}$ac_cv_lib_z_uncompress_____" >&6 >-if test $ac_cv_lib_z_uncompress_____ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBZ 1 >-_ACEOF >- >- LIBS="-lz $LIBS" >- >-fi >- >-echo "$as_me:$LINENO: checking for BZ2_bzBuffToBuffDecompress in -lbz2" >&5 >-echo $ECHO_N "checking for BZ2_bzBuffToBuffDecompress in -lbz2... $ECHO_C" >&6 >-if test "${ac_cv_lib_bz2_BZ2_bzBuffToBuffDecompress+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-lbz2 $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char BZ2_bzBuffToBuffDecompress (); >-int >-main () >-{ >-BZ2_bzBuffToBuffDecompress (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_bz2_BZ2_bzBuffToBuffDecompress=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_bz2_BZ2_bzBuffToBuffDecompress=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_BZ2_bzBuffToBuffDecompress" >&5 >-echo "${ECHO_T}$ac_cv_lib_bz2_BZ2_bzBuffToBuffDecompress" >&6 >-if test $ac_cv_lib_bz2_BZ2_bzBuffToBuffDecompress = yes; then >- hc_cv_have_libbz2=yes >-else >- hc_cv_have_libbz2=no >-fi >- >- >-echo "$as_me:$LINENO: checking for iconv in -liconv" >&5 >-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6 >-if test "${ac_cv_lib_iconv_iconv__________+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_check_lib_save_LIBS=$LIBS >-LIBS="-liconv $LIBS" >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char iconv (); >-int >-main () >-{ >-iconv (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_lib_iconv_iconv__________=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_lib_iconv_iconv__________=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-LIBS=$ac_check_lib_save_LIBS >-fi >-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv__________" >&5 >-echo "${ECHO_T}$ac_cv_lib_iconv_iconv__________" >&6 >-if test $ac_cv_lib_iconv_iconv__________ = yes; then >- cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBICONV 1 >-_ACEOF >- >- LIBS="-liconv $LIBS" >- >-fi >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for library functions... >-############################################################################### >-# PROGRAMMING NOTE: AC_CHECK_LIB should be called first for the below >-# library function checks to ensure the library where the function is >-# defined gets added to the LIBS library search variable... >-############################################################################### >- >- >-for ac_func in iconv >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in memrchr >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in getopt_long >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >- >- >- >-for ac_func in sqrtl ldexpl fabsl fmodl frexpl >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >- >- >-for ac_func in ldexpf frexpf fabsf rint >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >-for ac_func in strlcpy strlcat >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in strerror_r >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in strsignal >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_strsignal=yes >-else >- hc_cv_have_strsignal=no >-fi >-done >- >- >-for ac_func in sys_siglist >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in InitializeCriticalSectionAndSpinCount >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >- >-for ac_func in sleep usleep nanosleep >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in sched_yield >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in strtok_r >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in pipe >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in gettimeofday >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in getpgrp >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >-for ac_func in scandir alphasort >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >-for ac_func in getlogin getlogin_r >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in realpath >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >- >-for ac_func in fdatasync fsync ftruncate >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in inet_aton >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >-for ac_func in fork socketpair >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >-for ac_func in sysconf >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- >-fi >-done >- >- >- >-for ac_func in vsscanf >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_vsscanf=yes >-else >- hc_cv_have_vsscanf=no >- >-fi >-done >- >- >- >- >-for ac_func in setresuid getresuid >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_getset_uid=yes >-else >- hc_cv_have_getset_uid=no; break >- >-fi >-done >- >- >-if test "$hc_cv_have_getset_uid" != "yes"; then >- >- >- >-for ac_func in setreuid geteuid getuid >-do >-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` >-echo "$as_me:$LINENO: checking for $ac_func" >&5 >-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 >-if eval "test \"\${$as_ac_var+set}\" = set"; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. >- For example, HP-UX 11i <limits.h> declares gettimeofday. */ >-#define $ac_func innocuous_$ac_func >- >-/* System header to define __stub macros and hopefully few prototypes, >- which can conflict with char $ac_func (); below. >- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >- <limits.h> exists even on freestanding compilers. */ >- >-#ifdef __STDC__ >-# include <limits.h> >-#else >-# include <assert.h> >-#endif >- >-#undef $ac_func >- >-/* Override any gcc2 internal prototype to avoid an error. */ >-#ifdef __cplusplus >-extern "C" >-{ >-#endif >-/* We use char because int might match the return type of a gcc2 >- builtin and then its argument prototype would still apply. */ >-char $ac_func (); >-/* The GNU C library defines this for functions which it implements >- to always fail with ENOSYS. Some functions are actually named >- something starting with __ and the normal name is an alias. */ >-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) >-choke me >-#else >-char (*f) () = $ac_func; >-#endif >-#ifdef __cplusplus >-} >-#endif >- >-int >-main () >-{ >-return f != $ac_func; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- eval "$as_ac_var=yes" >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-eval "$as_ac_var=no" >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 >-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 >-if test `eval echo '${'$as_ac_var'}'` = yes; then >- cat >>confdefs.h <<_ACEOF >-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 >-_ACEOF >- hc_cv_have_getset_uid=yes >-else >- hc_cv_have_getset_uid=no; break >- >-fi >-done >- >-fi >- >- >-# FIXME: Disabled because some builtin ffs seem to be causing a problem. >-# (gcc 3.4 barfs on certain 'march=' settings?) >-#AC_CHECK_FUNCS( ffs ) >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for structures and structure members... >-############################################################################### >- >-echo "$as_me:$LINENO: checking for struct sockaddr_in.sin_len" >&5 >-echo $ECHO_N "checking for struct sockaddr_in.sin_len... $ECHO_C" >&6 >-if test "${ac_cv_member_struct_sockaddr_in_sin_len+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-#include <sys/types.h> >-#if HAVE_SYS_SOCKET_H >-#include <sys/socket.h> >-#endif >-#if HAVE_NETINET_IN_H >-#include <netinet/in.h> >-#endif >- >- >-int >-main () >-{ >-static struct sockaddr_in ac_aggr; >-if (ac_aggr.sin_len) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_sockaddr_in_sin_len=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-#include <sys/types.h> >-#if HAVE_SYS_SOCKET_H >-#include <sys/socket.h> >-#endif >-#if HAVE_NETINET_IN_H >-#include <netinet/in.h> >-#endif >- >- >-int >-main () >-{ >-static struct sockaddr_in ac_aggr; >-if (sizeof ac_aggr.sin_len) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_sockaddr_in_sin_len=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_member_struct_sockaddr_in_sin_len=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_in_sin_len" >&5 >-echo "${ECHO_T}$ac_cv_member_struct_sockaddr_in_sin_len" >&6 >-if test $ac_cv_member_struct_sockaddr_in_sin_len = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1 >-_ACEOF >- >-hc_cv_have_sockaddr_in_sin_len=yes >-else >- hc_cv_have_sockaddr_in_sin_len=no >-fi >- >- >-echo "$as_me:$LINENO: checking for struct in_addr.s_addr" >&5 >-echo $ECHO_N "checking for struct in_addr.s_addr... $ECHO_C" >&6 >-if test "${ac_cv_member_struct_in_addr_s_addr+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-#include <sys/types.h> >-#if HAVE_SYS_SOCKET_H >-#include <sys/socket.h> >-#endif >-#if HAVE_NETINET_IN_H >-#include <netinet/in.h> >-#endif >- >- >-int >-main () >-{ >-static struct in_addr ac_aggr; >-if (ac_aggr.s_addr) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_in_addr_s_addr=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-#include <sys/types.h> >-#if HAVE_SYS_SOCKET_H >-#include <sys/socket.h> >-#endif >-#if HAVE_NETINET_IN_H >-#include <netinet/in.h> >-#endif >- >- >-int >-main () >-{ >-static struct in_addr ac_aggr; >-if (sizeof ac_aggr.s_addr) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_in_addr_s_addr=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_member_struct_in_addr_s_addr=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_member_struct_in_addr_s_addr" >&5 >-echo "${ECHO_T}$ac_cv_member_struct_in_addr_s_addr" >&6 >-if test $ac_cv_member_struct_in_addr_s_addr = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_IN_ADDR_S_ADDR 1 >-_ACEOF >- >-hc_cv_have_in_addr_s_addr=yes >-else >- hc_cv_have_in_addr_s_addr=no >-fi >- >- >-echo "$as_me:$LINENO: checking for struct sigaction.sa_sigaction" >&5 >-echo $ECHO_N "checking for struct sigaction.sa_sigaction... $ECHO_C" >&6 >-if test "${ac_cv_member_struct_sigaction_sa_sigaction+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <signal.h> >- >-int >-main () >-{ >-static struct sigaction ac_aggr; >-if (ac_aggr.sa_sigaction) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_sigaction_sa_sigaction=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <signal.h> >- >-int >-main () >-{ >-static struct sigaction ac_aggr; >-if (sizeof ac_aggr.sa_sigaction) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_sigaction_sa_sigaction=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_member_struct_sigaction_sa_sigaction=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_member_struct_sigaction_sa_sigaction" >&5 >-echo "${ECHO_T}$ac_cv_member_struct_sigaction_sa_sigaction" >&6 >-if test $ac_cv_member_struct_sigaction_sa_sigaction = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_SIGACTION_SA_SIGACTION 1 >-_ACEOF >- >-hc_cv_have_sa_sigaction=yes >-else >- hc_cv_have_sa_sigaction=no >-fi >- >- >-echo "$as_me:$LINENO: checking for struct timespec.tv_nsec" >&5 >-echo $ECHO_N "checking for struct timespec.tv_nsec... $ECHO_C" >&6 >-if test "${ac_cv_member_struct_timespec_tv_nsec+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >- >- >-int >-main () >-{ >-static struct timespec ac_aggr; >-if (ac_aggr.tv_nsec) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_timespec_tv_nsec=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >- >- >-int >-main () >-{ >-static struct timespec ac_aggr; >-if (sizeof ac_aggr.tv_nsec) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_timespec_tv_nsec=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_member_struct_timespec_tv_nsec=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_member_struct_timespec_tv_nsec" >&5 >-echo "${ECHO_T}$ac_cv_member_struct_timespec_tv_nsec" >&6 >-if test $ac_cv_member_struct_timespec_tv_nsec = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_TIMESPEC_TV_NSEC 1 >-_ACEOF >- >- >- hc_cv_timespec_in_sys_types_h=yes >- hc_cv_timespec_in_time_h=no >- >-else >- >- echo "$as_me:$LINENO: checking for struct timespec.tv_nsec" >&5 >-echo $ECHO_N "checking for struct timespec.tv_nsec... $ECHO_C" >&6 >-if test "${ac_cv_member_struct_timespec_tv_nsec+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <time.h> >- >- >-int >-main () >-{ >-static struct timespec ac_aggr; >-if (ac_aggr.tv_nsec) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_timespec_tv_nsec=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <time.h> >- >- >-int >-main () >-{ >-static struct timespec ac_aggr; >-if (sizeof ac_aggr.tv_nsec) >-return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_member_struct_timespec_tv_nsec=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_member_struct_timespec_tv_nsec=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_member_struct_timespec_tv_nsec" >&5 >-echo "${ECHO_T}$ac_cv_member_struct_timespec_tv_nsec" >&6 >-if test $ac_cv_member_struct_timespec_tv_nsec = yes; then >- >-cat >>confdefs.h <<_ACEOF >-#define HAVE_STRUCT_TIMESPEC_TV_NSEC 1 >-_ACEOF >- >- >- hc_cv_timespec_in_sys_types_h=no >- hc_cv_timespec_in_time_h=yes >- >-else >- >- hc_cv_timespec_in_sys_types_h=no >- hc_cv_timespec_in_time_h=no >- >-fi >- >- >-fi >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for compiler characteristics... >-############################################################################### >- >-echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 >-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 >-if test "${ac_cv_c_bigendian+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- # See if sys/param.h defines the BYTE_ORDER macro. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >-#include <sys/param.h> >- >-int >-main () >-{ >-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN >- bogus endian macros >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- # It does; now see whether it defined to BIG_ENDIAN or not. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >-#include <sys/param.h> >- >-int >-main () >-{ >-#if BYTE_ORDER != BIG_ENDIAN >- not big endian >-#endif >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_c_bigendian=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_c_bigendian=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-# It does not; compile a test program. >-if test "$cross_compiling" = yes; then >- # try to guess the endianness by grepping values into an object file >- ac_cv_c_bigendian=unknown >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; >-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; >-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } >-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; >-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; >-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } >-int >-main () >-{ >- _ascii (); _ebcdic (); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then >- ac_cv_c_bigendian=yes >-fi >-if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then >- if test "$ac_cv_c_bigendian" = unknown; then >- ac_cv_c_bigendian=no >- else >- # finding both strings is unlikely to happen, but who knows? >- ac_cv_c_bigendian=unknown >- fi >-fi >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-int >-main () >-{ >- /* Are we little or big endian? From Harbison&Steele. */ >- union >- { >- long l; >- char c[sizeof (long)]; >- } u; >- u.l = 1; >- exit (u.c[sizeof (long) - 1] == 1); >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_c_bigendian=no >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-ac_cv_c_bigendian=yes >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 >-echo "${ECHO_T}$ac_cv_c_bigendian" >&6 >-case $ac_cv_c_bigendian in >- yes) >- >-cat >>confdefs.h <<\_ACEOF >-#define WORDS_BIGENDIAN 1 >-_ACEOF >- ;; >- no) >- ;; >- *) >- { { echo "$as_me:$LINENO: error: unknown endianness >-presetting ac_cv_c_bigendian=no (or yes) will help" >&5 >-echo "$as_me: error: unknown endianness >-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >- >- >-# PROGRAMMING NOTE: Okay, this is stupid. If there are any trailing spaces >-# following the type we're checking the size of, then they're converted to >-# underscores in the 'SIZEOF_XXXX' that gets #defined! For example, doing a >-# AC_CHECK_SIZEOF( int ) yields: #define SIZEOF_INT____ 4 !!!!!!!!!!!!! >-# So... the below AC_CHECK_SIZEOF macros must NOT have any spaces in them!! >- >-echo "$as_me:$LINENO: checking for int" >&5 >-echo $ECHO_N "checking for int... $ECHO_C" >&6 >-if test "${ac_cv_type_int+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((int *) 0) >- return 0; >-if (sizeof (int)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_int=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_int=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 >-echo "${ECHO_T}$ac_cv_type_int" >&6 >- >-echo "$as_me:$LINENO: checking size of int" >&5 >-echo $ECHO_N "checking size of int... $ECHO_C" >&6 >-if test "${ac_cv_sizeof_int+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$ac_cv_type_int" = yes; then >- # The cast to unsigned long works around a bug in the HP C Compiler >- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects >- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. >- # This bug is HP SR number 8606223364. >- if test "$cross_compiling" = yes; then >- # Depending upon the size, compute the lo and hi bounds. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=0 ac_mid=0 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr $ac_mid + 1` >- if test $ac_lo -le $ac_mid; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=-1 ac_mid=-1 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_hi=`expr '(' $ac_mid ')' - 1` >- if test $ac_mid -le $ac_hi; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo= ac_hi= >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-# Binary search between lo and hi bounds. >-while test "x$ac_lo" != "x$ac_hi"; do >- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr '(' $ac_mid ')' + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-case $ac_lo in >-?*) ac_cv_sizeof_int=$ac_lo;; >-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (int), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >-else >- if test "$cross_compiling" = yes; then >- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-long longval () { return (long) (sizeof (int)); } >-unsigned long ulongval () { return (long) (sizeof (int)); } >-#include <stdio.h> >-#include <stdlib.h> >-int >-main () >-{ >- >- FILE *f = fopen ("conftest.val", "w"); >- if (! f) >- exit (1); >- if (((long) (sizeof (int))) < 0) >- { >- long i = longval (); >- if (i != ((long) (sizeof (int)))) >- exit (1); >- fprintf (f, "%ld\n", i); >- } >- else >- { >- unsigned long i = ulongval (); >- if (i != ((long) (sizeof (int)))) >- exit (1); >- fprintf (f, "%lu\n", i); >- } >- exit (ferror (f) || fclose (f) != 0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sizeof_int=`cat conftest.val` >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (int), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.val >-else >- ac_cv_sizeof_int=0 >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 >-echo "${ECHO_T}$ac_cv_sizeof_int" >&6 >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_INT $ac_cv_sizeof_int >-_ACEOF >- >- >-echo "$as_me:$LINENO: checking for long" >&5 >-echo $ECHO_N "checking for long... $ECHO_C" >&6 >-if test "${ac_cv_type_long+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((long *) 0) >- return 0; >-if (sizeof (long)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_long=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_long=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 >-echo "${ECHO_T}$ac_cv_type_long" >&6 >- >-echo "$as_me:$LINENO: checking size of long" >&5 >-echo $ECHO_N "checking size of long... $ECHO_C" >&6 >-if test "${ac_cv_sizeof_long+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$ac_cv_type_long" = yes; then >- # The cast to unsigned long works around a bug in the HP C Compiler >- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects >- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. >- # This bug is HP SR number 8606223364. >- if test "$cross_compiling" = yes; then >- # Depending upon the size, compute the lo and hi bounds. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=0 ac_mid=0 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr $ac_mid + 1` >- if test $ac_lo -le $ac_mid; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=-1 ac_mid=-1 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_hi=`expr '(' $ac_mid ')' - 1` >- if test $ac_mid -le $ac_hi; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo= ac_hi= >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-# Binary search between lo and hi bounds. >-while test "x$ac_lo" != "x$ac_hi"; do >- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr '(' $ac_mid ')' + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-case $ac_lo in >-?*) ac_cv_sizeof_long=$ac_lo;; >-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (long), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >-else >- if test "$cross_compiling" = yes; then >- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-long longval () { return (long) (sizeof (long)); } >-unsigned long ulongval () { return (long) (sizeof (long)); } >-#include <stdio.h> >-#include <stdlib.h> >-int >-main () >-{ >- >- FILE *f = fopen ("conftest.val", "w"); >- if (! f) >- exit (1); >- if (((long) (sizeof (long))) < 0) >- { >- long i = longval (); >- if (i != ((long) (sizeof (long)))) >- exit (1); >- fprintf (f, "%ld\n", i); >- } >- else >- { >- unsigned long i = ulongval (); >- if (i != ((long) (sizeof (long)))) >- exit (1); >- fprintf (f, "%lu\n", i); >- } >- exit (ferror (f) || fclose (f) != 0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sizeof_long=`cat conftest.val` >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (long), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.val >-else >- ac_cv_sizeof_long=0 >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 >-echo "${ECHO_T}$ac_cv_sizeof_long" >&6 >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_LONG $ac_cv_sizeof_long >-_ACEOF >- >- >-echo "$as_me:$LINENO: checking for size_t" >&5 >-echo $ECHO_N "checking for size_t... $ECHO_C" >&6 >-if test "${ac_cv_type_size_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((size_t *) 0) >- return 0; >-if (sizeof (size_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_size_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_size_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 >-echo "${ECHO_T}$ac_cv_type_size_t" >&6 >- >-echo "$as_me:$LINENO: checking size of size_t" >&5 >-echo $ECHO_N "checking size of size_t... $ECHO_C" >&6 >-if test "${ac_cv_sizeof_size_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$ac_cv_type_size_t" = yes; then >- # The cast to unsigned long works around a bug in the HP C Compiler >- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects >- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. >- # This bug is HP SR number 8606223364. >- if test "$cross_compiling" = yes; then >- # Depending upon the size, compute the lo and hi bounds. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=0 ac_mid=0 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr $ac_mid + 1` >- if test $ac_lo -le $ac_mid; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) < 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=-1 ac_mid=-1 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_hi=`expr '(' $ac_mid ')' - 1` >- if test $ac_mid -le $ac_hi; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo= ac_hi= >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-# Binary search between lo and hi bounds. >-while test "x$ac_lo" != "x$ac_hi"; do >- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr '(' $ac_mid ')' + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-case $ac_lo in >-?*) ac_cv_sizeof_size_t=$ac_lo;; >-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (size_t), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >-else >- if test "$cross_compiling" = yes; then >- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-long longval () { return (long) (sizeof (size_t)); } >-unsigned long ulongval () { return (long) (sizeof (size_t)); } >-#include <stdio.h> >-#include <stdlib.h> >-int >-main () >-{ >- >- FILE *f = fopen ("conftest.val", "w"); >- if (! f) >- exit (1); >- if (((long) (sizeof (size_t))) < 0) >- { >- long i = longval (); >- if (i != ((long) (sizeof (size_t)))) >- exit (1); >- fprintf (f, "%ld\n", i); >- } >- else >- { >- unsigned long i = ulongval (); >- if (i != ((long) (sizeof (size_t)))) >- exit (1); >- fprintf (f, "%lu\n", i); >- } >- exit (ferror (f) || fclose (f) != 0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sizeof_size_t=`cat conftest.val` >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (size_t), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.val >-else >- ac_cv_sizeof_size_t=0 >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 >-echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6 >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t >-_ACEOF >- >- >-echo "$as_me:$LINENO: checking for int *" >&5 >-echo $ECHO_N "checking for int *... $ECHO_C" >&6 >-if test "${ac_cv_type_int_p+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((int * *) 0) >- return 0; >-if (sizeof (int *)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_int_p=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_int_p=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_int_p" >&5 >-echo "${ECHO_T}$ac_cv_type_int_p" >&6 >- >-echo "$as_me:$LINENO: checking size of int *" >&5 >-echo $ECHO_N "checking size of int *... $ECHO_C" >&6 >-if test "${ac_cv_sizeof_int_p+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$ac_cv_type_int_p" = yes; then >- # The cast to unsigned long works around a bug in the HP C Compiler >- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects >- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. >- # This bug is HP SR number 8606223364. >- if test "$cross_compiling" = yes; then >- # Depending upon the size, compute the lo and hi bounds. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int *))) >= 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=0 ac_mid=0 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int *))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr $ac_mid + 1` >- if test $ac_lo -le $ac_mid; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int *))) < 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=-1 ac_mid=-1 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int *))) >= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_hi=`expr '(' $ac_mid ')' - 1` >- if test $ac_mid -le $ac_hi; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo= ac_hi= >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-# Binary search between lo and hi bounds. >-while test "x$ac_lo" != "x$ac_hi"; do >- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (int *))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr '(' $ac_mid ')' + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-case $ac_lo in >-?*) ac_cv_sizeof_int_p=$ac_lo;; >-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int *), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (int *), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >-else >- if test "$cross_compiling" = yes; then >- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-long longval () { return (long) (sizeof (int *)); } >-unsigned long ulongval () { return (long) (sizeof (int *)); } >-#include <stdio.h> >-#include <stdlib.h> >-int >-main () >-{ >- >- FILE *f = fopen ("conftest.val", "w"); >- if (! f) >- exit (1); >- if (((long) (sizeof (int *))) < 0) >- { >- long i = longval (); >- if (i != ((long) (sizeof (int *)))) >- exit (1); >- fprintf (f, "%ld\n", i); >- } >- else >- { >- unsigned long i = ulongval (); >- if (i != ((long) (sizeof (int *)))) >- exit (1); >- fprintf (f, "%lu\n", i); >- } >- exit (ferror (f) || fclose (f) != 0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sizeof_int_p=`cat conftest.val` >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int *), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (int *), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.val >-else >- ac_cv_sizeof_int_p=0 >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int_p" >&5 >-echo "${ECHO_T}$ac_cv_sizeof_int_p" >&6 >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_INT_P $ac_cv_sizeof_int_p >-_ACEOF >- >- >-echo "$as_me:$LINENO: checking for off_t" >&5 >-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 >-if test "${ac_cv_type_off_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((off_t *) 0) >- return 0; >-if (sizeof (off_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_off_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_off_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 >-echo "${ECHO_T}$ac_cv_type_off_t" >&6 >- >-echo "$as_me:$LINENO: checking size of off_t" >&5 >-echo $ECHO_N "checking size of off_t... $ECHO_C" >&6 >-if test "${ac_cv_sizeof_off_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$ac_cv_type_off_t" = yes; then >- # The cast to unsigned long works around a bug in the HP C Compiler >- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects >- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. >- # This bug is HP SR number 8606223364. >- if test "$cross_compiling" = yes; then >- # Depending upon the size, compute the lo and hi bounds. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=0 ac_mid=0 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr $ac_mid + 1` >- if test $ac_lo -le $ac_mid; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) < 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=-1 ac_mid=-1 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_hi=`expr '(' $ac_mid ')' - 1` >- if test $ac_mid -le $ac_hi; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo= ac_hi= >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-# Binary search between lo and hi bounds. >-while test "x$ac_lo" != "x$ac_hi"; do >- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr '(' $ac_mid ')' + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-case $ac_lo in >-?*) ac_cv_sizeof_off_t=$ac_lo;; >-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (off_t), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >-else >- if test "$cross_compiling" = yes; then >- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-long longval () { return (long) (sizeof (off_t)); } >-unsigned long ulongval () { return (long) (sizeof (off_t)); } >-#include <stdio.h> >-#include <stdlib.h> >-int >-main () >-{ >- >- FILE *f = fopen ("conftest.val", "w"); >- if (! f) >- exit (1); >- if (((long) (sizeof (off_t))) < 0) >- { >- long i = longval (); >- if (i != ((long) (sizeof (off_t)))) >- exit (1); >- fprintf (f, "%ld\n", i); >- } >- else >- { >- unsigned long i = ulongval (); >- if (i != ((long) (sizeof (off_t)))) >- exit (1); >- fprintf (f, "%lu\n", i); >- } >- exit (ferror (f) || fclose (f) != 0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sizeof_off_t=`cat conftest.val` >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (off_t), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.val >-else >- ac_cv_sizeof_off_t=0 >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 >-echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6 >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t >-_ACEOF >- >- >- >-#----------------------------------# >-# Structure alignment/size test # >-#----------------------------------# >- >-{ echo "$as_me:$LINENO: begin check: whether byte structs are aligned/rounded by default... " >&5 >-echo "$as_me: begin check: whether byte structs are aligned/rounded by default... " >&6;} >- >-cat > conftest.h << __EOF >-#include <stdio.h> >-struct bytestruct >-{ >- unsigned char a; >-}; >-__EOF >- >-echo "$as_me:$LINENO: checking for struct bytestruct" >&5 >-echo $ECHO_N "checking for struct bytestruct... $ECHO_C" >&6 >-if test "${ac_cv_type_struct_bytestruct+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-int >-main () >-{ >-if ((struct bytestruct *) 0) >- return 0; >-if (sizeof (struct bytestruct)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_struct_bytestruct=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_struct_bytestruct=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_struct_bytestruct" >&5 >-echo "${ECHO_T}$ac_cv_type_struct_bytestruct" >&6 >- >-echo "$as_me:$LINENO: checking size of struct bytestruct" >&5 >-echo $ECHO_N "checking size of struct bytestruct... $ECHO_C" >&6 >-if test "${ac_cv_sizeof_struct_bytestruct+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- if test "$ac_cv_type_struct_bytestruct" = yes; then >- # The cast to unsigned long works around a bug in the HP C Compiler >- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects >- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. >- # This bug is HP SR number 8606223364. >- if test "$cross_compiling" = yes; then >- # Depending upon the size, compute the lo and hi bounds. >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (struct bytestruct))) >= 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=0 ac_mid=0 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (struct bytestruct))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr $ac_mid + 1` >- if test $ac_lo -le $ac_mid; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (struct bytestruct))) < 0)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=-1 ac_mid=-1 >- while :; do >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (struct bytestruct))) >= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_lo=$ac_mid; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_hi=`expr '(' $ac_mid ')' - 1` >- if test $ac_mid -le $ac_hi; then >- ac_lo= ac_hi= >- break >- fi >- ac_mid=`expr 2 '*' $ac_mid` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- done >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo= ac_hi= >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-# Binary search between lo and hi bounds. >-while test "x$ac_lo" != "x$ac_hi"; do >- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-int >-main () >-{ >-static int test_array [1 - 2 * !(((long) (sizeof (struct bytestruct))) <= $ac_mid)]; >-test_array [0] = 0 >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_hi=$ac_mid >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_lo=`expr '(' $ac_mid ')' + 1` >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-done >-case $ac_lo in >-?*) ac_cv_sizeof_struct_bytestruct=$ac_lo;; >-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct bytestruct), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (struct bytestruct), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } ;; >-esac >-else >- if test "$cross_compiling" = yes; then >- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run test program while cross compiling >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include "conftest.h" >- >-long longval () { return (long) (sizeof (struct bytestruct)); } >-unsigned long ulongval () { return (long) (sizeof (struct bytestruct)); } >-#include <stdio.h> >-#include <stdlib.h> >-int >-main () >-{ >- >- FILE *f = fopen ("conftest.val", "w"); >- if (! f) >- exit (1); >- if (((long) (sizeof (struct bytestruct))) < 0) >- { >- long i = longval (); >- if (i != ((long) (sizeof (struct bytestruct)))) >- exit (1); >- fprintf (f, "%ld\n", i); >- } >- else >- { >- unsigned long i = ulongval (); >- if (i != ((long) (sizeof (struct bytestruct)))) >- exit (1); >- fprintf (f, "%lu\n", i); >- } >- exit (ferror (f) || fclose (f) != 0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sizeof_struct_bytestruct=`cat conftest.val` >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (struct bytestruct), 77 >-See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute sizeof (struct bytestruct), 77 >-See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >-fi >-rm -f conftest.val >-else >- ac_cv_sizeof_struct_bytestruct=0 >-fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sizeof_struct_bytestruct" >&5 >-echo "${ECHO_T}$ac_cv_sizeof_struct_bytestruct" >&6 >-cat >>confdefs.h <<_ACEOF >-#define SIZEOF_STRUCT_BYTESTRUCT $ac_cv_sizeof_struct_bytestruct >-_ACEOF >- >- >- >-if test "$ac_cv_sizeof_struct_bytestruct" = "1"; then >- >- hc_cv_byte_structs_aligned_and_rounded_by_default=no >- hc_cv_byte_structs_always_aligned_and_rounded=no >- >-else >- >- # The sizeof our test structure is not '1'. >- # The compiler is rounding the size of the >- # structure upward to some predefined value. >- >- hc_cv_byte_structs_aligned_and_rounded_by_default=yes >- >- # If there's no way to request the compiler >- # to not do that, then we can't build Herc. >- >- case "$host_cpu-$GCC" in >- >- arm*-yes|xscale*-yes|sh*-yes|pxa*-yes) >- >- hc_cv_byte_structs_always_aligned_and_rounded=no >- ;; >- >- *) >- hc_cv_byte_structs_always_aligned_and_rounded=yes >- ;; >- esac >-fi >- >-{ echo "$as_me:$LINENO: results: byte structs are aligned/rounded by default... ${hc_cv_byte_structs_aligned_and_rounded_by_default} " >&5 >-echo "$as_me: results: byte structs are aligned/rounded by default... ${hc_cv_byte_structs_aligned_and_rounded_by_default} " >&6;} >- >-if test "$hc_cv_byte_structs_always_aligned_and_rounded" = "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: Size of structures are aligned/rounded and we don't know how to tell the compiler otherwise " >&5 >-echo "${ECHO_T}ERROR: Size of structures are aligned/rounded and we don't know how to tell the compiler otherwise " >&6 >- hc_error=yes >-fi >- >-#------------------------------# >-# Check if this is GCC 2.96 # >-#------------------------------# >- >-echo "$as_me:$LINENO: checking if this is the broken 2.96 version of GCC" >&5 >-echo $ECHO_N "checking if this is the broken 2.96 version of GCC... $ECHO_C" >&6 >-if test "${hc_cv_is_gcc_2_96+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- if test "$GCC" = "yes"; then >- >- cat >conftest.$ac_ext <<_ACEOF >- >- #if __GNUC__ == 2 && __GNUC_MINOR__ == 96 >- yes; >- #else >- int no; >- #endif >- >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_is_gcc_2_96=no >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-hc_cv_is_gcc_2_96=yes >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- >- else >- hc_cv_is_gcc_2_96=no >- fi >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_is_gcc_2_96" >&5 >-echo "${ECHO_T}$hc_cv_is_gcc_2_96" >&6 >- >-#----------------------------------------------# >-# Check C99 if flexible arrays are supported # >-#----------------------------------------------# >-# The logic to test whether C99 flexible # >-# arrays are supported is defined in the # >-# 'HC_C99_FLEXIBLE_ARRAYS' macro in the # >-# 'hercules.m4' file in the 'autoconf' sub- # >-# directory, and issues the AC_DEFINE for # >-# 'C99_FLEXIBLE_ARRAYS' if it's supported # >-# and also sets '$hc_cv_c99_flexible_array'. # >-#----------------------------------------------# >- >- >- echo "$as_me:$LINENO: checking C99 struct flexible arrays support" >&5 >-echo $ECHO_N "checking C99 struct flexible arrays support... $ECHO_C" >&6 >-if test "${hc_cv_c99_flexible_array+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- # Initialize to unknown >- hc_cv_c99_flexible_array=no >- >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- #include <stdlib.h> >- >- typedef struct >- { >- int foo; >- char bar[]; >- } >- FOOBAR; >- >-int >-main () >-{ >- >- int main(int argc, char *argv[]) >- { >- FOOBAR* p = calloc( 1, sizeof(FOOBAR) + 16 ); >- return 0; >- } >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_c99_flexible_array=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-hc_cv_c99_flexible_array=no >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_c99_flexible_array" >&5 >-echo "${ECHO_T}$hc_cv_c99_flexible_array" >&6 >- >- if test "$hc_cv_c99_flexible_array" = "yes"; then >- >- cat >>confdefs.h <<\_ACEOF >-#define C99_FLEXIBLE_ARRAYS 1 >-_ACEOF >- >- fi >- >- >-#--------------------------------------------------------# >-# Check if GCC supports '__attribute__ ((regparm(n)))' # >-#--------------------------------------------------------# >- >-# Note: even though at the moment GCC only supports regparm >-# on i386 or greater machines, that could change at any time >-# in the future so we don't bother checking for it. >- >-if test "$GCC" = "yes"; then >- >- echo "$as_me:$LINENO: checking whether '__attribute__ ((regparm(n)))' is supported" >&5 >-echo $ECHO_N "checking whether '__attribute__ ((regparm(n)))' is supported... $ECHO_C" >&6 >-if test "${hc_cv_regparm_attr_supported+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- hc_temp="$CFLAGS" >- CFLAGS="-Wall -Werror" >- >- cat >conftest.$ac_ext <<_ACEOF >- >- void conftest() __attribute__ ((regparm(1))); >- >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_regparm_attr_supported=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-hc_cv_regparm_attr_supported=no >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- >- CFLAGS="$hc_temp" >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_regparm_attr_supported" >&5 >-echo "${ECHO_T}$hc_cv_regparm_attr_supported" >&6 >-else >- hc_cv_regparm_attr_supported=no >-fi >- >-#---------------------------------------------------# >-# Test for GCC '__attribute__ ((regparm(3)))' bug # >-#---------------------------------------------------# >- >-if test "$GCC" = "yes" && >- test "$hc_cv_regparm_attr_supported" = "yes"; then >- >- echo "$as_me:$LINENO: checking whether '__attribute__ ((regparm(3)))' is broken" >&5 >-echo $ECHO_N "checking whether '__attribute__ ((regparm(3)))' is broken... $ECHO_C" >&6 >-if test "${hc_cv_regparm_attr_broke+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- hc_temp="$CFLAGS" >- CFLAGS="-O3 -fomit-frame-pointer" >- >- if test "$cross_compiling" = yes; then >- hc_cv_regparm_attr_broke=yes >- >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- /* >- Fish: Test for reparms bug caused by alloca bug# 8750 >- Ref: <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8750> >- */ >- struct REGS >- { >- int a, b, c, d; >- char e[50000]; >- }; >- typedef struct REGS REGS; >- >- #define ATTR_REGPARM __attribute__ (( regparm(3) )) >- >- int func1 ( int a, int b, int c, REGS *regs ) ATTR_REGPARM; >- int func2 ( int a, int b, int c, REGS *regs ) ATTR_REGPARM; >- >- REGS global_regs; >- >- int main() >- { >- return func1( 1, 2, 3, &global_regs ); >- } >- >- int ATTR_REGPARM func1 ( int a, int b, int c, REGS *regs ) >- { >- REGS stack_regs; >- regs=regs; /* (quiet compiler warning) */ >- if ( func2( a, b, c, &stack_regs ) == 0 ) return 0; /* pass */ >- return 1; /* fail */ >- } >- >- int ATTR_REGPARM func2 ( int a, int b, int c, REGS *regs ) >- { >- regs=regs; /* (quiet compiler warning) */ >- if ( 1==a && 2==b && 3==c ) return 0; /* pass */ >- return 1; /* fail */ >- } >- >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_regparm_attr_broke=no >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-hc_cv_regparm_attr_broke=yes >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >- >- CFLAGS="$hc_temp" >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_regparm_attr_broke" >&5 >-echo "${ECHO_T}$hc_cv_regparm_attr_broke" >&6 >-else >- hc_cv_regparm_attr_broke=no >-fi >- >-#------------------------------------------------------# >-# Test for GCC builtin alloca bug# 8750 # >-# <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8750> # >-#------------------------------------------------------# >- >-if test "$GCC" = "yes"; then >- >- echo "$as_me:$LINENO: checking whether '__builtin_alloca' is broken" >&5 >-echo $ECHO_N "checking whether '__builtin_alloca' is broken... $ECHO_C" >&6 >-if test "${hc_cv_builtin_alloca_broke+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- hc_temp=$CFLAGS >- CFLAGS="-g -O2 -fomit-frame-pointer" >- >- if test "$cross_compiling" = yes; then >- hc_cv_builtin_alloca_broke=yes >- >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >- /* >- Fish: Test for gcc builtin alloca bug# 8750 >- <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8750> >- >- Required(?!) (not sure) compiler options: >- >- -g -O2 -fomit-frame-pointer >- */ >- >- int foo () >- { >- char a[50000+16]; >- memset(a,0xCD,50000); >- a[50000]=0; >- return strlen(a); >- } >- >- int main() >- { >- return ( foo() != 50000 ); >- } >- >-_ACEOF >-rm -f conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_builtin_alloca_broke=no >-else >- echo "$as_me: program exited with status $ac_status" >&5 >-echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-( exit $ac_status ) >-hc_cv_builtin_alloca_broke=yes >-fi >-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >-fi >- >- CFLAGS=$hc_temp >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_builtin_alloca_broke" >&5 >-echo "${ECHO_T}$hc_cv_builtin_alloca_broke" >&6 >-else >- hc_cv_builtin_alloca_broke=no >-fi >- >-#------------------------------------------------------------# >-# Check for OS X gcc preprocessor macro argument count bug # >-#------------------------------------------------------------# >- >-if test "$GCC" = "yes"; then >- >- echo "$as_me:$LINENO: checking whether preprocessor macro argument counting broken" >&5 >-echo $ECHO_N "checking whether preprocessor macro argument counting broken... $ECHO_C" >&6 >-if test "${hc_cv_pp_macro_arg_counting_broke+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- hc_temp="$CFLAGS" >- CFLAGS="-Wall -Werror" >- >- cat >conftest.$ac_ext <<_ACEOF >- >- #include <stdio.h> >- #define MACRO(_x,_args...) printf(_x, ## _args) >- int main( int argc, char **argv, char **arge ) >- { >- MACRO( "bare printf\n" ); >- return 0; >- } >- >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_pp_macro_arg_counting_broke=no >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-hc_cv_pp_macro_arg_counting_broke=yes >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- >- CFLAGS="$hc_temp" >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_pp_macro_arg_counting_broke" >&5 >-echo "${ECHO_T}$hc_cv_pp_macro_arg_counting_broke" >&6 >-else >- hc_cv_pp_macro_arg_counting_broke=no >-fi >- >-#------------------------------------------------------------# >-# Check if traditional preprocessor is the K&R C type... # >-#------------------------------------------------------------# >-# >-# Apple's latest GCC documentation reveals: >-# >-# ... the -traditional-cpp option has changed. >-# In Apple GCC 3.1 and earlier Apple GCC compilers, >-# -traditional-cpp was used to toggle between the >-# standard GNU GCC preprocessor and Apple's own >-# preprocessor, "cpp-precomp". The GNU GCC compiler >-# interpreted -traditional-cpp differently on all >-# other platforms. Since cpp-precomp has been removed >-# for Apple's GCC 3.3 compiler, the standard GNU >-# meaning of -traditional-cpp has been restored. By >-# default, the GCC 3.3 preprocessor conforms to the >-# ISO C standard. Using the -tradtional-cpp option >-# means the C preprocessor should instead try to >-# emulate the old "K&R C". >-# >-#------------------------------------------------------------# >- >-if test "$GCC" = "yes"; then >- >- echo "$as_me:$LINENO: checking whether '-traditional-cpp' is K&R C preprocessor" >&5 >-echo $ECHO_N "checking whether '-traditional-cpp' is K&R C preprocessor... $ECHO_C" >&6 >-if test "${hc_cv_traditional_cpp_is_K_AND_R_C_type+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- hc_temp="$CFLAGS" >- CFLAGS="-Wall -Werror -traditional-cpp" >- >-# Note: The test program MUST start in column 1! Otherwise, the compilation >-# will fail when it's not supposed to. >- cat >conftest.$ac_ext <<_ACEOF >- >-/* If the following gets an error, then the >- "traditional" preprocessor is K&R C type. >- Otherwise if it compiles WITHOUT error >- the the "traditional" preprocessor is NOT >- the K&R C type. >-*/ >-#if 1 >- #include <stdio.h> // comment/etc... >-#endif >-int main( int, char**, char** ) >-{ >- return 0; >-} >- >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_traditional_cpp_is_K_AND_R_C_type=no >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-hc_cv_traditional_cpp_is_K_AND_R_C_type=yes >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- >- CFLAGS="$hc_temp" >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_traditional_cpp_is_K_AND_R_C_type" >&5 >-echo "${ECHO_T}$hc_cv_traditional_cpp_is_K_AND_R_C_type" >&6 >-else >- hc_cv_traditional_cpp_is_K_AND_R_C_type=no >-fi >- >-#-----------------------------------------------------------# >-# Check whether byte-swapping can be done using assembler # >-#-----------------------------------------------------------# >- >-echo "$as_me:$LINENO: checking whether byte-swapping can be done using assembler " >&5 >-echo $ECHO_N "checking whether byte-swapping can be done using assembler ... $ECHO_C" >&6 >- >-# (use our own byteswap assembler routines are i486+ only) >-# use system's byteswap routines if present... >- >-case "$host_cpu" in >- >- i486|i586|i686|i786|x86_64) >- >- hc_cv_asm_byteswap=yes >- ;; >- *) >- hc_cv_asm_byteswap=$hc_cv_have_byteswap_h >- ;; >-esac >- >-echo "$as_me:$LINENO: result: $hc_cv_asm_byteswap " >&5 >-echo "${ECHO_T}$hc_cv_asm_byteswap " >&6 >- >-#----------------------------------------------# >-# Check whether -pthread needed for pthreads # >-#----------------------------------------------# >- >-echo "$as_me:$LINENO: checking whether ${CC-cc} accepts -pthread " >&5 >-echo $ECHO_N "checking whether ${CC-cc} accepts -pthread ... $ECHO_C" >&6 >- >-echo 'void f(){}' >conftest.c >-if test -z "`${CC-cc} -pthread -c conftest.c 2>&1`"; then >- hc_cv_dash_pthread_needed=yes >-else >- hc_cv_dash_pthread_needed=no >-fi >- >-echo "$as_me:$LINENO: result: $hc_cv_dash_pthread_needed " >&5 >-echo "${ECHO_T}$hc_cv_dash_pthread_needed " >&6 >- >-#------------------------------------------------------------------ >-# The logic to test whether optreset is needed for getopt use is >-# defined in the 'HC_CHECK_NEED_GETOPT_OPTRESET' macro in the >-# 'hercules.m4' file in the autoconf directory, and issues the >-# AC_DEFINE for 'NEED_GETOPT_OPTRESET' if it's needed (and also >-# sets the '$hc_cv_need_getopt_optreset' variable appropriately). >-#------------------------------------------------------------------ >- >- >- echo "$as_me:$LINENO: checking whether 'optreset' needed for 'getopt' use" >&5 >-echo $ECHO_N "checking whether 'optreset' needed for 'getopt' use... $ECHO_C" >&6 >-if test "${hc_cv_need_getopt_optreset+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >- >-int >-main () >-{ >- >- extern int optreset; >- optreset=1; >- getopt(0,0,0); >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- hc_cv_need_getopt_optreset=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-hc_cv_need_getopt_optreset=no >- >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >- >- >-fi >-echo "$as_me:$LINENO: result: $hc_cv_need_getopt_optreset" >&5 >-echo "${ECHO_T}$hc_cv_need_getopt_optreset" >&6 >- >- if test "$hc_cv_need_getopt_optreset" = "yes"; then >- >- cat >>confdefs.h <<\_ACEOF >-#define NEED_GETOPT_OPTRESET 1 >-_ACEOF >- >- fi >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Checks for system services... >-############################################################################### >- >-# Check whether --enable-largefile or --disable-largefile was given. >-if test "${enable_largefile+set}" = set; then >- enableval="$enable_largefile" >- >-fi; >-if test "$enable_largefile" != no; then >- >- echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 >-echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 >-if test "${ac_cv_sys_largefile_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- ac_cv_sys_largefile_CC=no >- if test "$GCC" != yes; then >- ac_save_CC=$CC >- while :; do >- # IRIX 6.2 and later do not support large files by default, >- # so use the C compiler's -n32 option if that helps. >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >- /* Check that off_t can represent 2**63 - 1 correctly. >- We can't simply define LARGE_OFF_T to be 9223372036854775807, >- since some C++ compilers masquerading as C compilers >- incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 >- && LARGE_OFF_T % 2147483647 == 1) >- ? 1 : -1]; >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >- rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext >- CC="$CC -n32" >- rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sys_largefile_CC=' -n32'; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext >- break >- done >- CC=$ac_save_CC >- rm -f conftest.$ac_ext >- fi >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 >-echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 >- if test "$ac_cv_sys_largefile_CC" != no; then >- CC=$CC$ac_cv_sys_largefile_CC >- fi >- >- echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 >-echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 >-if test "${ac_cv_sys_file_offset_bits+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- while :; do >- ac_cv_sys_file_offset_bits=no >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >- /* Check that off_t can represent 2**63 - 1 correctly. >- We can't simply define LARGE_OFF_T to be 9223372036854775807, >- since some C++ compilers masquerading as C compilers >- incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 >- && LARGE_OFF_T % 2147483647 == 1) >- ? 1 : -1]; >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#define _FILE_OFFSET_BITS 64 >-#include <sys/types.h> >- /* Check that off_t can represent 2**63 - 1 correctly. >- We can't simply define LARGE_OFF_T to be 9223372036854775807, >- since some C++ compilers masquerading as C compilers >- incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 >- && LARGE_OFF_T % 2147483647 == 1) >- ? 1 : -1]; >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sys_file_offset_bits=64; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- break >-done >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 >-echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 >-if test "$ac_cv_sys_file_offset_bits" != no; then >- >-cat >>confdefs.h <<_ACEOF >-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits >-_ACEOF >- >-fi >-rm -f conftest* >- echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 >-echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 >-if test "${ac_cv_sys_large_files+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- while :; do >- ac_cv_sys_large_files=no >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <sys/types.h> >- /* Check that off_t can represent 2**63 - 1 correctly. >- We can't simply define LARGE_OFF_T to be 9223372036854775807, >- since some C++ compilers masquerading as C compilers >- incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 >- && LARGE_OFF_T % 2147483647 == 1) >- ? 1 : -1]; >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#define _LARGE_FILES 1 >-#include <sys/types.h> >- /* Check that off_t can represent 2**63 - 1 correctly. >- We can't simply define LARGE_OFF_T to be 9223372036854775807, >- since some C++ compilers masquerading as C compilers >- incorrectly reject 9223372036854775807. */ >-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) >- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 >- && LARGE_OFF_T % 2147483647 == 1) >- ? 1 : -1]; >-int >-main () >-{ >- >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sys_large_files=1; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- break >-done >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 >-echo "${ECHO_T}$ac_cv_sys_large_files" >&6 >-if test "$ac_cv_sys_large_files" != no; then >- >-cat >>confdefs.h <<_ACEOF >-#define _LARGE_FILES $ac_cv_sys_large_files >-_ACEOF >- >-fi >-rm -f conftest* >-fi >- >-echo "$as_me:$LINENO: checking for off_t" >&5 >-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 >-if test "${ac_cv_type_off_t+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-$ac_includes_default >-int >-main () >-{ >-if ((off_t *) 0) >- return 0; >-if (sizeof (off_t)) >- return 0; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_type_off_t=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_type_off_t=no >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 >-echo "${ECHO_T}$ac_cv_type_off_t" >&6 >-if test $ac_cv_type_off_t = yes; then >- : >-else >- >-cat >>confdefs.h <<_ACEOF >-#define off_t long >-_ACEOF >- >-fi >- >-echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5 >-echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6 >-if test "${ac_cv_sys_largefile_source+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- while :; do >- ac_cv_sys_largefile_source=no >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdio.h> >-int >-main () >-{ >-return !fseeko; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#define _LARGEFILE_SOURCE 1 >-#include <stdio.h> >-int >-main () >-{ >-return !fseeko; >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext >-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 >- (eval $ac_compile) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest.$ac_objext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_sys_largefile_source=1; break >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-fi >-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext >- break >-done >-fi >-echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5 >-echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6 >-if test "$ac_cv_sys_largefile_source" != no; then >- >-cat >>confdefs.h <<_ACEOF >-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source >-_ACEOF >- >-fi >-rm -f conftest* >- >-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug >-# in glibc 2.1.3, but that breaks too many other things. >-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. >-echo "$as_me:$LINENO: checking for fseeko" >&5 >-echo $ECHO_N "checking for fseeko... $ECHO_C" >&6 >-if test "${ac_cv_func_fseeko+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >-else >- cat >conftest.$ac_ext <<_ACEOF >-/* confdefs.h. */ >-_ACEOF >-cat confdefs.h >>conftest.$ac_ext >-cat >>conftest.$ac_ext <<_ACEOF >-/* end confdefs.h. */ >-#include <stdio.h> >-int >-main () >-{ >-return fseeko && fseeko (stdin, 0, 0); >- ; >- return 0; >-} >-_ACEOF >-rm -f conftest.$ac_objext conftest$ac_exeext >-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 >- (eval $ac_link) 2>conftest.er1 >- ac_status=$? >- grep -v '^ *+' conftest.er1 >conftest.err >- rm -f conftest.er1 >- cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); } && >- { ac_try='test -z "$ac_c_werror_flag" >- || test ! -s conftest.err' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; } && >- { ac_try='test -s conftest$ac_exeext' >- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 >- (eval $ac_try) 2>&5 >- ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >- (exit $ac_status); }; }; then >- ac_cv_func_fseeko=yes >-else >- echo "$as_me: failed program was:" >&5 >-sed 's/^/| /' conftest.$ac_ext >&5 >- >-ac_cv_func_fseeko=no >-fi >-rm -f conftest.err conftest.$ac_objext \ >- conftest$ac_exeext conftest.$ac_ext >-fi >-echo "$as_me:$LINENO: result: $ac_cv_func_fseeko" >&5 >-echo "${ECHO_T}$ac_cv_func_fseeko" >&6 >-if test $ac_cv_func_fseeko = yes; then >- >-cat >>confdefs.h <<\_ACEOF >-#define HAVE_FSEEKO 1 >-_ACEOF >- >-fi >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# AC_CONFIG_FILES( [file...] )... >-############################################################################### >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Set flags according to user-specified --enable-xxxxx build options >-############################################################################### >- >-# PROGRAMMING NOTE: some of these values default to previously determined >-# values (e.g. cckd-bzip2 for example defaults to whether libbz2 exists), >-# so this section MUST [unfortunately] come AFTER the above sections. This >-# does have the unfortunate side effect of not detecting invalid options >-# right away like one would normally expect/want. The only way around that >-# would be to perform two checks (one at the beginning and then one again >-# later on), but that approach was rejected since it would tend to make our >-# configure.ac script less clean (simple and straightforward). >- >-# Check whether --enable-dynamic-load or --disable-dynamic-load was given. >-if test "${enable_dynamic_load+set}" = set; then >- enableval="$enable_dynamic_load" >- >- case "${enableval}" in >- yes) hc_cv_opt_dynamic_load=yes ;; >- no) hc_cv_opt_dynamic_load=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'dynamic-load' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'dynamic-load' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_dynamic_load=yes >- >-fi; >- >-# Check whether --enable-cckd-bzip2 or --disable-cckd-bzip2 was given. >-if test "${enable_cckd_bzip2+set}" = set; then >- enableval="$enable_cckd_bzip2" >- >- case "${enableval}" in >- yes) hc_cv_opt_cckd_bzip2=yes ;; >- no) hc_cv_opt_cckd_bzip2=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'cckd-bzip2' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'cckd-bzip2' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_cckd_bzip2=$hc_cv_have_libbz2 >- >-fi; >- >-# Check whether --enable-het-bzip2 or --disable-het-bzip2 was given. >-if test "${enable_het_bzip2+set}" = set; then >- enableval="$enable_het_bzip2" >- >- case "${enableval}" in >- yes) hc_cv_opt_het_bzip2=yes ;; >- no) hc_cv_opt_het_bzip2=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'het-bzip2' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'het-bzip2' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_het_bzip2=$hc_cv_have_libbz2 >- >-fi; >- >-# Check whether --enable-debug or --disable-debug was given. >-if test "${enable_debug+set}" = set; then >- enableval="$enable_debug" >- >- case "${enableval}" in >- yes) hc_cv_opt_debug=yes ;; >- no) hc_cv_opt_debug=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'debug' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'debug' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_debug=no >- >-fi; >- >-# Check whether --enable-optimization or --disable-optimization was given. >-if test "${enable_optimization+set}" = set; then >- enableval="$enable_optimization" >- >- hc_cv_opt_optimization=${enableval} >- >-else >- hc_cv_opt_optimization=yes >- >-fi; >- >-# Check whether --enable-configsymbols or --disable-configsymbols was given. >-if test "${enable_configsymbols+set}" = set; then >- enableval="$enable_configsymbols" >- >- case "${enableval}" in >- yes) hc_cv_opt_configsymbols=yes ;; >- no) hc_cv_opt_configsymbols=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'configsymbols' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'configsymbols' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_configsymbols=yes >- >-fi; >- >-# Check whether --enable-enhanced-configsymbols or --disable-enhanced-configsymbols was given. >-if test "${enable_enhanced_configsymbols+set}" = set; then >- enableval="$enable_enhanced_configsymbols" >- >- case "${enableval}" in >- yes) hc_cv_opt_enhanced_configsymbols=yes ;; >- no) hc_cv_opt_enhanced_configsymbols=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'enhanced-configsymbols' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'enhanced-configsymbols' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_enhanced_configsymbols=yes >- >-fi; >- >-# Check whether --enable-enhanced-configincludes or --disable-enhanced-configincludes was given. >-if test "${enable_enhanced_configincludes+set}" = set; then >- enableval="$enable_enhanced_configincludes" >- >- case "${enableval}" in >- yes) hc_cv_opt_enhanced_configincludes=yes ;; >- no) hc_cv_opt_enhanced_configincludes=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'enhanced-configincludes' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'enhanced-configincludes' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_enhanced_configincludes=yes >- >-fi; >- >-# Check whether --enable-automatic-operator or --disable-automatic-operator was given. >-if test "${enable_automatic_operator+set}" = set; then >- enableval="$enable_automatic_operator" >- >- case "${enableval}" in >- yes) hc_cv_opt_auto_oper=yes ;; >- no) hc_cv_opt_auto_oper=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'automatic-operator' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'automatic-operator' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_auto_oper=$hc_cv_have_regex_h >- >-fi; >- >-# Check whether --enable-external-gui or --disable-external-gui was given. >-if test "${enable_external_gui+set}" = set; then >- enableval="$enable_external_gui" >- >- case "${enableval}" in >- yes) hc_cv_opt_external_gui=yes ;; >- no) hc_cv_opt_external_gui=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'external-gui' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'external-gui' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_external_gui=$hc_cv_is_windows >- >-fi; >- >-# Check whether --enable-fthreads or --disable-fthreads was given. >-if test "${enable_fthreads+set}" = set; then >- enableval="$enable_fthreads" >- >- case "${enableval}" in >- yes) hc_cv_opt_fthreads=yes ;; >- no) hc_cv_opt_fthreads=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'fthreads' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'fthreads' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_fthreads=$hc_cv_is_windows >- >-fi; >- >-# Check whether --enable-fishhang or --disable-fishhang was given. >-if test "${enable_fishhang+set}" = set; then >- enableval="$enable_fishhang" >- >- case "${enableval}" in >- yes) hc_cv_opt_fishhang=yes ;; >- no) hc_cv_opt_fishhang=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'fishhang' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'fishhang' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_fishhang=no >- >-fi; >- >-# Check whether --enable-multi-cpu or --disable-multi-cpu was given. >-if test "${enable_multi_cpu+set}" = set; then >- enableval="$enable_multi_cpu" >- >- case "${enableval}" in >- yes) hc_cv_opt_num_cpu_engines=8 ;; >- no) hc_cv_opt_num_cpu_engines=1 ;; >-# ISW 20051117 : Raise max CPUs to 32 >-# 1|2|3|4|5|6|7|8) hc_cv_opt_num_cpu_engines=${enableval} ;; >- *) >- if test 0 -lt "${enableval}" -a 32 -ge "${enableval}" >- then >- hc_cv_opt_num_cpu_engines=${enableval} >- else >- echo "$as_me:$LINENO: result: ERROR: invalid 'multi-cpu' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'multi-cpu' option " >&6 >- hc_error=yes >- fi >- ;; >- esac >- >-else >- hc_cv_opt_num_cpu_engines=8 >- >-fi; >- >-# Check whether --enable-custom or --disable-custom was given. >-if test "${enable_custom+set}" = set; then >- enableval="$enable_custom" >- >- hc_cv_opt_custom_build_str=${enableval} >- >- >-fi; >- >-if test "$hc_cv_build_hercifc" = "yes"; then >- >- # Check whether --enable-setuid-hercifc or --disable-setuid-hercifc was given. >-if test "${enable_setuid_hercifc+set}" = set; then >- enableval="$enable_setuid_hercifc" >- >- case "${enableval}" in >- yes) hc_cv_opt_setuid_hercifc=yes ;; >- no) hc_cv_opt_setuid_hercifc=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'setuid-hercifc' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'setuid-hercifc' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_setuid_hercifc=no >- >-fi; >- >- hc_cv_setuid_hercifc=$hc_cv_opt_setuid_hercifc >- >-else >- hc_cv_setuid_hercifc=no >-fi >- >-if test "$hc_cv_is_apple" = "yes"; then >- >- # Check whether --enable-universal-binary or --disable-universal-binary was given. >-if test "${enable_universal_binary+set}" = set; then >- enableval="$enable_universal_binary" >- >- case "${enableval}" in >- yes) hc_cv_opt_build_apple_univ_binary=yes ;; >- no) hc_cv_opt_build_apple_univ_binary=no ;; >- *) echo "$as_me:$LINENO: result: ERROR: invalid 'universal-binary' option " >&5 >-echo "${ECHO_T}ERROR: invalid 'universal-binary' option " >&6 >- hc_error=yes >- ;; >- esac >- >-else >- hc_cv_opt_build_apple_univ_binary=no >- >-fi; >- >- hc_cv_build_apple_univ_binary=$hc_cv_opt_build_apple_univ_binary >- >- # If we're building a universal binary, turn off regparm and assembler >- # byteswap: while the Intel compiler can deal with them, the PPC >- # compiler cannot, and only those options common to both can be used. >- # Turn off dependency tracking, too. -- JRM >- >- if test "$hc_cv_build_apple_univ_binary" = "yes"; then >- hc_cv_regparm_attr_supported=no >- hc_cv_asm_byteswap=no >- am_cv_CC_dependencies_compiler_type=none >- am_cv_CXX_dependencies_compiler_type=none >- fi >- >-else >- hc_cv_build_apple_univ_binary=no >-fi >- >-#----------------------------------------------------------------- >-# The handling of AC_ARG_ENABLE for "--enable-getoptwrapper" >-# is defined within the 'HC_ARG_ENABLE_GETOPTWRAPPER' macro >-# coded in the 'hercules.m4' file in the autoconf directory >-# and issues the AC_DEFINE for NEED_GETOPT_WRAPPER if needed >-# (and sets the '$hc_cv_need_getopt_wrapper' variable too). >-#----------------------------------------------------------------- >- >- >- # Check whether --enable-getoptwrapper or --disable-getoptwrapper was given. >-if test "${enable_getoptwrapper+set}" = set; then >- enableval="$enable_getoptwrapper" >- >- case "${enableval}" in >- yes) hc_cv_opt_getoptwrapper=yes ;; >- no) hc_cv_opt_getoptwrapper=no ;; >- auto) hc_cv_opt_getoptwrapper=auto ;; >- *) hc_cv_opt_getoptwrapper=auto ;; >- esac >- >-else >- hc_cv_opt_getoptwrapper=auto >- >-fi; >- >- >- >- echo "$as_me:$LINENO: checking whether getopt wrapper kludge is necessary" >&5 >-echo $ECHO_N "checking whether getopt wrapper kludge is necessary... $ECHO_C" >&6 >- >- if test "$hc_cv_opt_getoptwrapper" != "auto"; then >- >- hc_cv_need_getopt_wrapper="$hc_cv_opt_getoptwrapper" >- hc_cv_need_getopt_wrapper_result_msg="$hc_cv_opt_getoptwrapper (forced)" >- >- else >- >- if test $(./libtool --features | fgrep "enable shared libraries" | wc -l) -ne 1; then >- >- # Libtool doesn't support shared libraries, >- # and thus our wrapper kludge is not needed. >- >- hc_cv_need_getopt_wrapper=no >- hc_cv_need_getopt_wrapper_result_msg=no >- >- else >- >- rm -f libconftest* >- rm -f .libs/libconftest* >- >- cat > conftest1.c << DUPGETOPT1 >- >- /* >- Test program that needs getopt, called by >- another program which itself needs getopt. >- Will the linker complain about duplicate >- symbols for getopt? We'll soon find out! >- */ >- extern char *optarg; >- extern int optind; >- >- int test1() >- { >- int i; >- char *c; >- >- i=optind; >- c=optarg; >- >- getopt(0,0,0); >- >- return 0; >- } >-DUPGETOPT1 >- cat > conftest2.c << DUPGETOPT2 >- >- /* >- Test program that not only needs getopt, >- but also calls another program which also >- needs getopt. Will linker complain about >- duplicate symbols for getopt? Let's see. >- */ >- extern char *optarg; >- extern int optind; >- extern int test2(); >- >- int test2() >- { >- int i; >- char *c; >- >- i=optind; >- c=optarg; >- >- getopt(0,0,0); >- test1(); >- >- return 0; >- } >-DUPGETOPT2 >- >- ./libtool --mode=compile ${CC-cc} conftest1.c -c -o conftest1.lo > /dev/null 2>&1 >- ./libtool --mode=compile ${CC-cc} conftest2.c -c -o conftest2.lo > /dev/null 2>&1 >- >- ./libtool --mode=link ${CC-cc} -shared -rpath /lib -no-undefined conftest1.lo -o libconftest1.la > /dev/null 2>&1 >- ./libtool --mode=link ${CC-cc} -shared -rpath /lib -no-undefined conftest2.lo libconftest1.la -o libconftest2.la > /dev/null 2>&1 >- >- if test $? = 0; then >- >- hc_cv_need_getopt_wrapper=no >- hc_cv_need_getopt_wrapper_result_msg=no >- else >- >- hc_cv_need_getopt_wrapper=yes >- hc_cv_need_getopt_wrapper_result_msg=yes >- fi >- >- rm -f *conftest* >- rm -f .libs/*conftest* >- fi >- fi >- >- echo "$as_me:$LINENO: result: $hc_cv_need_getopt_wrapper_result_msg" >&5 >-echo "${ECHO_T}$hc_cv_need_getopt_wrapper_result_msg" >&6 >- >- if test "$hc_cv_need_getopt_wrapper" = "yes"; then >- >- cat >>confdefs.h <<\_ACEOF >-#define NEED_GETOPT_WRAPPER 1 >-_ACEOF >- >- fi >- >- >- >-#---------------------------------------------------------------- >-# Note: '$enable_shared' is automatically set by LIBTOOL, >-# unless the user overrides it via --disable-shared. >-#---------------------------------------------------------------- >-hc_cv_hdl_build_shared=$enable_shared >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Final default settings, final sanity / error checks... >-############################################################################### >- >-if test "$hc_cv_build_hercifc" = "yes"; then >- >- if test "$hc_cv_have_linux_if_tun_h" != "yes"; then >- >- if test "$hc_cv_have_net_if_h" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: Required headers 'linux/if_tun.h' or 'net/if.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required headers 'linux/if_tun.h' or 'net/if.h' not found " >&6 >- hc_error=yes >- fi >- fi >- >- if test "$hc_cv_have_net_route_h" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: Required header 'net/route_h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'net/route_h' not found " >&6 >- hc_error=yes >- fi >-fi >- >-#------------------------------------------------------------------------------ >-# signal.h is only required if strsignal function isn't available since if >-# the strsignal function isn't available, we use our builtin which needs it. >-# The presumption that if the strsignal function is found, then the signal.h >-# header will also be found seems to be a fairly safe assumption to make IMO. >- >-if test "$hc_cv_have_strsignal" != "yes" && >- test "$hc_cv_have_signal_h" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: Required header 'signal.h' not found " >&5 >-echo "${ECHO_T}ERROR: Required header 'signal.h' not found " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_have_vsscanf" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: Required function 'vsscanf' not found " >&5 >-echo "${ECHO_T}ERROR: Required function 'vsscanf' not found " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_have_inttypes_h" != "yes" && >- test "$hc_cv_have_u_int8_t" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: unable to find fixed-size data types " >&5 >-echo "${ECHO_T}ERROR: unable to find fixed-size data types " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_opt_cckd_bzip2" = "yes" || >- test "$hc_cv_opt_het_bzip2" = "yes"; then >- >- if test "$hc_cv_have_libbz2" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: bzip2 compression requested but libbz2 library not found " >&5 >-echo "${ECHO_T}ERROR: bzip2 compression requested but libbz2 library not found " >&6 >- hc_error=yes >- fi >- >- if test "$hc_cv_have_bzlib_h" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: bzip2 compression requested but 'bzlib.h' header not found " >&5 >-echo "${ECHO_T}ERROR: bzip2 compression requested but 'bzlib.h' header not found " >&6 >- hc_error=yes >- fi >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_opt_dynamic_load" = "yes"; then >- >- if test "$hc_cv_have_lt_dlopen" != "yes" && >- test "$hc_cv_have_dlopen" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: dynamic-load requires libtool or dlltool " >&5 >-echo "${ECHO_T}ERROR: dynamic-load requires libtool or dlltool " >&6 >- hc_error=yes >- fi >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_opt_auto_oper" = "yes" && >- test "$hc_cv_have_regex_h" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: automatic-operator requested but 'regex.h' header not found " >&5 >-echo "${ECHO_T}ERROR: automatic-operator requested but 'regex.h' header not found " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_opt_external_gui" = "yes" && >- test "$hc_cv_is_windows" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: external-gui currently only supported on Windows platforms " >&5 >-echo "${ECHO_T}ERROR: external-gui currently only supported on Windows platforms " >&6 >- hc_error=yes >-fi >- >-if test "$hc_cv_opt_external_gui" = "yes" && >- test "$hc_cv_opt_dynamic_load" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: external-gui requires dynamic-load " >&5 >-echo "${ECHO_T}ERROR: external-gui requires dynamic-load " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_opt_fthreads" = "yes" && >- test "$hc_cv_is_windows" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: fthreads is only for Windows platforms " >&5 >-echo "${ECHO_T}ERROR: fthreads is only for Windows platforms " >&6 >- hc_error=yes >-fi >- >-if test "$hc_cv_have_pthread_h" != "yes" && >- test "$hc_cv_opt_fthreads" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: unable to find pthread.h " >&5 >-echo "${ECHO_T}ERROR: unable to find pthread.h " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_opt_fishhang" = "yes" && >- test "$hc_cv_opt_fthreads" != "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: fishhang requires fthreads " >&5 >-echo "${ECHO_T}ERROR: fishhang requires fthreads " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >- >-if test "$hc_cv_is_apple" = "yes" && >- test "$hc_cv_pp_macro_arg_counting_broke" = "yes" && >- test "$hc_cv_traditional_cpp_is_K_AND_R_C_type" = "yes"; then >- >- echo "$as_me:$LINENO: result: ERROR: macro argument counting broken and cannot use -traditional-cpp option to work around it " >&5 >-echo "${ECHO_T}ERROR: macro argument counting broken and cannot use -traditional-cpp option to work around it " >&6 >- hc_error=yes >-fi >- >-#------------------------------------------------------------------------------ >-# If any errors have been detected, then abort the configure at this time >-#------------------------------------------------------------------------------ >- >-if test "$hc_error" != "no"; then >- { { echo "$as_me:$LINENO: error: Please correct the above error(s) and try again " >&5 >-echo "$as_me: error: Please correct the above error(s) and try again " >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# Act on the results of all of the above... >-############################################################################### >- >-# AUTOMATIC DETERMINATION OF OPTIMIZATION FLAGS >-# >-# If they specified 'no' then don't optimize. >-# If they specified 'yes' then determine what flags we should use. >-# If they didn't specify, then optimize only if this is NOT a debug build. >-# Otherwise use whatever flags they specified as-is. >- >-echo "$as_me:$LINENO: checking for what optimization flags to use " >&5 >-echo $ECHO_N "checking for what optimization flags to use ... $ECHO_C" >&6 >- >-case "$hc_cv_opt_optimization" in >- >- no) >- >- hc_cv_auto_optimize=no >- ;; >- >- yes) >- >- hc_cv_auto_optimize=yes >- ;; >- >- *) >- if test "x$hc_cv_opt_optimization" = "x"; then >- >- if test "$hc_cv_opt_debug" = "yes"; then >- >- hc_cv_auto_optimize=no >- else >- hc_cv_auto_optimize=yes >- fi >- >- else >- >- hc_cv_auto_optimize=no >- hc_cv_optimization_flags="$hc_cv_opt_optimization" >- fi >- ;; >-esac >- >-if test "$hc_cv_auto_optimize" = "yes"; then >- >- if test "$hc_cv_builtin_alloca_broke" != "yes" && >- test "$hc_cv_opt_debug" != "yes"; then >- >- hc_cv_optimization_flags="-O3" >- fi >- >- hc_cv_is_intel_x86_arch=no >- >- case "$host_cpu-$GCC" in >- >- x86_64-yes) >- >- hc_cv_is_intel_x86_arch=yes >- hc_cv_intel_cpu_type=k8 >- ;; >- >- i386-yes|i486-yes|i586-yes|i686-yes|i786-yes) >- >- hc_cv_is_intel_x86_arch=yes >- >- if test $host_cpu = i786; then >- >- hc_cv_intel_cpu_type=pentium4 >- else >- if test $host_cpu = i686 && >- test "hc_cv_is_gcc_2_96" = "yes"; then >- >- hc_cv_intel_cpu_type=i586 >- else >- hc_cv_intel_cpu_type=$host_cpu >- fi >- fi >- ;; >- >- arm-yes) >- >- hc_cv_is_intel_x86_arch=no >- hc_cv_optimization_flags="$hc_cv_optimization_flags -frename-registers" >- ;; >- >- xscale-yes|arm*-yes) >- >- hc_cv_is_intel_x86_arch=no >- hc_cv_optimization_flags="$hc_cv_optimization_flags -mcpu=$host_cpu -mtune=$host_cpu -frename-registers" >- ;; >- esac >- >- if test "$hc_cv_is_intel_x86_arch" = "yes"; then >- >- if test "$hc_cv_build_apple_univ_binary" = "yes"; then >- hc_cv_optimization_flags="$hc_cv_optimization_flags -arch i386 -arch ppc" >- else >- hc_cv_optimization_flags="$hc_cv_optimization_flags -march=$hc_cv_intel_cpu_type" >- >- if test "$hc_cv_builtin_alloca_broke" != "yes" && >- test "$hc_cv_opt_debug" != "yes"; then >- >- hc_cv_optimization_flags="$hc_cv_optimization_flags -fomit-frame-pointer" >- else >- hc_cv_optimization_flags="$hc_cv_optimization_flags -fno-omit-frame-pointer" >- fi >- fi >- fi >-fi >- >-if test "x$hc_cv_optimization_flags" = "x"; then >- echo "$as_me:$LINENO: result: (none) " >&5 >-echo "${ECHO_T}(none) " >&6 >-else >- echo "$as_me:$LINENO: result: $hc_cv_optimization_flags " >&5 >-echo "${ECHO_T}$hc_cv_optimization_flags " >&6 >-fi >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-############################################################################### >-# DONE! -- Define our OUTPUT values and then exit... >-############################################################################### >- >-# This is ugly... Someone PLEASE fix this (if possible)... >-# >-# The object is to get the value of PKGDATADIR into config.h, >-# but this is the only way I've found to do so. All of this >-# rigamarole is needed because ${datadir} doesn't expand to the >-# desired data directory. If there's a better way to get there, >-# PLEASE replace this. -- JRM >-# >-# If DESTPREFIX is set, we're doing an RPM build, and we want to >-# use that value. If it's not set, and prefix is set and not equal >-# to NONE, then we'll use that. If prefix is NONE, then default to >-# /usr/local. Note: This prefix has /share/locale, /share/$PACKAGE, >-# or /lib/$PACKAGE appended in the next step, so it must NOT have >-# those components included in $DESTPREFIX itself. >- >-if test "x${DESTPREFIX}" = "x"; then >- if test "x$prefix" = "xNONE"; then >- DESTPREFIX="/usr/local" >- else >- DESTPREFIX="${prefix}" >- fi >-fi >- >-MODULESDIR="${DESTPREFIX}/lib/${PACKAGE}" >-PKGDATADIR="${DESTPREFIX}/share/${PACKAGE}" >-HERC_LOCALEDIR="${DESTPREFIX}/share/locale" >- >-#--------------------------------------------------------------# >-# (place only AC_DEFINE_UNQUOTED here; place AC_DEFINE below) # >-#--------------------------------------------------------------# >- >-if test "x$hc_cv_opt_custom_build_str" != "x"; then >- cat >>confdefs.h <<_ACEOF >-#define CUSTOM_BUILD_STRING "${hc_cv_opt_custom_build_str}" >-_ACEOF >- >-fi >- >-cat >>confdefs.h <<_ACEOF >-#define MODULESDIR "${MODULESDIR}" >-_ACEOF >- >-cat >>confdefs.h <<_ACEOF >-#define PKGDATADIR "${PKGDATADIR}" >-_ACEOF >- >-cat >>confdefs.h <<_ACEOF >-#define HERC_LOCALEDIR "${HERC_LOCALEDIR}" >-_ACEOF >- >-cat >>confdefs.h <<_ACEOF >-#define MAX_CPU_ENGINES ${hc_cv_opt_num_cpu_engines} >-_ACEOF >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-{ echo "$as_me:$LINENO: " >&5 >-echo "$as_me: " >&6;} >-{ echo "$as_me:$LINENO: Package destination directory prefixes: " >&5 >-echo "$as_me: Package destination directory prefixes: " >&6;} >-{ echo "$as_me:$LINENO: " >&5 >-echo "$as_me: " >&6;} >-{ echo "$as_me:$LINENO: Libraries: ${MODULESDIR} " >&5 >-echo "$as_me: Libraries: ${MODULESDIR} " >&6;} >-{ echo "$as_me:$LINENO: Data: ${PKGDATADIR} " >&5 >-echo "$as_me: Data: ${PKGDATADIR} " >&6;} >-{ echo "$as_me:$LINENO: Locale: ${HERC_LOCALEDIR} " >&5 >-echo "$as_me: Locale: ${HERC_LOCALEDIR} " >&6;} >-{ echo "$as_me:$LINENO: " >&5 >-echo "$as_me: " >&6;} >- >-#---------------------------------------------------------------# >-# (place only AC_DEFINE here; place AC_DEFINE_UNQUOTED above) # >-#---------------------------------------------------------------# >- >-test "$hc_cv_opt_debug" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define DEBUG 1 >-_ACEOF >- >-test "$hc_cv_have_inttypes_h" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define HAVE_INTTYPES_H 1 >-_ACEOF >- >-test "$hc_cv_have_u_int8_t" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define HAVE_U_INT 1 >-_ACEOF >- >-test "$hc_cv_opt_configsymbols" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define OPTION_CONFIG_SYMBOLS 1 >-_ACEOF >- >-test "$hc_cv_opt_enhanced_configsymbols" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define OPTION_ENHANCED_CONFIG_SYMBOLS 1 >-_ACEOF >- >-test "$hc_cv_opt_enhanced_configincludes" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define OPTION_ENHANCED_CONFIG_INCLUDE 1 >-_ACEOF >- >-test "$hc_cv_opt_auto_oper" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define OPTION_HAO 1 >-_ACEOF >- >-test "$hc_cv_opt_dynamic_load" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define OPTION_DYNAMIC_LOAD 1 >-_ACEOF >- >-test "$hc_cv_opt_fthreads" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define OPTION_FTHREADS 1 >-_ACEOF >- >-test "$hc_cv_opt_fishhang" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define FISH_HANG 1 >-_ACEOF >- >-test "$hc_cv_hdl_build_shared" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define HDL_BUILD_SHARED 1 >-_ACEOF >- >-test "$hc_cv_have_lt_dlopen" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define HDL_USE_LIBTOOL 1 >-_ACEOF >- >-test "$hc_cv_is_windows" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define WIN32 1 >-_ACEOF >- >-test "$hc_cv_opt_external_gui" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define EXTERNALGUI 1 >-_ACEOF >- >-test "$hc_cv_opt_cckd_bzip2" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define CCKD_BZIP2 1 >-_ACEOF >- >-test "$hc_cv_opt_het_bzip2" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define HET_BZIP2 1 >-_ACEOF >- >-test "$hc_cv_timespec_in_sys_types_h" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define TIMESPEC_IN_SYS_TYPES_H 1 >-_ACEOF >- >-test "$hc_cv_timespec_in_time_h" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define TIMESPEC_IN_TIME_H 1 >-_ACEOF >- >-test "$hc_cv_have_getset_uid" != "yes" && cat >>confdefs.h <<\_ACEOF >-#define NO_SETUID 1 >-_ACEOF >- >-test "$hc_cv_asm_byteswap" != "yes" && cat >>confdefs.h <<\_ACEOF >-#define NO_ASM_BYTESWAP 1 >-_ACEOF >- >-test "$hc_cv_non_unique_gettimeofday" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define NON_UNIQUE_GETTIMEOFDAY 1 >-_ACEOF >- >-test "$hc_cv_build_hercifc" = "yes" && cat >>confdefs.h <<\_ACEOF >-#define BUILD_HERCIFC 1 >-_ACEOF >- >- >-if test $hc_cv_have_sa_sigaction != yes || >- test $hc_cv_have_sigusr1 != yes || >- test $hc_cv_have_sigusr2 != yes || >- test $hc_cv_have_sigpipe != yes || >- test $hc_cv_have_sigbus != yes; then >- >- cat >>confdefs.h <<\_ACEOF >-#define NO_SIGABEND_HANDLER 1 >-_ACEOF >- >- >-fi >- >-if test "$hc_cv_regparm_attr_supported" = "yes" && >- test "$hc_cv_regparm_attr_broke" != "yes"; then >- >- cat >>confdefs.h <<\_ACEOF >-#define HAVE_ATTR_REGPARM 1 >-_ACEOF >- >-fi >- >-if test "$hc_cv_is_windows" != "yes" && >- test "$hc_cv_have_fenv_h" != "yes"; then >- >- cat >>confdefs.h <<\_ACEOF >-#define NO_IEEE_SUPPORT 1 >-_ACEOF >- >-fi >- >-if test "$hc_cv_is_apple" = "yes"; then >- >- cat >>confdefs.h <<\_ACEOF >-#define _INTL_REDIRECT_MACROS 1 >-_ACEOF >- >- >- # >- # TODO?? >- # >- # Do whatever is necessary to get the following symbol defined >- # so the included libltdl will be built and used... >- # >- >-## AC_PROVIDE_AC_LIBTOOL_DLOPEN() >- >-fi >- >-#--------------------------------------------------# >-# CPPFLAGS (pre-processor flags) # >-#--------------------------------------------------# >- >-if test "$hc_cv_is_apple" = "yes" && >- test "$hc_cv_pp_macro_arg_counting_broke" = "yes"; then >- >- CPPFLAGS="${CPPFLAGS} -traditional-cpp -Wno-endif-labels" >-fi >- >-#--------------------------------------------------# >-# CFLAGS (compiler flags) # >-#--------------------------------------------------# >- >- >-if test "$hc_cv_is_windows" = "yes"; then >- >- if test "$hc_cv_have_pthread_h" = "yes" && >- test "x$hc_cv_alt_pthread_location" != "x"; then >- >- CFLAGS="$CFLAGS -I${hc_cv_alt_pthread_location}" >- fi >- >- CFLAGS="$CFLAGS -Wno-format" >-fi >- >-if test "$hc_cv_byte_structs_aligned_and_rounded_by_default" = "yes"; then >- >- #=============================================================== >- # the following requests 8-bit (byte) struct boundary alignment >- #=============================================================== >- >- CFLAGS="$CFLAGS -mstructure-size-boundary=8" >-fi >- >-test "x$hc_cv_optimization_flags" != "x" && CFLAGS="$CFLAGS $hc_cv_optimization_flags" >- >-#--------------------------------------------------# >-# LIBS (linker flags) # >-#--------------------------------------------------# >- >-test "$hc_cv_dash_pthread_needed" = "yes" && LIBS="$LIBS -pthread" >-test "$hc_cv_have_libbz2" = "yes" && LIBS="$LIBS -lbz2" >- >-# ---------------------- MINGW32 ---------------------- >- >-test "$hc_cv_is_mingw32" = "yes" && LIBS="$LIBS -lmsvcrt" >-test "$hc_cv_is_mingw32" = "yes" && LIBS="$LIBS -lws2_32" >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-#--------------------------------------------------------------------------------# >-# Pass certain values/settings as makefile variables to automake (makefile.am) # >-#--------------------------------------------------------------------------------# >- >- >- >-if test "$hc_cv_opt_dynamic_load" = "yes" ; then >- OPTION_DYNAMIC_LOAD_TRUE= >- OPTION_DYNAMIC_LOAD_FALSE='#' >-else >- OPTION_DYNAMIC_LOAD_TRUE='#' >- OPTION_DYNAMIC_LOAD_FALSE= >-fi >- >- >- >-if test "$hc_cv_opt_fthreads" = "yes" ; then >- BUILD_FTHREADS_TRUE= >- BUILD_FTHREADS_FALSE='#' >-else >- BUILD_FTHREADS_TRUE='#' >- BUILD_FTHREADS_FALSE= >-fi >- >- >- >-if test "$hc_cv_opt_fishhang" = "yes" ; then >- BUILD_FISHHANG_TRUE= >- BUILD_FISHHANG_FALSE='#' >-else >- BUILD_FISHHANG_TRUE='#' >- BUILD_FISHHANG_FALSE= >-fi >- >- >- >-if test "$hc_cv_build_hercifc" = "yes" ; then >- BUILD_HERCIFC_TRUE= >- BUILD_HERCIFC_FALSE='#' >-else >- BUILD_HERCIFC_TRUE='#' >- BUILD_HERCIFC_FALSE= >-fi >- >- >- >-if test "$hc_cv_setuid_hercifc" = "yes" ; then >- SETUID_HERCIFC_TRUE= >- SETUID_HERCIFC_FALSE='#' >-else >- SETUID_HERCIFC_TRUE='#' >- SETUID_HERCIFC_FALSE= >-fi >- >- >-# Building of shared libraries is forced, and we force use of libtool too. >- >- >- >-if test "$hc_cv_hdl_build_shared" = "yes" ; then >- BUILD_SHARED_TRUE= >- BUILD_SHARED_FALSE='#' >-else >- BUILD_SHARED_TRUE='#' >- BUILD_SHARED_FALSE= >-fi >- >- >- >-if test "$hc_cv_is_windows" = "yes" ; then >- USE_DLLTOOL_TRUE= >- USE_DLLTOOL_FALSE='#' >-else >- USE_DLLTOOL_TRUE='#' >- USE_DLLTOOL_FALSE= >-fi >- >- >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >- ac_config_files="$ac_config_files Makefile util/Makefile html/Makefile crypto/Makefile po/Makefile.in po/Makefile man/Makefile m4/Makefile decNumber/Makefile" >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >- >-_ACEOF >- >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, don't put newlines in cache variables' values. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-{ >- (set) 2>&1 | >- case `(ac_space=' '; set | grep ac_space) 2>&1` in >- *ac_space=\ *) >- # `set' does not quote correctly, so add quotes (double-quote >- # substitution turns \\\\ into \\, and sed turns \\ into \). >- sed -n \ >- "s/'/'\\\\''/g; >- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" >- ;; >- *) >- # `set' quotes correctly as required by POSIX, so do not add quotes. >- sed -n \ >- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" >- ;; >- esac; >-} | >- sed ' >- t clear >- : clear >- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ >- t end >- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ >- : end' >>confcache >-if diff $cache_file confcache >/dev/null 2>&1; then :; else >- if test -w $cache_file; then >- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" >- cat confcache >$cache_file >- else >- echo "not updating unwritable cache $cache_file" >- fi >-fi >-rm -f confcache >- >-test "x$prefix" = xNONE && prefix=$ac_default_prefix >-# Let make expand exec_prefix. >-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' >- >-# VPATH may cause trouble with some makes, so we remove $(srcdir), >-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and >-# trailing colons and then remove the whole line if VPATH becomes empty >-# (actually we leave an empty line to preserve line numbers). >-if test "x$srcdir" = x.; then >- ac_vpsub='/^[ ]*VPATH[ ]*=/{ >-s/:*\$(srcdir):*/:/; >-s/:*\${srcdir}:*/:/; >-s/:*@srcdir@:*/:/; >-s/^\([^=]*=[ ]*\):*/\1/; >-s/:*$//; >-s/^[^=]*=[ ]*$//; >-}' >-fi >- >-DEFS=-DHAVE_CONFIG_H >- >-ac_libobjs= >-ac_ltlibobjs= >-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue >- # 1. Remove the extension, and $U if already installed. >- ac_i=`echo "$ac_i" | >- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` >- # 2. Add them. >- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" >- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' >-done >-LIBOBJS=$ac_libobjs >- >-LTLIBOBJS=$ac_ltlibobjs >- >- >-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"AMDEP\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${INSTALL_LTDL_TRUE}" && test -z "${INSTALL_LTDL_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"INSTALL_LTDL\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"INSTALL_LTDL\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${CONVENIENCE_LTDL_TRUE}" && test -z "${CONVENIENCE_LTDL_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"CONVENIENCE_LTDL\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"CONVENIENCE_LTDL\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${OPTION_DYNAMIC_LOAD_TRUE}" && test -z "${OPTION_DYNAMIC_LOAD_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"OPTION_DYNAMIC_LOAD\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"OPTION_DYNAMIC_LOAD\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${BUILD_FTHREADS_TRUE}" && test -z "${BUILD_FTHREADS_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"BUILD_FTHREADS\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"BUILD_FTHREADS\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${BUILD_FISHHANG_TRUE}" && test -z "${BUILD_FISHHANG_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"BUILD_FISHHANG\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"BUILD_FISHHANG\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${BUILD_HERCIFC_TRUE}" && test -z "${BUILD_HERCIFC_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"BUILD_HERCIFC\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"BUILD_HERCIFC\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${SETUID_HERCIFC_TRUE}" && test -z "${SETUID_HERCIFC_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"SETUID_HERCIFC\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"SETUID_HERCIFC\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${BUILD_SHARED_TRUE}" && test -z "${BUILD_SHARED_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"BUILD_SHARED\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"BUILD_SHARED\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >-if test -z "${USE_DLLTOOL_TRUE}" && test -z "${USE_DLLTOOL_FALSE}"; then >- { { echo "$as_me:$LINENO: error: conditional \"USE_DLLTOOL\" was never defined. >-Usually this means the macro was only invoked conditionally." >&5 >-echo "$as_me: error: conditional \"USE_DLLTOOL\" was never defined. >-Usually this means the macro was only invoked conditionally." >&2;} >- { (exit 1); exit 1; }; } >-fi >- >-: ${CONFIG_STATUS=./config.status} >-ac_clean_files_save=$ac_clean_files >-ac_clean_files="$ac_clean_files $CONFIG_STATUS" >-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 >-echo "$as_me: creating $CONFIG_STATUS" >&6;} >-cat >$CONFIG_STATUS <<_ACEOF >-#! $SHELL >-# Generated by $as_me. >-# Run this file to recreate the current configuration. >-# Compiler output produced by configure, useful for debugging >-# configure, is in config.log if it exists. >- >-debug=false >-ac_cs_recheck=false >-ac_cs_silent=false >-SHELL=\${CONFIG_SHELL-$SHELL} >-_ACEOF >- >-cat >>$CONFIG_STATUS <<\_ACEOF >-## --------------------- ## >-## M4sh Initialization. ## >-## --------------------- ## >- >-# Be Bourne compatible >-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then >- emulate sh >- NULLCMD=: >- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which >- # is contrary to our usage. Disable this feature. >- alias -g '${1+"$@"}'='"$@"' >-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then >- set -o posix >-fi >-DUALCASE=1; export DUALCASE # for MKS sh >- >-# Support unset when possible. >-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then >- as_unset=unset >-else >- as_unset=false >-fi >- >- >-# Work around bugs in pre-3.0 UWIN ksh. >-$as_unset ENV MAIL MAILPATH >-PS1='$ ' >-PS2='> ' >-PS4='+ ' >- >-# NLS nuisances. >-for as_var in \ >- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ >- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ >- LC_TELEPHONE LC_TIME >-do >- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then >- eval $as_var=C; export $as_var >- else >- $as_unset $as_var >- fi >-done >- >-# Required to use basename. >-if expr a : '\(a\)' >/dev/null 2>&1; then >- as_expr=expr >-else >- as_expr=false >-fi >- >-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then >- as_basename=basename >-else >- as_basename=false >-fi >- >- >-# Name of the executable. >-as_me=`$as_basename "$0" || >-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ >- X"$0" : 'X\(//\)$' \| \ >- X"$0" : 'X\(/\)$' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X/"$0" | >- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } >- /^X\/\(\/\/\)$/{ s//\1/; q; } >- /^X\/\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- >- >-# PATH needs CR, and LINENO needs CR and PATH. >-# Avoid depending upon Character Ranges. >-as_cr_letters='abcdefghijklmnopqrstuvwxyz' >-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' >-as_cr_Letters=$as_cr_letters$as_cr_LETTERS >-as_cr_digits='0123456789' >-as_cr_alnum=$as_cr_Letters$as_cr_digits >- >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >- else >- PATH_SEPARATOR=: >- fi >- rm -f conf$$.sh >-fi >- >- >- as_lineno_1=$LINENO >- as_lineno_2=$LINENO >- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` >- test "x$as_lineno_1" != "x$as_lineno_2" && >- test "x$as_lineno_3" = "x$as_lineno_2" || { >- # Find who we are. Look in the path if we contain no path at all >- # relative or not. >- case $0 in >- *[\\/]* ) as_myself=$0 ;; >- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in $PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break >-done >- >- ;; >- esac >- # We did not find ourselves, most probably we were run as `sh COMMAND' >- # in which case we are not to be found in the path. >- if test "x$as_myself" = x; then >- as_myself=$0 >- fi >- if test ! -f "$as_myself"; then >- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 >-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} >- { (exit 1); exit 1; }; } >- fi >- case $CONFIG_SHELL in >- '') >- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH >-do >- IFS=$as_save_IFS >- test -z "$as_dir" && as_dir=. >- for as_base in sh bash ksh sh5; do >- case $as_dir in >- /*) >- if ("$as_dir/$as_base" -c ' >- as_lineno_1=$LINENO >- as_lineno_2=$LINENO >- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` >- test "x$as_lineno_1" != "x$as_lineno_2" && >- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then >- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } >- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } >- CONFIG_SHELL=$as_dir/$as_base >- export CONFIG_SHELL >- exec "$CONFIG_SHELL" "$0" ${1+"$@"} >- fi;; >- esac >- done >-done >-;; >- esac >- >- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO >- # uniformly replaced by the line number. The first 'sed' inserts a >- # line-number line before each line; the second 'sed' does the real >- # work. The second script uses 'N' to pair each line-number line >- # with the numbered line, and appends trailing '-' during >- # substitution so that $LINENO is not a special case at line end. >- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the >- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) >- sed '=' <$as_myself | >- sed ' >- N >- s,$,-, >- : loop >- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, >- t loop >- s,-$,, >- s,^['$as_cr_digits']*\n,, >- ' >$as_me.lineno && >- chmod +x $as_me.lineno || >- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 >-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} >- { (exit 1); exit 1; }; } >- >- # Don't try to exec as it changes $[0], causing all sort of problems >- # (the dirname of $[0] is not the place where we might find the >- # original and so on. Autoconf is especially sensible to this). >- . ./$as_me.lineno >- # Exit status is that of the last command. >- exit >-} >- >- >-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in >- *c*,-n*) ECHO_N= ECHO_C=' >-' ECHO_T=' ' ;; >- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; >- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; >-esac >- >-if expr a : '\(a\)' >/dev/null 2>&1; then >- as_expr=expr >-else >- as_expr=false >-fi >- >-rm -f conf$$ conf$$.exe conf$$.file >-echo >conf$$.file >-if ln -s conf$$.file conf$$ 2>/dev/null; then >- # We could just check for DJGPP; but this test a) works b) is more generic >- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). >- if test -f conf$$.exe; then >- # Don't use ln at all; we don't have any links >- as_ln_s='cp -p' >- else >- as_ln_s='ln -s' >- fi >-elif ln conf$$.file conf$$ 2>/dev/null; then >- as_ln_s=ln >-else >- as_ln_s='cp -p' >-fi >-rm -f conf$$ conf$$.exe conf$$.file >- >-if mkdir -p . 2>/dev/null; then >- as_mkdir_p=: >-else >- test -d ./-p && rmdir ./-p >- as_mkdir_p=false >-fi >- >-as_executable_p="test -f" >- >-# Sed expression to map a string onto a valid CPP name. >-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" >- >-# Sed expression to map a string onto a valid variable name. >-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" >- >- >-# IFS >-# We need space, tab and new line, in precisely that order. >-as_nl=' >-' >-IFS=" $as_nl" >- >-# CDPATH. >-$as_unset CDPATH >- >-exec 6>&1 >- >-# Open the log real soon, to keep \$[0] and so on meaningful, and to >-# report actual input values of CONFIG_FILES etc. instead of their >-# values after options handling. Logging --version etc. is OK. >-exec 5>>config.log >-{ >- echo >- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX >-## Running $as_me. ## >-_ASBOX >-} >&5 >-cat >&5 <<_CSEOF >- >-This file was extended by $as_me, which was >-generated by GNU Autoconf 2.59. Invocation command line was >- >- CONFIG_FILES = $CONFIG_FILES >- CONFIG_HEADERS = $CONFIG_HEADERS >- CONFIG_LINKS = $CONFIG_LINKS >- CONFIG_COMMANDS = $CONFIG_COMMANDS >- $ $0 $@ >- >-_CSEOF >-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 >-echo >&5 >-_ACEOF >- >-# Files that config.status was made for. >-if test -n "$ac_config_files"; then >- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS >-fi >- >-if test -n "$ac_config_headers"; then >- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS >-fi >- >-if test -n "$ac_config_links"; then >- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS >-fi >- >-if test -n "$ac_config_commands"; then >- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS >-fi >- >-cat >>$CONFIG_STATUS <<\_ACEOF >- >-ac_cs_usage="\ >-\`$as_me' instantiates files from templates according to the >-current configuration. >- >-Usage: $0 [OPTIONS] [FILE]... >- >- -h, --help print this help, then exit >- -V, --version print version number, then exit >- -q, --quiet do not print progress messages >- -d, --debug don't remove temporary files >- --recheck update $as_me by reconfiguring in the same conditions >- --file=FILE[:TEMPLATE] >- instantiate the configuration file FILE >- --header=FILE[:TEMPLATE] >- instantiate the configuration header FILE >- >-Configuration files: >-$config_files >- >-Configuration headers: >-$config_headers >- >-Configuration commands: >-$config_commands >- >-Report bugs to <bug-autoconf@gnu.org>." >-_ACEOF >- >-cat >>$CONFIG_STATUS <<_ACEOF >-ac_cs_version="\\ >-config.status >-configured by $0, generated by GNU Autoconf 2.59, >- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" >- >-Copyright (C) 2003 Free Software Foundation, Inc. >-This config.status script is free software; the Free Software Foundation >-gives unlimited permission to copy, distribute and modify it." >-srcdir=$srcdir >-INSTALL="$INSTALL" >-_ACEOF >- >-cat >>$CONFIG_STATUS <<\_ACEOF >-# If no file are specified by the user, then we need to provide default >-# value. By we need to know if files were specified by the user. >-ac_need_defaults=: >-while test $# != 0 >-do >- case $1 in >- --*=*) >- ac_option=`expr "x$1" : 'x\([^=]*\)='` >- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` >- ac_shift=: >- ;; >- -*) >- ac_option=$1 >- ac_optarg=$2 >- ac_shift=shift >- ;; >- *) # This is not an option, so the user has probably given explicit >- # arguments. >- ac_option=$1 >- ac_need_defaults=false;; >- esac >- >- case $ac_option in >- # Handling of the options. >-_ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) >- ac_cs_recheck=: ;; >- --version | --vers* | -V ) >- echo "$ac_cs_version"; exit 0 ;; >- --he | --h) >- # Conflict between --help and --header >- { { echo "$as_me:$LINENO: error: ambiguous option: $1 >-Try \`$0 --help' for more information." >&5 >-echo "$as_me: error: ambiguous option: $1 >-Try \`$0 --help' for more information." >&2;} >- { (exit 1); exit 1; }; };; >- --help | --hel | -h ) >- echo "$ac_cs_usage"; exit 0 ;; >- --debug | --d* | -d ) >- debug=: ;; >- --file | --fil | --fi | --f ) >- $ac_shift >- CONFIG_FILES="$CONFIG_FILES $ac_optarg" >- ac_need_defaults=false;; >- --header | --heade | --head | --hea ) >- $ac_shift >- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" >- ac_need_defaults=false;; >- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ >- | -silent | --silent | --silen | --sile | --sil | --si | --s) >- ac_cs_silent=: ;; >- >- # This is an error. >- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 >-Try \`$0 --help' for more information." >&5 >-echo "$as_me: error: unrecognized option: $1 >-Try \`$0 --help' for more information." >&2;} >- { (exit 1); exit 1; }; } ;; >- >- *) ac_config_targets="$ac_config_targets $1" ;; >- >- esac >- shift >-done >- >-ac_configure_extra_args= >- >-if $ac_cs_silent; then >- exec 6>/dev/null >- ac_configure_extra_args="$ac_configure_extra_args --silent" >-fi >- >-_ACEOF >-cat >>$CONFIG_STATUS <<_ACEOF >-if \$ac_cs_recheck; then >- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 >- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion >-fi >- >-_ACEOF >- >-cat >>$CONFIG_STATUS <<_ACEOF >-# >-# INIT-COMMANDS section. >-# >- >-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" >-# Capture the value of obsolete ALL_LINGUAS because we need it to compute >- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it >- # from automake. >- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' >- # Capture the value of LINGUAS because we need it to compute CATALOGS. >- LINGUAS="${LINGUAS-%UNSET%}" >- >- >-_ACEOF >- >- >- >-cat >>$CONFIG_STATUS <<\_ACEOF >-for ac_config_target in $ac_config_targets >-do >- case "$ac_config_target" in >- # Handling of arguments. >- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; >- "util/Makefile" ) CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; >- "html/Makefile" ) CONFIG_FILES="$CONFIG_FILES html/Makefile" ;; >- "crypto/Makefile" ) CONFIG_FILES="$CONFIG_FILES crypto/Makefile" ;; >- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; >- "po/Makefile" ) CONFIG_FILES="$CONFIG_FILES po/Makefile" ;; >- "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; >- "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; >- "decNumber/Makefile" ) CONFIG_FILES="$CONFIG_FILES decNumber/Makefile" ;; >- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; >- "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; >- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; >- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 >-echo "$as_me: error: invalid argument: $ac_config_target" >&2;} >- { (exit 1); exit 1; }; };; >- esac >-done >- >-# If the user did not use the arguments to specify the items to instantiate, >-# then the envvar interface is used. Set only those that are not. >-# We use the long form for the default assignment because of an extremely >-# bizarre bug on SunOS 4.1.3. >-if $ac_need_defaults; then >- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files >- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers >- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands >-fi >- >-# Have a temporary directory for convenience. Make it in the build tree >-# simply because there is no reason to put it here, and in addition, >-# creating and moving files from /tmp can sometimes cause problems. >-# Create a temporary directory, and hook for its removal unless debugging. >-$debug || >-{ >- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 >- trap '{ (exit 1); exit 1; }' 1 2 13 15 >-} >- >-# Create a (secure) tmp directory for tmp files. >- >-{ >- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && >- test -n "$tmp" && test -d "$tmp" >-} || >-{ >- tmp=./confstat$$-$RANDOM >- (umask 077 && mkdir $tmp) >-} || >-{ >- echo "$me: cannot create a temporary directory in ." >&2 >- { (exit 1); exit 1; } >-} >- >-_ACEOF >- >-cat >>$CONFIG_STATUS <<_ACEOF >- >-# >-# CONFIG_FILES section. >-# >- >-# No need to generate the scripts if there are no CONFIG_FILES. >-# This happens for instance when ./config.status config.h >-if test -n "\$CONFIG_FILES"; then >- # Protect against being on the right side of a sed subst in config.status. >- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; >- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF >-s,@SHELL@,$SHELL,;t t >-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t >-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t >-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t >-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t >-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t >-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t >-s,@exec_prefix@,$exec_prefix,;t t >-s,@prefix@,$prefix,;t t >-s,@program_transform_name@,$program_transform_name,;t t >-s,@bindir@,$bindir,;t t >-s,@sbindir@,$sbindir,;t t >-s,@libexecdir@,$libexecdir,;t t >-s,@datadir@,$datadir,;t t >-s,@sysconfdir@,$sysconfdir,;t t >-s,@sharedstatedir@,$sharedstatedir,;t t >-s,@localstatedir@,$localstatedir,;t t >-s,@libdir@,$libdir,;t t >-s,@includedir@,$includedir,;t t >-s,@oldincludedir@,$oldincludedir,;t t >-s,@infodir@,$infodir,;t t >-s,@mandir@,$mandir,;t t >-s,@build_alias@,$build_alias,;t t >-s,@host_alias@,$host_alias,;t t >-s,@target_alias@,$target_alias,;t t >-s,@DEFS@,$DEFS,;t t >-s,@ECHO_C@,$ECHO_C,;t t >-s,@ECHO_N@,$ECHO_N,;t t >-s,@ECHO_T@,$ECHO_T,;t t >-s,@LIBS@,$LIBS,;t t >-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t >-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t >-s,@INSTALL_DATA@,$INSTALL_DATA,;t t >-s,@CYGPATH_W@,$CYGPATH_W,;t t >-s,@PACKAGE@,$PACKAGE,;t t >-s,@VERSION@,$VERSION,;t t >-s,@ACLOCAL@,$ACLOCAL,;t t >-s,@AUTOCONF@,$AUTOCONF,;t t >-s,@AUTOMAKE@,$AUTOMAKE,;t t >-s,@AUTOHEADER@,$AUTOHEADER,;t t >-s,@MAKEINFO@,$MAKEINFO,;t t >-s,@install_sh@,$install_sh,;t t >-s,@STRIP@,$STRIP,;t t >-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t >-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t >-s,@mkdir_p@,$mkdir_p,;t t >-s,@AWK@,$AWK,;t t >-s,@SET_MAKE@,$SET_MAKE,;t t >-s,@am__leading_dot@,$am__leading_dot,;t t >-s,@AMTAR@,$AMTAR,;t t >-s,@am__tar@,$am__tar,;t t >-s,@am__untar@,$am__untar,;t t >-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t >-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t >-s,@MAINT@,$MAINT,;t t >-s,@build@,$build,;t t >-s,@build_cpu@,$build_cpu,;t t >-s,@build_vendor@,$build_vendor,;t t >-s,@build_os@,$build_os,;t t >-s,@host@,$host,;t t >-s,@host_cpu@,$host_cpu,;t t >-s,@host_vendor@,$host_vendor,;t t >-s,@host_os@,$host_os,;t t >-s,@CC@,$CC,;t t >-s,@CFLAGS@,$CFLAGS,;t t >-s,@LDFLAGS@,$LDFLAGS,;t t >-s,@CPPFLAGS@,$CPPFLAGS,;t t >-s,@ac_ct_CC@,$ac_ct_CC,;t t >-s,@EXEEXT@,$EXEEXT,;t t >-s,@OBJEXT@,$OBJEXT,;t t >-s,@DEPDIR@,$DEPDIR,;t t >-s,@am__include@,$am__include,;t t >-s,@am__quote@,$am__quote,;t t >-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t >-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t >-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t >-s,@CCDEPMODE@,$CCDEPMODE,;t t >-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t >-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t >-s,@modexecdir@,$modexecdir,;t t >-s,@EGREP@,$EGREP,;t t >-s,@LN_S@,$LN_S,;t t >-s,@ECHO@,$ECHO,;t t >-s,@AR@,$AR,;t t >-s,@ac_ct_AR@,$ac_ct_AR,;t t >-s,@RANLIB@,$RANLIB,;t t >-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t >-s,@DLLTOOL@,$DLLTOOL,;t t >-s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t >-s,@AS@,$AS,;t t >-s,@ac_ct_AS@,$ac_ct_AS,;t t >-s,@OBJDUMP@,$OBJDUMP,;t t >-s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t >-s,@CPP@,$CPP,;t t >-s,@CXX@,$CXX,;t t >-s,@CXXFLAGS@,$CXXFLAGS,;t t >-s,@ac_ct_CXX@,$ac_ct_CXX,;t t >-s,@CXXDEPMODE@,$CXXDEPMODE,;t t >-s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t >-s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t >-s,@CXXCPP@,$CXXCPP,;t t >-s,@F77@,$F77,;t t >-s,@FFLAGS@,$FFLAGS,;t t >-s,@ac_ct_F77@,$ac_ct_F77,;t t >-s,@LIBTOOL@,$LIBTOOL,;t t >-s,@INSTALL_LTDL_TRUE@,$INSTALL_LTDL_TRUE,;t t >-s,@INSTALL_LTDL_FALSE@,$INSTALL_LTDL_FALSE,;t t >-s,@CONVENIENCE_LTDL_TRUE@,$CONVENIENCE_LTDL_TRUE,;t t >-s,@CONVENIENCE_LTDL_FALSE@,$CONVENIENCE_LTDL_FALSE,;t t >-s,@LIBADD_DL@,$LIBADD_DL,;t t >-s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t >-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t >-s,@USE_NLS@,$USE_NLS,;t t >-s,@MSGFMT@,$MSGFMT,;t t >-s,@GMSGFMT@,$GMSGFMT,;t t >-s,@XGETTEXT@,$XGETTEXT,;t t >-s,@MSGMERGE@,$MSGMERGE,;t t >-s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t >-s,@LIBICONV@,$LIBICONV,;t t >-s,@LTLIBICONV@,$LTLIBICONV,;t t >-s,@INTLLIBS@,$INTLLIBS,;t t >-s,@LIBINTL@,$LIBINTL,;t t >-s,@LTLIBINTL@,$LTLIBINTL,;t t >-s,@POSUB@,$POSUB,;t t >-s,@OPTION_DYNAMIC_LOAD_TRUE@,$OPTION_DYNAMIC_LOAD_TRUE,;t t >-s,@OPTION_DYNAMIC_LOAD_FALSE@,$OPTION_DYNAMIC_LOAD_FALSE,;t t >-s,@BUILD_FTHREADS_TRUE@,$BUILD_FTHREADS_TRUE,;t t >-s,@BUILD_FTHREADS_FALSE@,$BUILD_FTHREADS_FALSE,;t t >-s,@BUILD_FISHHANG_TRUE@,$BUILD_FISHHANG_TRUE,;t t >-s,@BUILD_FISHHANG_FALSE@,$BUILD_FISHHANG_FALSE,;t t >-s,@BUILD_HERCIFC_TRUE@,$BUILD_HERCIFC_TRUE,;t t >-s,@BUILD_HERCIFC_FALSE@,$BUILD_HERCIFC_FALSE,;t t >-s,@SETUID_HERCIFC_TRUE@,$SETUID_HERCIFC_TRUE,;t t >-s,@SETUID_HERCIFC_FALSE@,$SETUID_HERCIFC_FALSE,;t t >-s,@BUILD_SHARED_TRUE@,$BUILD_SHARED_TRUE,;t t >-s,@BUILD_SHARED_FALSE@,$BUILD_SHARED_FALSE,;t t >-s,@USE_DLLTOOL_TRUE@,$USE_DLLTOOL_TRUE,;t t >-s,@USE_DLLTOOL_FALSE@,$USE_DLLTOOL_FALSE,;t t >-s,@LIBOBJS@,$LIBOBJS,;t t >-s,@LTLIBOBJS@,$LTLIBOBJS,;t t >-CEOF >- >-_ACEOF >- >- cat >>$CONFIG_STATUS <<\_ACEOF >- # Split the substitutions into bite-sized pieces for seds with >- # small command number limits, like on Digital OSF/1 and HP-UX. >- ac_max_sed_lines=48 >- ac_sed_frag=1 # Number of current file. >- ac_beg=1 # First line for current file. >- ac_end=$ac_max_sed_lines # Line after last line for current file. >- ac_more_lines=: >- ac_sed_cmds= >- while $ac_more_lines; do >- if test $ac_beg -gt 1; then >- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag >- else >- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag >- fi >- if test ! -s $tmp/subs.frag; then >- ac_more_lines=false >- else >- # The purpose of the label and of the branching condition is to >- # speed up the sed processing (if there are no `@' at all, there >- # is no need to browse any of the substitutions). >- # These are the two extra sed commands mentioned above. >- (echo ':t >- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed >- if test -z "$ac_sed_cmds"; then >- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" >- else >- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" >- fi >- ac_sed_frag=`expr $ac_sed_frag + 1` >- ac_beg=$ac_end >- ac_end=`expr $ac_end + $ac_max_sed_lines` >- fi >- done >- if test -z "$ac_sed_cmds"; then >- ac_sed_cmds=cat >- fi >-fi # test -n "$CONFIG_FILES" >- >-_ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue >- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". >- case $ac_file in >- - | *:- | *:-:* ) # input from stdin >- cat >$tmp/stdin >- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` >- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; >- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` >- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; >- * ) ac_file_in=$ac_file.in ;; >- esac >- >- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. >- ac_dir=`(dirname "$ac_file") 2>/dev/null || >-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$ac_file" : 'X\(//\)[^/]' \| \ >- X"$ac_file" : 'X\(//\)$' \| \ >- X"$ac_file" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$ac_file" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- { if $as_mkdir_p; then >- mkdir -p "$ac_dir" >- else >- as_dir="$ac_dir" >- as_dirs= >- while test ! -d "$as_dir"; do >- as_dirs="$as_dir $as_dirs" >- as_dir=`(dirname "$as_dir") 2>/dev/null || >-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$as_dir" : 'X\(//\)[^/]' \| \ >- X"$as_dir" : 'X\(//\)$' \| \ >- X"$as_dir" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$as_dir" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- done >- test ! -n "$as_dirs" || mkdir $as_dirs >- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 >-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} >- { (exit 1); exit 1; }; }; } >- >- ac_builddir=. >- >-if test "$ac_dir" != .; then >- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` >- # A "../" for each directory in $ac_dir_suffix. >- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` >-else >- ac_dir_suffix= ac_top_builddir= >-fi >- >-case $srcdir in >- .) # No --srcdir option. We are building in place. >- ac_srcdir=. >- if test -z "$ac_top_builddir"; then >- ac_top_srcdir=. >- else >- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` >- fi ;; >- [\\/]* | ?:[\\/]* ) # Absolute path. >- ac_srcdir=$srcdir$ac_dir_suffix; >- ac_top_srcdir=$srcdir ;; >- *) # Relative path. >- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix >- ac_top_srcdir=$ac_top_builddir$srcdir ;; >-esac >- >-# Do not use `cd foo && pwd` to compute absolute paths, because >-# the directories may not exist. >-case `pwd` in >-.) ac_abs_builddir="$ac_dir";; >-*) >- case "$ac_dir" in >- .) ac_abs_builddir=`pwd`;; >- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; >- *) ac_abs_builddir=`pwd`/"$ac_dir";; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_top_builddir=${ac_top_builddir}.;; >-*) >- case ${ac_top_builddir}. in >- .) ac_abs_top_builddir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; >- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_srcdir=$ac_srcdir;; >-*) >- case $ac_srcdir in >- .) ac_abs_srcdir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; >- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_top_srcdir=$ac_top_srcdir;; >-*) >- case $ac_top_srcdir in >- .) ac_abs_top_srcdir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; >- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; >- esac;; >-esac >- >- >- case $INSTALL in >- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; >- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; >- esac >- >- if test x"$ac_file" != x-; then >- { echo "$as_me:$LINENO: creating $ac_file" >&5 >-echo "$as_me: creating $ac_file" >&6;} >- rm -f "$ac_file" >- fi >- # Let's still pretend it is `configure' which instantiates (i.e., don't >- # use $as_me), people would be surprised to read: >- # /* config.h. Generated by config.status. */ >- if test x"$ac_file" = x-; then >- configure_input= >- else >- configure_input="$ac_file. " >- fi >- configure_input=$configure_input"Generated from `echo $ac_file_in | >- sed 's,.*/,,'` by configure." >- >- # First look for the input files in the build tree, otherwise in the >- # src tree. >- ac_file_inputs=`IFS=: >- for f in $ac_file_in; do >- case $f in >- -) echo $tmp/stdin ;; >- [\\/$]*) >- # Absolute (can't be DOS-style, as IFS=:) >- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 >-echo "$as_me: error: cannot find input file: $f" >&2;} >- { (exit 1); exit 1; }; } >- echo "$f";; >- *) # Relative >- if test -f "$f"; then >- # Build tree >- echo "$f" >- elif test -f "$srcdir/$f"; then >- # Source tree >- echo "$srcdir/$f" >- else >- # /dev/null tree >- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 >-echo "$as_me: error: cannot find input file: $f" >&2;} >- { (exit 1); exit 1; }; } >- fi;; >- esac >- done` || { (exit 1); exit 1; } >-_ACEOF >-cat >>$CONFIG_STATUS <<_ACEOF >- sed "$ac_vpsub >-$extrasub >-_ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >-:t >-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b >-s,@configure_input@,$configure_input,;t t >-s,@srcdir@,$ac_srcdir,;t t >-s,@abs_srcdir@,$ac_abs_srcdir,;t t >-s,@top_srcdir@,$ac_top_srcdir,;t t >-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t >-s,@builddir@,$ac_builddir,;t t >-s,@abs_builddir@,$ac_abs_builddir,;t t >-s,@top_builddir@,$ac_top_builddir,;t t >-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t >-s,@INSTALL@,$ac_INSTALL,;t t >-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out >- rm -f $tmp/stdin >- if test x"$ac_file" != x-; then >- mv $tmp/out $ac_file >- else >- cat $tmp/out >- rm -f $tmp/out >- fi >- >-done >-_ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >- >-# >-# CONFIG_HEADER section. >-# >- >-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where >-# NAME is the cpp macro being defined and VALUE is the value it is being given. >-# >-# ac_d sets the value in "#define NAME VALUE" lines. >-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' >-ac_dB='[ ].*$,\1#\2' >-ac_dC=' ' >-ac_dD=',;t' >-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". >-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' >-ac_uB='$,\1#\2define\3' >-ac_uC=' ' >-ac_uD=',;t' >- >-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue >- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". >- case $ac_file in >- - | *:- | *:-:* ) # input from stdin >- cat >$tmp/stdin >- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` >- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; >- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` >- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; >- * ) ac_file_in=$ac_file.in ;; >- esac >- >- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 >-echo "$as_me: creating $ac_file" >&6;} >- >- # First look for the input files in the build tree, otherwise in the >- # src tree. >- ac_file_inputs=`IFS=: >- for f in $ac_file_in; do >- case $f in >- -) echo $tmp/stdin ;; >- [\\/$]*) >- # Absolute (can't be DOS-style, as IFS=:) >- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 >-echo "$as_me: error: cannot find input file: $f" >&2;} >- { (exit 1); exit 1; }; } >- # Do quote $f, to prevent DOS paths from being IFS'd. >- echo "$f";; >- *) # Relative >- if test -f "$f"; then >- # Build tree >- echo "$f" >- elif test -f "$srcdir/$f"; then >- # Source tree >- echo "$srcdir/$f" >- else >- # /dev/null tree >- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 >-echo "$as_me: error: cannot find input file: $f" >&2;} >- { (exit 1); exit 1; }; } >- fi;; >- esac >- done` || { (exit 1); exit 1; } >- # Remove the trailing spaces. >- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in >- >-_ACEOF >- >-# Transform confdefs.h into two sed scripts, `conftest.defines' and >-# `conftest.undefs', that substitutes the proper values into >-# config.h.in to produce config.h. The first handles `#define' >-# templates, and the second `#undef' templates. >-# And first: Protect against being on the right side of a sed subst in >-# config.status. Protect against being in an unquoted here document >-# in config.status. >-rm -f conftest.defines conftest.undefs >-# Using a here document instead of a string reduces the quoting nightmare. >-# Putting comments in sed scripts is not portable. >-# >-# `end' is used to avoid that the second main sed command (meant for >-# 0-ary CPP macros) applies to n-ary macro definitions. >-# See the Autoconf documentation for `clear'. >-cat >confdef2sed.sed <<\_ACEOF >-s/[\\&,]/\\&/g >-s,[\\$`],\\&,g >-t clear >-: clear >-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp >-t end >-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp >-: end >-_ACEOF >-# If some macros were called several times there might be several times >-# the same #defines, which is useless. Nevertheless, we may not want to >-# sort them, since we want the *last* AC-DEFINE to be honored. >-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines >-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs >-rm -f confdef2sed.sed >- >-# This sed command replaces #undef with comments. This is necessary, for >-# example, in the case of _POSIX_SOURCE, which is predefined and required >-# on some systems where configure will not decide to define it. >-cat >>conftest.undefs <<\_ACEOF >-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, >-_ACEOF >- >-# Break up conftest.defines because some shells have a limit on the size >-# of here documents, and old seds have small limits too (100 cmds). >-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS >-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS >-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS >-echo ' :' >>$CONFIG_STATUS >-rm -f conftest.tail >-while grep . conftest.defines >/dev/null >-do >- # Write a limited-size here document to $tmp/defines.sed. >- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS >- # Speed up: don't consider the non `#define' lines. >- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS >- # Work around the forget-to-reset-the-flag bug. >- echo 't clr' >>$CONFIG_STATUS >- echo ': clr' >>$CONFIG_STATUS >- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS >- echo 'CEOF >- sed -f $tmp/defines.sed $tmp/in >$tmp/out >- rm -f $tmp/in >- mv $tmp/out $tmp/in >-' >>$CONFIG_STATUS >- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail >- rm -f conftest.defines >- mv conftest.tail conftest.defines >-done >-rm -f conftest.defines >-echo ' fi # grep' >>$CONFIG_STATUS >-echo >>$CONFIG_STATUS >- >-# Break up conftest.undefs because some shells have a limit on the size >-# of here documents, and old seds have small limits too (100 cmds). >-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS >-rm -f conftest.tail >-while grep . conftest.undefs >/dev/null >-do >- # Write a limited-size here document to $tmp/undefs.sed. >- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS >- # Speed up: don't consider the non `#undef' >- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS >- # Work around the forget-to-reset-the-flag bug. >- echo 't clr' >>$CONFIG_STATUS >- echo ': clr' >>$CONFIG_STATUS >- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS >- echo 'CEOF >- sed -f $tmp/undefs.sed $tmp/in >$tmp/out >- rm -f $tmp/in >- mv $tmp/out $tmp/in >-' >>$CONFIG_STATUS >- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail >- rm -f conftest.undefs >- mv conftest.tail conftest.undefs >-done >-rm -f conftest.undefs >- >-cat >>$CONFIG_STATUS <<\_ACEOF >- # Let's still pretend it is `configure' which instantiates (i.e., don't >- # use $as_me), people would be surprised to read: >- # /* config.h. Generated by config.status. */ >- if test x"$ac_file" = x-; then >- echo "/* Generated by configure. */" >$tmp/config.h >- else >- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h >- fi >- cat $tmp/in >>$tmp/config.h >- rm -f $tmp/in >- if test x"$ac_file" != x-; then >- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then >- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 >-echo "$as_me: $ac_file is unchanged" >&6;} >- else >- ac_dir=`(dirname "$ac_file") 2>/dev/null || >-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$ac_file" : 'X\(//\)[^/]' \| \ >- X"$ac_file" : 'X\(//\)$' \| \ >- X"$ac_file" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$ac_file" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- { if $as_mkdir_p; then >- mkdir -p "$ac_dir" >- else >- as_dir="$ac_dir" >- as_dirs= >- while test ! -d "$as_dir"; do >- as_dirs="$as_dir $as_dirs" >- as_dir=`(dirname "$as_dir") 2>/dev/null || >-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$as_dir" : 'X\(//\)[^/]' \| \ >- X"$as_dir" : 'X\(//\)$' \| \ >- X"$as_dir" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$as_dir" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- done >- test ! -n "$as_dirs" || mkdir $as_dirs >- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 >-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} >- { (exit 1); exit 1; }; }; } >- >- rm -f $ac_file >- mv $tmp/config.h $ac_file >- fi >- else >- cat $tmp/config.h >- rm -f $tmp/config.h >- fi >-# Compute $ac_file's index in $config_headers. >-_am_stamp_count=1 >-for _am_header in $config_headers :; do >- case $_am_header in >- $ac_file | $ac_file:* ) >- break ;; >- * ) >- _am_stamp_count=`expr $_am_stamp_count + 1` ;; >- esac >-done >-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || >-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X$ac_file : 'X\(//\)[^/]' \| \ >- X$ac_file : 'X\(//\)$' \| \ >- X$ac_file : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X$ac_file | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'`/stamp-h$_am_stamp_count >-done >-_ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >- >-# >-# CONFIG_COMMANDS section. >-# >-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue >- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` >- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` >- ac_dir=`(dirname "$ac_dest") 2>/dev/null || >-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$ac_dest" : 'X\(//\)[^/]' \| \ >- X"$ac_dest" : 'X\(//\)$' \| \ >- X"$ac_dest" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$ac_dest" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- { if $as_mkdir_p; then >- mkdir -p "$ac_dir" >- else >- as_dir="$ac_dir" >- as_dirs= >- while test ! -d "$as_dir"; do >- as_dirs="$as_dir $as_dirs" >- as_dir=`(dirname "$as_dir") 2>/dev/null || >-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$as_dir" : 'X\(//\)[^/]' \| \ >- X"$as_dir" : 'X\(//\)$' \| \ >- X"$as_dir" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$as_dir" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- done >- test ! -n "$as_dirs" || mkdir $as_dirs >- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 >-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} >- { (exit 1); exit 1; }; }; } >- >- ac_builddir=. >- >-if test "$ac_dir" != .; then >- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` >- # A "../" for each directory in $ac_dir_suffix. >- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` >-else >- ac_dir_suffix= ac_top_builddir= >-fi >- >-case $srcdir in >- .) # No --srcdir option. We are building in place. >- ac_srcdir=. >- if test -z "$ac_top_builddir"; then >- ac_top_srcdir=. >- else >- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` >- fi ;; >- [\\/]* | ?:[\\/]* ) # Absolute path. >- ac_srcdir=$srcdir$ac_dir_suffix; >- ac_top_srcdir=$srcdir ;; >- *) # Relative path. >- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix >- ac_top_srcdir=$ac_top_builddir$srcdir ;; >-esac >- >-# Do not use `cd foo && pwd` to compute absolute paths, because >-# the directories may not exist. >-case `pwd` in >-.) ac_abs_builddir="$ac_dir";; >-*) >- case "$ac_dir" in >- .) ac_abs_builddir=`pwd`;; >- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; >- *) ac_abs_builddir=`pwd`/"$ac_dir";; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_top_builddir=${ac_top_builddir}.;; >-*) >- case ${ac_top_builddir}. in >- .) ac_abs_top_builddir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; >- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_srcdir=$ac_srcdir;; >-*) >- case $ac_srcdir in >- .) ac_abs_srcdir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; >- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; >- esac;; >-esac >-case $ac_abs_builddir in >-.) ac_abs_top_srcdir=$ac_top_srcdir;; >-*) >- case $ac_top_srcdir in >- .) ac_abs_top_srcdir=$ac_abs_builddir;; >- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; >- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; >- esac;; >-esac >- >- >- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 >-echo "$as_me: executing $ac_dest commands" >&6;} >- case $ac_dest in >- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do >- # Strip MF so we end up with the name of the file. >- mf=`echo "$mf" | sed -e 's/:.*$//'` >- # Check whether this is an Automake generated Makefile or not. >- # We used to match only the files named `Makefile.in', but >- # some people rename them; so instead we look at the file content. >- # Grep'ing the first line is not enough: some people post-process >- # each Makefile.in and add a new line on top of each file to say so. >- # So let's grep whole file. >- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then >- dirpart=`(dirname "$mf") 2>/dev/null || >-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$mf" : 'X\(//\)[^/]' \| \ >- X"$mf" : 'X\(//\)$' \| \ >- X"$mf" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$mf" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- else >- continue >- fi >- # Extract the definition of DEPDIR, am__include, and am__quote >- # from the Makefile without running `make'. >- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` >- test -z "$DEPDIR" && continue >- am__include=`sed -n 's/^am__include = //p' < "$mf"` >- test -z "am__include" && continue >- am__quote=`sed -n 's/^am__quote = //p' < "$mf"` >- # When using ansi2knr, U may be empty or an underscore; expand it >- U=`sed -n 's/^U = //p' < "$mf"` >- # Find all dependency output files, they are included files with >- # $(DEPDIR) in their names. We invoke sed twice because it is the >- # simplest approach to changing $(DEPDIR) to its actual value in the >- # expansion. >- for file in `sed -n " >- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ >- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do >- # Make sure the directory exists. >- test -f "$dirpart/$file" && continue >- fdir=`(dirname "$file") 2>/dev/null || >-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$file" : 'X\(//\)[^/]' \| \ >- X"$file" : 'X\(//\)$' \| \ >- X"$file" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$file" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- { if $as_mkdir_p; then >- mkdir -p $dirpart/$fdir >- else >- as_dir=$dirpart/$fdir >- as_dirs= >- while test ! -d "$as_dir"; do >- as_dirs="$as_dir $as_dirs" >- as_dir=`(dirname "$as_dir") 2>/dev/null || >-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$as_dir" : 'X\(//\)[^/]' \| \ >- X"$as_dir" : 'X\(//\)$' \| \ >- X"$as_dir" : 'X\(/\)' \| \ >- . : '\(.\)' 2>/dev/null || >-echo X"$as_dir" | >- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } >- /^X\(\/\/\)[^/].*/{ s//\1/; q; } >- /^X\(\/\/\)$/{ s//\1/; q; } >- /^X\(\/\).*/{ s//\1/; q; } >- s/.*/./; q'` >- done >- test ! -n "$as_dirs" || mkdir $as_dirs >- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 >-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} >- { (exit 1); exit 1; }; }; } >- >- # echo "creating $dirpart/$file" >- echo '# dummy' > "$dirpart/$file" >- done >-done >- ;; >- default-1 ) >- for ac_file in $CONFIG_FILES; do >- # Support "outfile[:infile[:infile...]]" >- case "$ac_file" in >- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; >- esac >- # PO directories have a Makefile.in generated from Makefile.in.in. >- case "$ac_file" in */Makefile.in) >- # Adjust a relative srcdir. >- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` >- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" >- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` >- # In autoconf-2.13 it is called $ac_given_srcdir. >- # In autoconf-2.50 it is called $srcdir. >- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" >- case "$ac_given_srcdir" in >- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; >- /*) top_srcdir="$ac_given_srcdir" ;; >- *) top_srcdir="$ac_dots$ac_given_srcdir" ;; >- esac >- # Treat a directory as a PO directory if and only if it has a >- # POTFILES.in file. This allows packages to have multiple PO >- # directories under different names or in different locations. >- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then >- rm -f "$ac_dir/POTFILES" >- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" >- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" >- POMAKEFILEDEPS="POTFILES.in" >- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend >- # on $ac_dir but don't depend on user-specified configuration >- # parameters. >- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then >- # The LINGUAS file contains the set of available languages. >- if test -n "$OBSOLETE_ALL_LINGUAS"; then >- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" >- fi >- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` >- # Hide the ALL_LINGUAS assigment from automake. >- eval 'ALL_LINGUAS''=$ALL_LINGUAS_' >- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" >- else >- # The set of available languages was given in configure.in. >- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' >- fi >- # Compute POFILES >- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) >- # Compute UPDATEPOFILES >- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) >- # Compute DUMMYPOFILES >- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) >- # Compute GMOFILES >- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) >- case "$ac_given_srcdir" in >- .) srcdirpre= ;; >- *) srcdirpre='$(srcdir)/' ;; >- esac >- POFILES= >- UPDATEPOFILES= >- DUMMYPOFILES= >- GMOFILES= >- for lang in $ALL_LINGUAS; do >- POFILES="$POFILES $srcdirpre$lang.po" >- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" >- DUMMYPOFILES="$DUMMYPOFILES $lang.nop" >- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" >- done >- # CATALOGS depends on both $ac_dir and the user's LINGUAS >- # environment variable. >- INST_LINGUAS= >- if test -n "$ALL_LINGUAS"; then >- for presentlang in $ALL_LINGUAS; do >- useit=no >- if test "%UNSET%" != "$LINGUAS"; then >- desiredlanguages="$LINGUAS" >- else >- desiredlanguages="$ALL_LINGUAS" >- fi >- for desiredlang in $desiredlanguages; do >- # Use the presentlang catalog if desiredlang is >- # a. equal to presentlang, or >- # b. a variant of presentlang (because in this case, >- # presentlang can be used as a fallback for messages >- # which are not translated in the desiredlang catalog). >- case "$desiredlang" in >- "$presentlang"*) useit=yes;; >- esac >- done >- if test $useit = yes; then >- INST_LINGUAS="$INST_LINGUAS $presentlang" >- fi >- done >- fi >- CATALOGS= >- if test -n "$INST_LINGUAS"; then >- for lang in $INST_LINGUAS; do >- CATALOGS="$CATALOGS $lang.gmo" >- done >- fi >- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" >- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" >- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do >- if test -f "$f"; then >- case "$f" in >- *.orig | *.bak | *~) ;; >- *) cat "$f" >> "$ac_dir/Makefile" ;; >- esac >- fi >- done >- fi >- ;; >- esac >- done ;; >- esac >-done >-_ACEOF >- >-cat >>$CONFIG_STATUS <<\_ACEOF >- >-{ (exit 0); exit 0; } >-_ACEOF >-chmod +x $CONFIG_STATUS >-ac_clean_files=$ac_clean_files_save >- >- >-# configure is writing to config.log, and then calls config.status. >-# config.status does its own redirection, appending to config.log. >-# Unfortunately, on DOS this fails, as config.log is still kept open >-# by configure, so config.status won't be able to write to it; its >-# output is simply discarded. So we exec the FD to /dev/null, >-# effectively closing config.log, so it can be properly (re)opened and >-# appended to by config.status. When coming back to configure, we >-# need to make the FD available again. >-if test "$no_create" != yes; then >- ac_cs_success=: >- ac_config_status_args= >- test "$silent" = yes && >- ac_config_status_args="$ac_config_status_args --quiet" >- exec 5>/dev/null >- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false >- exec 5>>config.log >- # Use ||, not &&, to avoid exiting from the if with $? = 1, which >- # would make configure fail if this is the last instruction. >- $ac_cs_success || { (exit 1); exit 1; } >-fi >- >- >-############################################################################### >-# (end-of-file) >-############################################################################### >diff -Naupr hercules-3.05/configure.ac hercules-20070717/configure.ac >--- hercules-3.05/configure.ac 2007-06-24 06:17:15.000000000 +0200 >+++ hercules-20070717/configure.ac 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > # CONFIGURE.AC: Process this file with AutoConf to produce a configure script. > ############################################################################### > >-# $Id: configure.ac,v 1.193 2007/06/24 04:17:15 jmaynard Exp $ >+# $Id: configure.ac,v 1.197 2008/03/25 11:41:31 fish Exp $ > > # AC is AutoConfigure, AM is AutoMake, and AH is AutoHeader. The > # 'HC_XXXX..' macros are custom Hercules autoconf macros defined >@@ -32,6 +32,23 @@ > ############################################################################### > > # $Log: configure.ac,v $ >+# Revision 1.197 2008/03/25 11:41:31 fish >+# SCSI TAPE MODS part 1: groundwork: non-functional changes: >+# rename some functions, comments, general restructuring, etc. >+# New source modules awstape.c, omatape.c, hettape.c and >+# tapeccws.c added, but not yet used (all will be used in a future >+# commit though when tapedev.c code is eventually split) >+# >+# Revision 1.196 2008/03/10 15:10:46 rbowler >+# Add -lpthread to link options for Solaris 2.9 >+# >+# Revision 1.195 2008/02/19 11:49:18 ivan >+# - Move setting of CPU priority after spwaning timer thread >+# - Added support for Posix 1003.1e capabilities >+# >+# Revision 1.194 2008/02/15 23:24:32 rbowler >+# Add -lrt to link options for Solaris >+# > # Revision 1.193 2007/06/24 04:17:15 jmaynard > # Grumble. Missed the version tag in the MSVC build. Fixed. > # >@@ -46,7 +63,7 @@ > # > > AC_INIT(hercules.h) # (package, version, bugreport email, etc) >-AC_REVISION($Revision: 1.193 $) # (the version of this configure.ac) >+AC_REVISION($Revision: 1.197 $) # (the version of this configure.ac) > AC_CONFIG_AUX_DIR(autoconf) # (directory containing auxillary build tools) > AM_INIT_AUTOMAKE(hercules,3.05) # (the version of our software package) > # Don't forget to change it in msvc.makefile.includes/VERSION.msvc, too! >@@ -305,6 +322,7 @@ AH_TEMPLATE( [_INTL_REDIRECT_MACROS], > > AH_TEMPLATE( [CCKD_BZIP2], [Define to enable bzip2 compression in emulated DASDs] ) > AH_TEMPLATE( [HET_BZIP2], [Define to enable bzip2 compression in emulated tapes] ) >+AH_TEMPLATE( [OPTION_CAPABILITIES], [Define to enable posix draft 1003.1e capabilities] ) > > ############################################################################### > # OS-specific settings that we can't figure out any other way (yet) >@@ -556,6 +574,8 @@ AC_CHECK_HEADERS( signal.h, [hc_cv > AC_CHECK_HEADERS( termios.h, [hc_cv_have_termios_h=yes], [hc_cv_have_termios_h=no] ) > AC_CHECK_HEADERS( time.h, [hc_cv_have_time_h=yes], [hc_cv_have_time_h=no] ) > AC_CHECK_HEADERS( zlib.h, [hc_cv_have_zlib_h=yes], [hc_cv_have_zlib_h=no] ) >+AC_CHECK_HEADERS( sys/capability.h, [hc_cv_have_sys_capa_h=yes], [hc_cv_have_sys_capa_h=no] ) >+AC_CHECK_HEADERS( sys/prctl.h, [hc_cv_have_sys_prctl_h=yes], [hc_cv_have_sys_prctl_h=no] ) > > AC_CACHE_SAVE() > >@@ -595,6 +615,12 @@ AC_CHECK_DECLS( SIOCADDRT, [h > AC_CHECK_DECLS( SIOCDELRT, [hc_cv_have_siocdelrt=yes], [hc_cv_have_siocdelrt=no], [#include <linux/sockios.h>] ) > AC_CHECK_DECLS( SIOCDIFADDR, [hc_cv_have_siocdifaddr=yes], [hc_cv_have_siocdifaddr=no], [#include <linux/sockios.h>] ) > >+if test "$hc_cv_have_sys_mtio_h" == "yes"; then >+ AC_CHECK_DECLS( MTEWARN, [hc_cv_have_mtewarn=yes], [hc_cv_have_mtewarn=no], [#include <sys/mtio.h>] ) >+else >+ hc_cv_have_mtewarn=no >+fi >+ > AC_CACHE_SAVE() > > ############################################################################### >@@ -675,6 +701,10 @@ AC_CHECK_LIB( bz2, BZ2_bzBuffToBuffDe > [ hc_cv_have_libbz2=yes ], > [ hc_cv_have_libbz2=no ] ) > AC_CHECK_LIB( iconv, iconv ) >+# jbs 10/15/2003 Solaris requires -lrt for sched_yield() and fdatasync() >+AC_CHECK_LIB( rt, sched_yield ) >+# rbowler 2008/03/10 rev 1.196 Solaris 2.9 requires -lpthread >+AC_CHECK_LIB( pthread,pthread_create ) > > AC_CACHE_SAVE() > >@@ -1462,6 +1492,41 @@ AC_ARG_ENABLE( multi-cpu, > [hc_cv_opt_num_cpu_engines=8] > ) > >+AC_ARG_ENABLE( capabilities, >+ >+ AC_HELP_STRING([--disable-capabilities], >+ >+ [disable fine grained privileges] >+ ), >+ [ >+ case "${enableval}" in >+ yes) hc_cv_opt_capabilities=yes ;; >+ no) hc_cv_opt_capabilities=no ;; >+ *) AC_MSG_RESULT( [ERROR: invalid 'capabilities' option] ) >+ hc_error=yes >+ ;; >+ esac >+ ], >+ [hc_cv_opt_capabilities=hc_cv_have_sys_capability] >+) >+ >+# only include libcap if needed >+if test "$hc_cv_opt_capabilities" = "yes"; then >+ AC_CHECK_LIB(cap,cap_set_proc) >+fi >+# Force disable capabilities support if library is missing >+if test "$ac_cv_lib_cap_cap_set_proc" = "no"; then >+ hc_cv_opt_capabilities="no" >+fi >+# Force disable capabilities support if sys/capability.h header is missing >+if test "$hc_cv_have_sys_capa_h" = "no"; then >+ hc_cv_opt_capabilities="no" >+fi >+# Force disable capabilities support if sys/prctl.h header is missing >+if test "$hc_cv_have_sys_prctl_h" = "no"; then >+ hc_cv_opt_capabilities="no" >+fi >+ > AC_ARG_ENABLE( custom, > > AC_HELP_STRING( [--enable-custom=STRING], >@@ -1905,6 +1970,7 @@ test "$hc_cv_have_getset_uid" > test "$hc_cv_asm_byteswap" != "yes" && AC_DEFINE(NO_ASM_BYTESWAP) > test "$hc_cv_non_unique_gettimeofday" = "yes" && AC_DEFINE(NON_UNIQUE_GETTIMEOFDAY) > test "$hc_cv_build_hercifc" = "yes" && AC_DEFINE(BUILD_HERCIFC) >+test "$hc_cv_opt_capabilities" = "yes" && AC_DEFINE(OPTION_CAPABILITIES) > > if test $hc_cv_have_sa_sigaction != yes || > test $hc_cv_have_sigusr1 != yes || >diff -Naupr hercules-3.05/console.c hercules-20070717/console.c >--- hercules-3.05/console.c 2007-06-23 18:13:54.000000000 +0200 >+++ hercules-20070717/console.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* CONSOLE.C (c)Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Console Device Handler */ > >-// $Id: console.c,v 1.93 2007/06/23 16:13:54 jmaynard Exp $ >+// $Id: console.c,v 1.94 2007/11/21 22:54:14 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for console */ >@@ -53,6 +53,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: console.c,v $ >+// Revision 1.94 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.93 2007/06/23 16:13:54 jmaynard > // Fixing two messages out of internationalization by removing redundant > // carriage returns. >@@ -2417,7 +2420,7 @@ static void > loc3270_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- *class = "DSP"; >+ BEGIN_DEVICE_CLASS_QUERY( "DSP", dev, class, buflen, buffer ); > > if (dev->connected) > { >@@ -2703,7 +2706,7 @@ static void > constty_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- *class = "CON"; >+ BEGIN_DEVICE_CLASS_QUERY( "CON", dev, class, buflen, buffer ); > > if (dev->connected) > { >diff -Naupr hercules-3.05/control.c hercules-20070717/control.c >--- hercules-3.05/control.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/control.c 2008-09-03 13:07:48.000000000 +0200 >@@ -4,7 +4,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: control.c,v 1.255 2007/06/23 00:04:05 ivan Exp $ >+// $Id: control.c,v 1.267 2008/05/06 22:15:42 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements all control instructions of the */ >@@ -31,6 +31,43 @@ > /*-------------------------------------------------------------------*/ > > // $Log: control.c,v $ >+// Revision 1.267 2008/05/06 22:15:42 rbowler >+// Fix warning: operation on `p1' may be undefined >+// >+// Revision 1.266 2008/04/11 14:28:00 bernard >+// Integrate regs->exrl into base Hercules code. >+// >+// Revision 1.265 2008/04/08 23:57:15 rbowler >+// Fix '#' : invalid character : possibly the result of a macro expansion >+// >+// Revision 1.264 2008/04/08 17:12:03 bernard >+// Added execute relative long instruction >+// >+// Revision 1.263 2008/03/16 00:09:57 rbowler >+// Add MVCOS instruction (part 2) >+// >+// Revision 1.262 2008/03/12 23:44:03 rbowler >+// Add MVCOS instruction (part 1) >+// >+// Revision 1.261 2008/02/28 22:05:57 ptl00 >+// Fix mode switch trace >+// >+// Revision 1.260 2008/02/23 00:18:28 ptl00 >+// Fix BSA pic06 in z/arch mode >+// >+// Revision 1.259 2008/02/20 23:45:54 ptl00 >+// Fix BSA pic06/05 >+// >+// Revision 1.258 2008/02/15 21:12:33 ptl00 >+// >+// Fix PC pic13 (higher pri than trace exceptions) >+// >+// Revision 1.257 2008/02/13 06:54:35 jj >+// *** empty log message *** >+// >+// Revision 1.256 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// > // Revision 1.255 2007/06/23 00:04:05 ivan > // Update copyright notices to include current year (2007) > // >@@ -319,9 +356,9 @@ CREG newcr12 = 0; > else > #endif /*defined(FEATURE_ESAME)*/ > { >- UPD_PSW_IA(regs, duct_reta & DUCT_IA31); > regs->psw.amode = (duct_reta & DUCT_AM31) ? 1 : 0; > regs->psw.AMASK = regs->psw.amode ? AMASK31 : AMASK24; >+ UPD_PSW_IA(regs, duct_reta & DUCT_IA31); > } > > /* Restore the PSW key mask from the DUCT */ >@@ -345,17 +382,22 @@ CREG newcr12 = 0; > ARCH_DEP(store_fullword_absolute) (duct_pkrp, ducto+36, regs); > #endif /*!defined(FEATURE_ESAME)*/ > >- /* Specification exception if the PSW is now invalid */ >- if ((regs->psw.IA & 1) >+ /* Specification exception if the PSW is now invalid. */ >+ /* (Since UPD_PSW_IA used above masks off inval bits */ >+ /* in psw.IA, test duct_reta for invalid bits). */ >+ if ((duct_reta & 1) > #if defined(FEATURE_ESAME) >- || (regs->psw.amode64 == 0 && regs->psw.amode == 1 >- && regs->psw.IA > 0x7FFFFFFF) > || (regs->psw.amode64 == 0 && regs->psw.amode == 0 >- && regs->psw.IA > 0x00FFFFFF)) >+ && (duct_reta & 0x7F000000))) > #else /*!defined(FEATURE_ESAME)*/ >- || (regs->psw.amode == 0 && regs->psw.IA > 0x00FFFFFF)) >+ || (regs->psw.amode == 0 && duct_reta > 0x00FFFFFF)) > #endif /*!defined(FEATURE_ESAME)*/ > { >+ /* program_interrupt will invoke INVALIDATE_AIA which */ >+ /* will apply address mask to psw.IA if aie valid. */ >+ regs->aie = NULL; >+ regs->psw.IA = duct_reta; >+ regs->psw.zeroilc = 1; > ARCH_DEP(program_interrupt) (regs, PGM_SPECIFICATION_EXCEPTION); > } > >@@ -1929,16 +1971,16 @@ U16 updated = 0; > m = n; > > /* Copy from operand beginning */ >- for (i = 0; i < m; i++) >+ for (i = 0; i < m; i++, p1++) > { >- regs->CR_L((r1 + i) & 0xF) = fetch_fw (p1++); >+ regs->CR_L((r1 + i) & 0xF) = fetch_fw (p1); > updated |= BIT((r1 + i) & 0xF); > } > > /* Copy from next page */ >- for ( ; i < n; i++) >+ for ( ; i < n; i++, p2++) > { >- regs->CR_L((r1 + i) & 0xF) = fetch_fw (p2++); >+ regs->CR_L((r1 + i) & 0xF) = fetch_fw (p2); > updated |= BIT((r1 + i) & 0xF); > } > >@@ -2516,6 +2558,114 @@ GREG l; > #endif /*defined(FEATURE_DUAL_ADDRESS_SPACE)*/ > > >+#if defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS) >+/*-------------------------------------------------------------------*/ >+/* C8x0 MVCOS - Move with Optional Specifications [SSF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(move_with_optional_specifications) >+{ >+int r3; /* Register number */ >+int b1, b2; /* Base register numbers */ >+VADR effective_addr1, >+ effective_addr2; /* Effective addresses */ >+int kbit1, kbit2, abit1, abit2; /* Key and AS validity bits */ >+int key1, key2; /* Access keys in bits 0-3 */ >+int asc1, asc2; /* AS controls (same as PSW) */ >+int cc; /* Condition code */ >+GREG len; /* Effective length */ >+int space1, space2; /* Address space modifiers */ >+ >+ SSF(inst, regs, b1, effective_addr1, b2, effective_addr2, r3); >+ >+ SIE_XC_INTERCEPT(regs); >+ >+ /* Program check if DAT is off */ >+ if (REAL_MODE(®s->psw)) >+ ARCH_DEP(program_interrupt) (regs, PGM_SPECIAL_OPERATION_EXCEPTION); >+ >+ /* Extract the access key and address-space control for operand 1 */ >+ abit1 = regs->GR_LHH(0) & 0x0001; >+ kbit1 = (regs->GR_LHH(0) & 0x0002) >> 1; >+ asc1 = regs->GR_LHH(0) & 0x00C0; >+ key1 = (regs->GR_LHH(0) & 0xF000) >> 8; >+ >+ /* Extract the access key and address-space control for operand 2 */ >+ abit2 = regs->GR_LHL(0) & 0x0001; >+ kbit2 = (regs->GR_LHL(0) & 0x0002) >> 1; >+ asc2 = regs->GR_LHL(0) & 0x00C0; >+ key2 = (regs->GR_LHL(0) & 0xF000) >> 8; >+ >+ /* Use PSW address-space control for operand 1 if A bit is zero */ >+ if (abit1 == 0) >+ asc1 = regs->psw.asc; >+ >+ /* Use PSW address-space control for operand 2 if A bit is zero */ >+ if (abit2 == 0) >+ asc2 = regs->psw.asc; >+ >+ /* Use PSW key for operand 1 if K bit is zero */ >+ if (kbit1 == 0) >+ key1 = regs->psw.pkey; >+ >+ /* Use PSW key for operand 2 if K bit is zero */ >+ if (kbit2 == 0) >+ key2 = regs->psw.pkey; >+ >+ /* Program check if home-space mode is specified for operand 1 >+ and PSW indicates problem state */ >+ if (abit1 && asc1 == PSW_HOME_SPACE_MODE >+ && PROBSTATE(®s->psw)) >+ ARCH_DEP(program_interrupt) (regs, PGM_SPECIAL_OPERATION_EXCEPTION); >+ >+ /* Program check if secondary space control (CR0 bit 5/37) is 0, and >+ secondary space mode is specified or implied for either operand */ >+ if ((regs->CR(0) & CR0_SEC_SPACE) == 0 >+ && (asc1 == PSW_SECONDARY_SPACE_MODE >+ || asc2 == PSW_SECONDARY_SPACE_MODE)) >+ ARCH_DEP(program_interrupt) (regs, PGM_SPECIAL_OPERATION_EXCEPTION); >+ >+ /* Program check if in problem state and the key mask in CR3 is zero >+ for the specified or implied access key for either operand */ >+ if (PROBSTATE(®s->psw) >+ && ( ((regs->CR(3) << (key1 >> 4)) & 0x80000000) == 0 >+ || ((regs->CR(3) << (key2 >> 4)) & 0x80000000) == 0 )) >+ ARCH_DEP(program_interrupt) (regs, PGM_PRIVILEGED_OPERATION_EXCEPTION); >+ >+ /* Load true length from R3 register */ >+ len = GR_A(r3,regs); >+ >+ /* If the true length does not exceed 4096, set condition code >+ zero, otherwise set cc=3 and use effective length of 4096 */ >+ if (len <= 4096) >+ cc = 0; >+ else { >+ cc = 3; >+ len = 4096; >+ } >+ >+ /* Set the address space modifier for operand 1 */ >+ space1 = (asc1 == PSW_PRIMARY_SPACE_MODE) ? USE_PRIMARY_SPACE : >+ (asc1 == PSW_SECONDARY_SPACE_MODE) ? USE_SECONDARY_SPACE : >+ (asc1 == PSW_ACCESS_REGISTER_MODE) ? USE_ARMODE | b1 : >+ (asc1 == PSW_HOME_SPACE_MODE) ? USE_HOME_SPACE : 0; >+ >+ /* Set the address space modifier for operand 2 */ >+ space2 = (asc2 == PSW_PRIMARY_SPACE_MODE) ? USE_PRIMARY_SPACE : >+ (asc2 == PSW_SECONDARY_SPACE_MODE) ? USE_SECONDARY_SPACE : >+ (asc2 == PSW_ACCESS_REGISTER_MODE) ? USE_ARMODE | b2 : >+ (asc2 == PSW_HOME_SPACE_MODE) ? USE_HOME_SPACE : 0; >+ >+ /* Perform the move */ >+ ARCH_DEP(move_charx) (effective_addr1, space1, key1, >+ effective_addr2, space2, key2, len, regs); >+ >+ /* Set the condition code */ >+ regs->psw.cc = cc; >+ >+} /* end DEF_INST(move_with_optional_specifications) */ >+#endif /*defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS)*/ >+ >+ > /*-------------------------------------------------------------------*/ > /* E50E MVCSK - Move with Source Key [SSE] */ > /*-------------------------------------------------------------------*/ >@@ -2590,6 +2740,9 @@ VADR retn; > #ifdef FEATURE_TRACING > CREG newcr12 = 0; /* CR12 upon completion */ > #endif /*FEATURE_TRACING*/ >+#if defined(FEATURE_ESAME) >+CREG savecr12 = 0; /* CR12 save */ >+#endif /*FEATURE_ESAME*/ > > S(inst, regs, b2, effective_addr2); > >@@ -2647,12 +2800,6 @@ CREG newcr12 = 0; > oldpasn = regs->CR(4) & CR4_PASN; > oldpstd = regs->CR(1); > >-#ifdef FEATURE_TRACING >- /* Form trace entry if ASN tracing is active */ >- if (regs->CR(12) & CR12_ASNTRACE) >- newcr12 = ARCH_DEP(trace_pc) (pctea, regs); >-#endif /*FEATURE_TRACING*/ >- > /* [5.5.3.1] Load the linkage table designation */ > if (!ASF_ENABLED(regs)) > { >@@ -2695,6 +2842,12 @@ CREG newcr12 = 0; > if ((ltdesig & LTD_SSLINK) == 0) > ARCH_DEP(program_interrupt) (regs, PGM_SPECIAL_OPERATION_EXCEPTION); > >+#ifdef FEATURE_TRACING >+ /* Form trace entry if ASN tracing is active */ >+ if (regs->CR(12) & CR12_ASNTRACE) >+ newcr12 = ARCH_DEP(trace_pc) (pctea, regs); >+#endif /*FEATURE_TRACING*/ >+ > /* [5.5.3.2] Linkage table lookup */ > if (!ASN_AND_LX_REUSE_ENABLED(regs)) > { >@@ -3027,11 +3180,22 @@ CREG newcr12 = 0; > if (!ASF_ENABLED(regs)) > ARCH_DEP(program_interrupt) (regs, PGM_SPECIAL_OPERATION_EXCEPTION); > >+#ifdef FEATURE_TRACING > #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ >- if((regs->CR(12) & CR12_MTRACE) && regs->psw.amode64 != (ete[4] & ETE4_G) ? 1 : 0) >- ARCH_DEP(trace_ms) (0,((U64)(ete[0]) << 32) | (U64)(ete[1] & 0xFFFFFFFE), regs); >+ if((regs->CR(12) & CR12_MTRACE) && (regs->psw.amode64 != ((ete[4] & ETE4_G) ? 1 : 0))) >+ { >+ /* since ASN trace might be made already, need to save >+ current CR12 and use newcr12 for this second entry */ >+ if (!newcr12) >+ newcr12 = regs->CR(12); >+ savecr12 = regs->CR(12); >+ regs->CR(12) = newcr12; >+ newcr12 = ARCH_DEP(trace_ms) (0, 0, regs); >+ regs->CR(12) = savecr12; >+ } > #endif /*defined(FEATURE_ESAME)*/ >+#endif /*FEATURE_TRACING*/ > > /* Set the called-space identification */ > if (pasn == 0) >@@ -3199,8 +3363,8 @@ CREG newcr12 = 0; > } /* end if(PC-ss) */ > > #ifdef FEATURE_TRACING >- /* Update trace table address if ASN tracing is active */ >- if (regs->CR(12) & CR12_ASNTRACE) >+ /* Update trace table address if ASN or Mode switch made trace entry */ >+ if (newcr12) > regs->CR(12) = newcr12; > #endif /*FEATURE_TRACING*/ > >@@ -3282,7 +3446,8 @@ int rc; > newregs.tlbID = 1; > > /* Set the breaking event address register in the copy */ >- SET_BEAR_REG(&newregs, newregs.ip - (newregs.execflag ? 4 : 2)); >+ SET_BEAR_REG(&newregs, newregs.ip - (newregs.execflag ? >+ newregs.exrl ? 6 : 4 : 2)); > > /* Save the primary ASN (CR4) and primary STD (CR1) */ > oldpasn = regs->CR_LHL(4); >@@ -3291,6 +3456,17 @@ int rc; > /* Perform the unstacking process */ > etype = ARCH_DEP(program_return_unstack) (&newregs, &alsed, &rc); > >+#ifdef FEATURE_TRACING >+ #if defined(FEATURE_ESAME) >+ /* If unstacked entry was a BAKR: */ >+ /* Add a mode trace entry when switching in/out of 64 bit mode */ >+ if((etype == LSED_UET_BAKR) >+ && (regs->CR(12) & CR12_MTRACE) >+ && (regs->psw.amode64 != newregs.psw.amode64)) >+ newregs.CR(12) = ARCH_DEP(trace_ms) (0, 0, regs); >+ #endif /*defined(FEATURE_ESAME)*/ >+#endif /*FEATURE_TRACING*/ >+ > /* Perform PR-cp or PR-ss if unstacked entry was a program call */ > if (etype == LSED_UET_PC) > { >@@ -3305,8 +3481,8 @@ int rc; > #if defined(FEATURE_ESAME) > else > /* Add a mode trace entry when switching in/out of 64 bit mode */ >- if((regs->CR(12) & CR12_MTRACE) && regs->psw.amode64 != newregs.psw.amode64) >- ARCH_DEP(trace_ms) (0, newregs.psw.IA & ADDRESS_MAXWRAP(regs), regs); >+ if((regs->CR(12) & CR12_MTRACE) && (regs->psw.amode64 != newregs.psw.amode64)) >+ newregs.CR(12) = ARCH_DEP(trace_ms) (0, 0, regs); > #endif /*defined(FEATURE_ESAME)*/ > > #endif /*FEATURE_TRACING*/ >@@ -4613,6 +4789,7 @@ BYTE pkey; > > /* Set PSW key */ > regs->psw.pkey = n; >+ INVALIDATE_AIA(regs); > } > > >@@ -6344,7 +6521,7 @@ struct rusage usage; / > getrusage(RUSAGE_SELF,&usage); > dreg = (U64)(usage.ru_utime.tv_sec + usage.ru_stime.tv_sec); > dreg = (dreg * 1000000) + (usage.ru_utime.tv_usec + usage.ru_stime.tv_usec); >- dreg = regs->instcount / (dreg ? dreg : 1); >+ dreg = INSTCOUNT(regs) / (dreg ? dreg : 1); > dreg *= SUSEC_PER_MIPS; > return 0x800000 / (dreg ? dreg : 1); > >diff -Naupr hercules-3.05/cpu.c hercules-20070717/cpu.c >--- hercules-3.05/cpu.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/cpu.c 2008-09-03 13:07:48.000000000 +0200 >@@ -4,7 +4,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: cpu.c,v 1.185 2007/06/23 00:04:05 ivan Exp $ >+// $Id: cpu.c,v 1.200 2008/04/11 14:28:15 bernard Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the CPU instruction execution function of */ >@@ -30,6 +30,65 @@ > /*-------------------------------------------------------------------*/ > > // $Log: cpu.c,v $ >+// Revision 1.200 2008/04/11 14:28:15 bernard >+// Integrate regs->exrl into base Hercules code. >+// >+// Revision 1.199 2008/04/09 07:35:32 bernard >+// allign to Rogers terminal ;-) >+// >+// Revision 1.198 2008/04/08 17:12:29 bernard >+// Added execute relative long instruction >+// >+// Revision 1.197 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// >+// Revision 1.196 2008/02/12 18:23:39 jj >+// 1. SPKA was missing protection check (PIC04) because >+// AIA regs were not purged. >+// >+// 2. BASR with branch trace and PIC16, the pgm old was pointing >+// 2 bytes before the BASR. >+// >+// 3. TBEDR , TBDR using R1 as source, should be R2. >+// >+// 4. PR with page crossing stack (1st page invalid) and PSW real >+// in stack, missed the PIC 11. Fixed by invoking abs_stck_addr >+// for previous stack entry descriptor before doing the load_psw. >+// >+// Revision 1.195 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.194 2007/12/07 12:08:51 rbowler >+// Enable B9xx,EBxx opcodes in S/370 mode for ETF2 (correction) >+// >+// Revision 1.193 2007/12/02 16:22:09 rbowler >+// Enable B9xx,EBxx opcodes in S/370 mode for ETF2 >+// >+// Revision 1.192 2007/11/22 03:49:01 ivan >+// Store Monitor code DOUBLEWORD when MC invoked under z/Architecture >+// (previously only a fullword was stored) >+// >+// Revision 1.191 2007/11/18 22:18:51 rbowler >+// Permit FEATURE_IMMEDIATE_AND_RELATIVE to be activated in S/370 mode >+// >+// Revision 1.190 2007/11/02 20:19:20 ivan >+// Remove longjmp in process_interrupt() when cpu is STOPPING and a store status >+// was requested - leads to a CPU in the STOPPED state that is still executing >+// instructions. >+// >+// Revision 1.189 2007/08/06 22:14:53 gsmith >+// process_interrupt returns if nothing happens >+// >+// Revision 1.188 2007/08/06 22:14:07 gsmith >+// rework CPU execution loop >+// >+// Revision 1.187 2007/08/06 22:12:49 gsmith >+// cpu thread exitjmp >+// >+// Revision 1.186 2007/08/06 22:10:47 gsmith >+// reposition process_trace for readability >+// > // Revision 1.185 2007/06/23 00:04:05 ivan > // Update copyright notices to include current year (2007) > // >@@ -462,8 +521,9 @@ static char *pgmintname[] = { > { > /* This can happen if BALR, BASR, BASSM or BSM > program checks during trace */ >- ilc = realregs->execflag ? 4 : 2; >+ ilc = realregs->execflag ? realregs->exrl ? 6 : 4 : 2; > realregs->ip += 2; >+ realregs->psw.IA += ilc; > } > #if defined(FEATURE_INTERPRETIVE_EXECUTION) > if(realregs->sie_active) >@@ -473,7 +533,8 @@ static char *pgmintname[] = { > if (realregs->guestregs->psw.ilc == 0 > && !realregs->guestregs->psw.zeroilc) > { >- sie_ilc = realregs->guestregs->execflag ? 4 : 2; >+ sie_ilc = realregs->guestregs->execflag ? >+ realregs->guestregs->exrl ? 6 : 4 : 2; > realregs->guestregs->ip += 2; > } > } >@@ -873,8 +934,13 @@ static char *pgmintname[] = { > { > STORE_HW(psa->monclass, regs->monclass); > >- /* Store the monitor code at PSA+156 */ >+ /* Store the monitor code word at PSA+156 */ >+ /* or doubleword at PSA+176 */ >+#if defined(FEATURE_ESAME) >+ STORE_DW(psa->moncode, regs->MONCODE); >+#else > STORE_W(psa->moncode, regs->MONCODE); >+#endif > } > > #if defined(FEATURE_PER3) >@@ -1172,22 +1238,6 @@ void *cpu_thread (int *ptr) > REGS *regs = NULL; > int cpu = *ptr; > >- /* Set root mode in order to set priority */ >- SETMODE(ROOT); >- >- /* Set CPU thread priority */ >- if (setpriority(PRIO_PROCESS, 0, sysblk.cpuprio)) >- logmsg (_("HHCCP001W CPU%4.4X thread set priority %d failed: %s\n"), >- cpu, sysblk.cpuprio, strerror(errno)); >- >- /* Back to user mode */ >- SETMODE(USER); >- >- /* Display thread started message on control panel */ >- logmsg (_("HHCCP002I CPU%4.4X thread started: tid="TIDPAT", pid=%d, " >- "priority=%d\n"), >- cpu, thread_id(), getpid(), >- getpriority(PRIO_PROCESS,0)); > > OBTAIN_INTLOCK(NULL); > >@@ -1213,6 +1263,22 @@ int cpu = *ptr; > return NULL; > } > } >+ /* Set root mode in order to set priority */ >+ SETMODE(ROOT); >+ >+ /* Set CPU thread priority */ >+ if (setpriority(PRIO_PROCESS, 0, sysblk.cpuprio)) >+ logmsg (_("HHCCP001W CPU%4.4X thread set priority %d failed: %s\n"), >+ cpu, sysblk.cpuprio, strerror(errno)); >+ >+ /* Back to user mode */ >+ SETMODE(USER); >+ >+ /* Display thread started message on control panel */ >+ logmsg (_("HHCCP002I CPU%4.4X thread started: tid="TIDPAT", pid=%d, " >+ "priority=%d\n"), >+ cpu, thread_id(), getpid(), >+ getpriority(PRIO_PROCESS,0)); > > /* Execute the program in specified mode */ > do { >@@ -1356,6 +1422,11 @@ void *cpu_uninit (int cpu, REGS *regs) > > if (regs->host) > { >+#ifdef FEATURE_VECTOR_FACILITY >+ /* Mark Vector Facility offline */ >+ regs->vf->online = 0; >+#endif /*FEATURE_VECTOR_FACILITY*/ >+ > /* Remove CPU from all CPU bit masks */ > sysblk.config_mask &= ~BIT(cpu); > sysblk.started_mask &= ~BIT(cpu); >@@ -1432,16 +1503,9 @@ void (ATTR_REGPARM(1) ARCH_DEP(process_i > regs->opinterv = 0; > regs->cpustate = CPUSTATE_STOPPED; > >+ /* Thread exit (note - intlock still held) */ > if (!regs->configured) >- { >-#ifdef FEATURE_VECTOR_FACILITY >- /* Mark Vector Facility offline */ >- regs->vf->online = 0; >-#endif /*FEATURE_VECTOR_FACILITY*/ >- >- /* Thread exit (note - intlock still held) */ >- return; >- } >+ longjmp(regs->exitjmp, SIE_NO_INTERCEPT); > > /* If initial CPU reset pending then perform reset */ > if (regs->sigpireset) >@@ -1470,8 +1534,13 @@ void (ATTR_REGPARM(1) ARCH_DEP(process_i > ARCH_DEP(store_status) (regs, 0); > logmsg (_("HHCCP010I CPU%4.4X store status completed.\n"), > regs->cpuad); >+ /* ISW 20071102 : Do not return via longjmp here. */ >+ /* process_interrupt needs to finish putting the */ >+ /* CPU in its manual state */ >+ /* > RELEASE_INTLOCK(regs); > longjmp(regs->progjmp, SIE_NO_INTERCEPT); >+ */ > } > } /*CPUSTATE_STOPPING*/ > >@@ -1487,11 +1556,7 @@ void (ATTR_REGPARM(1) ARCH_DEP(process_i > /* This is where a stopped CPU will wait */ > if (unlikely(regs->cpustate == CPUSTATE_STOPPED)) > { >- S64 saved_timer; >-#ifdef OPTION_MIPS_COUNTING >- regs->waittod = hw_clock(); >-#endif >- saved_timer = cpu_timer(regs); >+ S64 saved_timer = cpu_timer(regs); > regs->ints_state = IC_INITIAL_STATE; > sysblk.started_mask ^= regs->cpubit; > sysblk.intowner = LOCK_OWNER_NONE; >@@ -1510,12 +1575,6 @@ void (ATTR_REGPARM(1) ARCH_DEP(process_i > > ON_IC_INTERRUPT(regs); > >-#ifdef OPTION_MIPS_COUNTING >- /* Calculate the time we waited */ >- regs->waittime += hw_clock() - regs->waittod; >- regs->waittod = 0; >-#endif >- > /* Purge the lookaside buffers */ > ARCH_DEP(purge_tlb) (regs); > #if defined(FEATURE_ACCESS_REGISTERS) >@@ -1525,13 +1584,16 @@ void (ATTR_REGPARM(1) ARCH_DEP(process_i > /* If the architecture mode has changed we must adapt */ > if(sysblk.arch_mode != regs->arch_mode) > longjmp(regs->archjmp,SIE_NO_INTERCEPT); >+ >+ RELEASE_INTLOCK(regs); >+ longjmp(regs->progjmp, SIE_NO_INTERCEPT); > } /*CPUSTATE_STOPPED*/ > > /* Test for wait state */ >- else if (WAITSTATE(®s->psw)) >+ if (WAITSTATE(®s->psw)) > { > #ifdef OPTION_MIPS_COUNTING >- regs->waittod = hw_clock(); >+ regs->waittod = host_tod(); > #endif > > /* Test for disabled wait PSW and issue message */ >@@ -1563,78 +1625,20 @@ void (ATTR_REGPARM(1) ARCH_DEP(process_i > > #ifdef OPTION_MIPS_COUNTING > /* Calculate the time we waited */ >- regs->waittime += hw_clock() - regs->waittod; >+ regs->waittime += host_tod() - regs->waittod; > regs->waittod = 0; > #endif >+ RELEASE_INTLOCK(regs); >+ longjmp(regs->progjmp, SIE_NO_INTERCEPT); > } /* end if(wait) */ > > /* Release the interrupt lock */ > RELEASE_INTLOCK(regs); >- >- longjmp(regs->progjmp, SIE_NO_INTERCEPT); >+ return; > > } /* process_interrupt */ > > /*-------------------------------------------------------------------*/ >-/* Process Trace */ >-/*-------------------------------------------------------------------*/ >-void ARCH_DEP(process_trace)(REGS *regs) >-{ >-int shouldtrace = 0; /* 1=Trace instruction */ >-int shouldstep = 0; /* 1=Wait for start command */ >- >- /* Test for trace */ >- if (CPU_TRACING(regs, 0)) >- shouldtrace = 1; >- >- /* Test for step */ >- if (CPU_STEPPING(regs, 0)) >- shouldstep = 1; >- >- /* Display the instruction */ >- if (shouldtrace || shouldstep) >- { >- BYTE *ip = regs->ip < regs->aip ? regs->inst : regs->ip; >- ARCH_DEP(display_inst) (regs, ip); >- } >- >- /* Stop the CPU */ >- if (shouldstep) >- { >- REGS *hostregs = regs->hostregs; >- S64 saved_timer[2]; >- >- OBTAIN_INTLOCK(hostregs); >-#ifdef OPTION_MIPS_COUNTING >- hostregs->waittod = hw_clock(); >-#endif >- /* The CPU timer is not decremented for a CPU that is in >- the manual state (e.g. stopped in single step mode) */ >- saved_timer[0] = cpu_timer(regs); >- saved_timer[1] = cpu_timer(hostregs); >- hostregs->cpustate = CPUSTATE_STOPPED; >- sysblk.started_mask &= ~hostregs->cpubit; >- hostregs->stepwait = 1; >- sysblk.intowner = LOCK_OWNER_NONE; >- while (hostregs->cpustate == CPUSTATE_STOPPED) >- { >- wait_condition (&hostregs->intcond, &sysblk.intlock); >- } >- sysblk.intowner = hostregs->cpuad; >- hostregs->stepwait = 0; >- sysblk.started_mask |= hostregs->cpubit; >- set_cpu_timer(regs,saved_timer[0]); >- set_cpu_timer(hostregs,saved_timer[1]); >-#ifdef OPTION_MIPS_COUNTING >- hostregs->waittime += hw_clock() - hostregs->waittod; >- hostregs->waittod = 0; >-#endif >- RELEASE_INTLOCK(hostregs); >- } >-} /* process_trace */ >- >- >-/*-------------------------------------------------------------------*/ > /* Run CPU */ > /*-------------------------------------------------------------------*/ > REGS *ARCH_DEP(run_cpu) (int cpu, REGS *oldregs) >@@ -1679,6 +1683,10 @@ REGS regs; > regs.tracing = (sysblk.inststep || sysblk.insttrace); > regs.ints_state |= sysblk.ints_state; > >+ /* Establish longjmp destination for cpu thread exit */ >+ if (setjmp(regs.exitjmp)) >+ return cpu_uninit(cpu, ®s); >+ > /* Establish longjmp destination for architecture switch */ > setjmp(regs.archjmp); > >@@ -1709,8 +1717,10 @@ REGS regs; > /* Set `execflag' to 0 in case EXecuted instruction did a longjmp() */ > regs.execflag = 0; > >- while (!INTERRUPT_PENDING(®s)) >- { >+ do { >+ if (INTERRUPT_PENDING(®s)) >+ ARCH_DEP(process_interrupt)(®s); >+ > ip = INSTRUCTION_FETCH(®s, 0); > regs.instcount++; > EXECUTE_INSTRUCTION(ip, ®s); >@@ -1732,14 +1742,70 @@ REGS regs; > UNROLLED_EXECUTE(®s); > UNROLLED_EXECUTE(®s); > } while (!INTERRUPT_PENDING(®s)); >- } /* while(!INTERRUPT_PENDING(®s)) */ >+ } while (1); > >- /* process_interrupt will do longjmp unless we're exiting */ >- ARCH_DEP(process_interrupt)(®s); >- return cpu_uninit(cpu, ®s); >+ /* Never reached */ >+ return NULL; > > } /* end function cpu_thread */ > >+/*-------------------------------------------------------------------*/ >+/* Process Trace */ >+/*-------------------------------------------------------------------*/ >+void ARCH_DEP(process_trace)(REGS *regs) >+{ >+int shouldtrace = 0; /* 1=Trace instruction */ >+int shouldstep = 0; /* 1=Wait for start command */ >+ >+ /* Test for trace */ >+ if (CPU_TRACING(regs, 0)) >+ shouldtrace = 1; >+ >+ /* Test for step */ >+ if (CPU_STEPPING(regs, 0)) >+ shouldstep = 1; >+ >+ /* Display the instruction */ >+ if (shouldtrace || shouldstep) >+ { >+ BYTE *ip = regs->ip < regs->aip ? regs->inst : regs->ip; >+ ARCH_DEP(display_inst) (regs, ip); >+ } >+ >+ /* Stop the CPU */ >+ if (shouldstep) >+ { >+ REGS *hostregs = regs->hostregs; >+ S64 saved_timer[2]; >+ >+ OBTAIN_INTLOCK(hostregs); >+#ifdef OPTION_MIPS_COUNTING >+ hostregs->waittod = host_tod(); >+#endif >+ /* The CPU timer is not decremented for a CPU that is in >+ the manual state (e.g. stopped in single step mode) */ >+ saved_timer[0] = cpu_timer(regs); >+ saved_timer[1] = cpu_timer(hostregs); >+ hostregs->cpustate = CPUSTATE_STOPPED; >+ sysblk.started_mask &= ~hostregs->cpubit; >+ hostregs->stepwait = 1; >+ sysblk.intowner = LOCK_OWNER_NONE; >+ while (hostregs->cpustate == CPUSTATE_STOPPED) >+ { >+ wait_condition (&hostregs->intcond, &sysblk.intlock); >+ } >+ sysblk.intowner = hostregs->cpuad; >+ hostregs->stepwait = 0; >+ sysblk.started_mask |= hostregs->cpubit; >+ set_cpu_timer(regs,saved_timer[0]); >+ set_cpu_timer(hostregs,saved_timer[1]); >+#ifdef OPTION_MIPS_COUNTING >+ hostregs->waittime += host_tod() - hostregs->waittod; >+ hostregs->waittod = 0; >+#endif >+ RELEASE_INTLOCK(hostregs); >+ } >+} /* process_trace */ > > /*-------------------------------------------------------------------*/ > /* Set Jump Pointers */ >@@ -1767,7 +1833,6 @@ void ARCH_DEP(set_jump_pointers) (REGS * > switch (jump) { > > #if defined(MULTI_BYTE_ASSIST_IA32) >- #if ARCH_MODE != ARCH_370 > case 0xa7: > jump_a7xx: > __asm__ ( >@@ -1776,7 +1841,6 @@ jump_a7xx: > : : "i" (offsetof(REGS,ARCH_DEP(opcode_a7xx))) > ); > return; >- #endif /* ARCH_MODE != ARCH_370 */ > case 0xb2: > jump_b2xx: > __asm__ ( >@@ -1785,7 +1849,6 @@ jump_b2xx: > : : "i" (offsetof(REGS,ARCH_DEP(opcode_b2xx))) > ); > return; >- #if defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) > case 0xb9: > jump_b9xx: > __asm__ ( >@@ -1794,6 +1857,7 @@ jump_b9xx: > : : "i" (offsetof(REGS,ARCH_DEP(opcode_b9xx))) > ); > return; >+ #if defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) > case 0xc0: > jump_c0xx: > __asm__ ( >@@ -1811,6 +1875,7 @@ jump_e3xx: > ); > return; > case 0xeb: >+ #endif /* defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) */ > jump_ebxx: > __asm__ ( > "movzbl 5(%%eax),%%ecx\n\t" >@@ -1818,21 +1883,18 @@ jump_ebxx: > : : "i" (offsetof(REGS,ARCH_DEP(opcode_ebxx))) > ); > return; >- #endif /* defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) */ > #endif /* defined(MULTI_BYTE_ASSIST_IA32) */ > > } /* switch(jump) */ > >- #if ARCH_MODE != ARCH_370 > regs->ARCH_DEP(opcode_table)[0xa7] = &&jump_a7xx; >- #endif > regs->ARCH_DEP(opcode_table)[0xb2] = &&jump_b2xx; >- #if defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) > regs->ARCH_DEP(opcode_table)[0xb9] = &&jump_b9xx; >+ #if defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) > regs->ARCH_DEP(opcode_table)[0xc0] = &&jump_c0xx; > regs->ARCH_DEP(opcode_table)[0xe3] = &&jump_e3xx; >- regs->ARCH_DEP(opcode_table)[0xeb] = &&jump_ebxx; > #endif /* defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390) */ >+ regs->ARCH_DEP(opcode_table)[0xeb] = &&jump_ebxx; > > #else /* !defined(MULTI_BYTE_ASSIST) */ > UNREFERENCED(regs); >diff -Naupr hercules-3.05/cpuint.h hercules-20070717/cpuint.h >--- hercules-3.05/cpuint.h 2006-12-30 16:18:27.000000000 +0100 >+++ hercules-20070717/cpuint.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,9 @@ >-// $Id: cpuint.h,v 1.39 2006/12/21 22:39:38 gsmith Exp $ >+// $Id: cpuint.h,v 1.40 2008/02/15 21:15:51 ptl00 Exp $ > // > // $Log: cpuint.h,v $ >+// Revision 1.40 2008/02/15 21:15:51 ptl00 >+// Fix SET_IC_PER so it ANDs PER bits before ORing new ones >+// > // Revision 1.39 2006/12/21 22:39:38 gsmith > // 21 Dec 2006 Range for s+, t+ - Greg Smith > // >@@ -284,6 +287,7 @@ > > #define SET_IC_PER(_regs) \ > do { \ >+ (_regs)->ints_state &= (~IC_PER_MASK); \ > (_regs)->ints_state |= (((_regs)->CR(9) >> IC_CR9_SHIFT) & IC_PER_MASK); \ > (_regs)->ints_mask &= (~IC_PER_MASK | (_regs)->ints_state); \ > } while (0) >diff -Naupr hercules-3.05/crypto/.cvsignore hercules-20070717/crypto/.cvsignore >--- hercules-3.05/crypto/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/crypto/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,10 @@ >+.deps >+.libs >+Makefile >+Makefile.in >+dyncrypt.la >+dyncrypt.lo >+sha1.lo >+aes.lo >+des.lo >+sha256.lo >diff -Naupr hercules-3.05/crypto/dyncrypt.c hercules-20070717/crypto/dyncrypt.c >--- hercules-3.05/crypto/dyncrypt.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/crypto/dyncrypt.c 2008-09-03 13:07:48.000000000 +0200 >@@ -3,16 +3,54 @@ > /* */ > /* Implementation of the z/Architecture crypto instructions described in */ > /* SA22-7832-04: z/Architecture Principles of Operation within the Hercules */ >-/* z/Architecture emulator. This file may only be used with and within the */ >-/* Hercules emulator for non-commercial use! */ >+/* z/Architecture emulator. */ > /* */ >-/* (c) Copyright Bernard van der Helm, 2003-2007 */ >+/* (c) Copyright Bernard van der Helm, 2003-2008 */ > /* Noordwijkerhout, The Netherlands. */ > /*----------------------------------------------------------------------------*/ > >-// $Id: dyncrypt.c,v 1.54 2007/06/23 00:04:19 ivan Exp $ >+// $Id: dyncrypt.c,v 1.64 2008/03/29 16:44:49 bernard Exp $ > // > // $Log: dyncrypt.c,v $ >+// Revision 1.64 2008/03/29 16:44:49 bernard >+// Alligning the dyncrypt.c license with the other hercules files. >+// >+// Revision 1.63 2008/03/25 19:39:16 fish >+// Oops! Dunno how the frick that happened folks! Sorry. This file >+// was NOT supposed to be part of the *SCSI* changes! (Duh!) And >+// I have no idea how the frick it got changed in the first place! But >+// in any case, the indentation of the #ifdef statements has been re- >+// stored back to the way it was. Sorry about that Bernard! - Fish >+// >+// Revision 1.62 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.61 2008/02/28 15:52:44 bernard >+// typo in comment >+// >+// Revision 1.60 2008/02/27 16:00:53 bernard >+// Error in klmd_sha512 and extension 2 is now announced in the log >+// >+// Revision 1.59 2008/02/27 14:49:56 bernard >+// Query functions return extension_1 bitstrings due to errors in #define >+// statements at the top. >+// >+// Revision 1.58 2008/02/27 14:16:34 bernard >+// Added feature message_security_assist_extension_2 >+// >+// Revision 1.57 2008/02/13 08:31:07 bernard >+// 16k is 16384 @#$^$@#^$ >+// >+// Revision 1.56 2008/02/11 12:17:39 bernard >+// Enlarged cpu determined data from 4k to 16k >+// >+// Revision 1.55 2007/08/26 08:14:05 bernard >+// prepare future extension, no code change! >+// > // Revision 1.54 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -75,26 +113,46 @@ > #undef KMAC_BITS > #undef KMC_BITS > >-#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >-#define KIMD_BITS { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ #define KIMD_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; > #else >-#define KIMD_BITS { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >+ #define KIMD_BITS { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #else >+ #define KIMD_BITS { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #endif > #endif >-#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >-#define KLMD_BITS { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ #define KLMD_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; > #else >-#define KLMD_BITS { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >+ #define KLMD_BITS { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #else >+ #define KLMD_BITS { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #endif > #endif >-#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >-#define KM_BITS { 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ #define KM_BITS { 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; > #else >-#define KM_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >+ #define KM_BITS { 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #else >+ #define KM_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #endif > #endif >+ > #define KMAC_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >-#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >-#define KMC_BITS { 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ #define KMC_BITS { 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; > #else >-#define KMC_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >+ #define KMC_BITS { 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #else >+ #define KMC_BITS { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; >+ #endif > #endif > > /*----------------------------------------------------------------------------*/ >@@ -131,7 +189,7 @@ > /*----------------------------------------------------------------------------*/ > /* CPU determined amount of data (processed in one go) */ > /*----------------------------------------------------------------------------*/ >-#define PROCESS_MAX 4096 >+#define PROCESS_MAX 16384 > > /*----------------------------------------------------------------------------*/ > /* Used for printing debugging info */ >@@ -210,6 +268,51 @@ static void sha256_seticv(sha256_context > #endif /* __SHA256_COMPILE__ */ > #endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 */ > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+#ifndef __SHA512_COMPILE__ >+#define __SHA512_COMPILE__ >+/*----------------------------------------------------------------------------*/ >+/* Get the chaining vector for output processing */ >+/*----------------------------------------------------------------------------*/ >+static void sha512_getcv(sha512_context *ctx, BYTE icv[64]) >+{ >+ int i, j; >+ >+ for(i = 0, j = 0; i < 8; i++) >+ { >+ icv[j++] = (ctx->state[i] & 0xff00000000000000LL) >> 56; >+ icv[j++] = (ctx->state[i] & 0x00ff000000000000LL) >> 48; >+ icv[j++] = (ctx->state[i] & 0x0000ff0000000000LL) >> 40; >+ icv[j++] = (ctx->state[i] & 0x000000ff00000000LL) >> 32; >+ icv[j++] = (ctx->state[i] & 0x00000000ff000000LL) >> 24; >+ icv[j++] = (ctx->state[i] & 0x0000000000ff0000LL) >> 16; >+ icv[j++] = (ctx->state[i] & 0x000000000000ff00LL) >> 8; >+ icv[j++] = (ctx->state[i] & 0x00000000000000ffLL); >+ } >+} >+ >+/*----------------------------------------------------------------------------*/ >+/* Set the initial chaining value */ >+/*----------------------------------------------------------------------------*/ >+static void sha512_seticv(sha512_context *ctx, BYTE icv[64]) >+{ >+ int i, j; >+ >+ for(i = 0, j = 0; i < 8; i++) >+ { >+ ctx->state[i] = (U64) icv[j++] << 56; >+ ctx->state[i] |= (U64) icv[j++] << 48; >+ ctx->state[i] |= (U64) icv[j++] << 40; >+ ctx->state[i] |= (U64) icv[j++] << 32; >+ ctx->state[i] |= (U64) icv[j++] << 24; >+ ctx->state[i] |= (U64) icv[j++] << 16; >+ ctx->state[i] |= (U64) icv[j++] << 8; >+ ctx->state[i] |= (U64) icv[j++]; >+ } >+} >+#endif /* __SHA512_COMPILE__ */ >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 */ >+ > /*----------------------------------------------------------------------------*/ > /* Needed functions from sha1.c and sha256.c. */ > /* We do our own counting and padding, we only need the hashing. */ >@@ -220,6 +323,10 @@ void sha1_process(sha1_context *ctx, BYT > void sha256_process(sha256_context *ctx, BYTE data[64]); > #endif > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+void sha512_process(sha512_context *ctx, BYTE data[128]); >+#endif >+ > /*----------------------------------------------------------------------------*/ > /* B93E Compute intermediate message digest (KIMD) FC 0 */ > /*----------------------------------------------------------------------------*/ >@@ -414,6 +521,90 @@ static void ARCH_DEP(kimd_sha_256)(int r > } > #endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 */ > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+/*----------------------------------------------------------------------------*/ >+/* B93E Compute intermediate message digest (KIMD) FC 3 */ >+/*----------------------------------------------------------------------------*/ >+static void ARCH_DEP(kimd_sha_512)(int r1, int r2, REGS *regs) >+{ >+ sha512_context context; >+ int crypted; >+ BYTE message_block[128]; >+ BYTE parameter_block[64]; >+ >+ UNREFERENCED(r1); >+ >+#ifdef OPTION_KIMD_DEBUG >+ logmsg(" KIMD: function 3: sha-512\n"); >+#endif >+ >+ /* Check special conditions */ >+ if(unlikely(!r2 || r2 & 0x01 || GR_A(r2 + 1, regs) % 128 || GR0_m(regs))) >+ ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ /* Return with cc 0 on zero length */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Test writeability output chaining value */ >+ ARCH_DEP(validate_operand)(GR_A(1, regs), 1, 63, ACCTYPE_WRITE, regs); >+ >+ /* Fetch the parameter block */ >+ ARCH_DEP(vfetchc)(parameter_block, 63, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KIMD_DEBUG >+ LOGBYTE2("icv :", parameter_block, 16, 4); >+#endif >+ >+ /* Set initial chaining value */ >+ sha512_seticv(&context, parameter_block); >+ >+ /* Try to process the CPU-determined amount of data */ >+ crypted = 0; >+ while(crypted += 128 < PROCESS_MAX) >+ { >+ /* Fetch and process a block of data */ >+ ARCH_DEP(vfetchc)(message_block, 127, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KIMD_DEBUG >+ LOGBYTE2("input :", message_block, 16, 8); >+#endif >+ >+ sha512_process(&context, message_block); >+ >+ /* Store the output chaining value */ >+ sha512_getcv(&context, parameter_block); >+ ARCH_DEP(vstorec)(parameter_block, 63, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KIMD_DEBUG >+ LOGBYTE2("ocv :", parameter_block, 16, 4); >+#endif >+ >+ /* Update the registers */ >+ SET_GR_A(r2, regs, GR_A(r2, regs) + 128); >+ SET_GR_A(r2 + 1, regs, GR_A(r2 + 1, regs) - 128); >+ >+#ifdef OPTION_KIMD_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ /* check for end of data */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ } >+ >+ /* CPU-determined amount of data processed */ >+ regs->psw.cc = 3; >+} >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 */ >+ > /*----------------------------------------------------------------------------*/ > /* B93F Compute last message digest (KLMD) FC 0 */ > /*----------------------------------------------------------------------------*/ >@@ -708,6 +899,140 @@ static void ARCH_DEP(klmd_sha_256)(int r > } > #endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 */ > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+/*----------------------------------------------------------------------------*/ >+/* B93F Compute last message digest (KLMD) FC 3 */ >+/*----------------------------------------------------------------------------*/ >+static void ARCH_DEP(klmd_sha_512)(int r1, int r2, REGS *regs) >+{ >+ sha512_context context; >+ int crypted; >+ int i; >+ BYTE message_block[128]; >+ BYTE parameter_block[80]; >+ >+ UNREFERENCED(r1); >+ >+#ifdef OPTION_KLMD_DEBUG >+ logmsg(" KLMD: function 3: sha-512\n"); >+#endif >+ >+ /* Check special conditions */ >+ if(unlikely(!r2 || r2 & 0x01 || GR0_m(regs))) >+ ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ /* Test writeability output chaining value */ >+ ARCH_DEP(validate_operand)(GR_A(1, regs), 1, 63, ACCTYPE_WRITE, regs); >+ >+ /* Fetch the parameter block */ >+ ARCH_DEP(vfetchc)(parameter_block, 79, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KLMD_DEBUG >+ LOGBYTE2("icv :", parameter_block, 16, 4); >+ LOGBYTE("mbl :", ¶meter_block[64], 16); >+#endif >+ >+ /* Set the initial chaining value */ >+ sha512_seticv(&context, parameter_block); >+ >+ /* Try to process the CPU-determined amount of data */ >+ crypted = 0; >+ while(crypted += 128 < PROCESS_MAX) >+ { >+ /* Check for last block */ >+ if(likely(GR_A(r2 + 1, regs) < 128)) >+ break; >+ >+ /* Fetch and process a block of data */ >+ ARCH_DEP(vfetchc)(message_block, 127, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KLMD_DEBUG >+ LOGBYTE2("input :", message_block, 16, 8); >+#endif >+ >+ sha512_process(&context, message_block); >+ >+ /* Store the output chaining value */ >+ sha512_getcv(&context, parameter_block); >+ ARCH_DEP(vstorec)(parameter_block, 63, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KLMD_DEBUG >+ LOGBYTE2("ocv :", parameter_block, 16, 4); >+#endif >+ >+ /* Update the registers */ >+ SET_GR_A(r2, regs, GR_A(r2, regs) + 128); >+ SET_GR_A(r2 + 1, regs, GR_A(r2 + 1, regs) - 128); >+ >+#ifdef OPTION_KLMD_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ } >+ >+ /* Check if cpu determined amount of data is processed */ >+ if(unlikely(GR_A(r2 + 1, regs) >= 128)) >+ { >+ regs->psw.cc = 3; >+ return; >+ } >+ >+ /* Fetch and process possible last block of data */ >+ if(likely(GR_A(r2 + 1, regs))) >+ { >+ ARCH_DEP(vfetchc)(message_block, GR_A(r2 + 1, regs) - 1, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KLMD_DEBUG >+ LOGBYTE("input :", message_block, (int) GR_A(r2 + 1, regs)); >+#endif >+ >+ } >+ >+ /* Do the padding */ >+ i = GR_A(r2 + 1, regs); >+ if(unlikely(i > 111)) >+ { >+ message_block[i++] = 0x80; >+ while(i < 128) >+ message_block[i++] = 0x00; >+ sha512_process(&context, message_block); >+ for(i = 0; i < 112; i++) >+ message_block[i] = 0x00; >+ } >+ else >+ { >+ message_block[i++] = 0x80; >+ while(i < 112) >+ message_block[i++] = 0x00; >+ } >+ >+ /* Set the message bit length */ >+ memcpy(&message_block[112], ¶meter_block[64], 16); >+ >+ /* Calculate and store the message digest */ >+ sha512_process(&context, message_block); >+ sha512_getcv(&context, parameter_block); >+ ARCH_DEP(vstorec)(parameter_block, 63, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KLMD_DEBUG >+ LOGBYTE2("md :", parameter_block, 16, 4); >+#endif >+ >+ /* Update registers */ >+ SET_GR_A(r2, regs, GR_A(r2, regs) + GR_A(r2 + 1, regs)); >+ SET_GR_A(r2 + 1, regs, 0); >+ >+#ifdef OPTION_KLMD_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ /* Set condition code */ >+ regs->psw.cc = 0; >+} >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 */ >+ > /*----------------------------------------------------------------------------*/ > /* B92E Cipher message (KM) FC 0 */ > /*----------------------------------------------------------------------------*/ >@@ -1030,11 +1355,187 @@ static void ARCH_DEP(km_aes_128)(int r1, > ARCH_DEP(vfetchc)(parameter_block, 15, GR_A(1, regs), 1, regs); > > #ifdef OPTION_KM_DEBUG >- LOGBYTE("k :", parameter_block, 16); >+ LOGBYTE("k :", parameter_block, 16); >+#endif >+ >+ /* Set the cryptographic keys */ >+ aes_set_key(&context, parameter_block, 128); >+ >+ /* Try to process the CPU-determined amount of data */ >+ crypted = 0; >+ modifier_bit = GR0_m(regs); >+ r1_is_not_r2 = r1 != r2; >+ while(crypted += 16 < PROCESS_MAX) >+ { >+ /* Fetch a block of data */ >+ ARCH_DEP(vfetchc)(message_block, 15, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KM_DEBUG >+ LOGBYTE("input :", message_block, 16); >+#endif >+ >+ /* Do the job */ >+ if(modifier_bit) >+ aes_decrypt(&context, message_block, message_block); >+ else >+ aes_encrypt(&context, message_block, message_block); >+ >+ /* Store the output */ >+ ARCH_DEP(vstorec)(message_block, 15, GR_A(r1, regs), r1, regs); >+ >+#ifdef OPTION_KM_DEBUG >+ LOGBYTE("output:", message_block, 16); >+#endif >+ >+ /* Update the registers */ >+ SET_GR_A(r1, regs, GR_A(r1, regs) + 16); >+ if(likely(r1_is_not_r2)) >+ SET_GR_A(r2, regs, GR_A(r2, regs) + 16); >+ SET_GR_A(r2 + 1, regs, GR_A(r2 + 1, regs) - 16); >+ >+#ifdef OPTION_KM_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r1, (regs)->GR(r1)); >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ /* check for end of data */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ } >+ >+ /* CPU-determined amount of data processed */ >+ regs->psw.cc = 3; >+} >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 */ >+ >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+/*----------------------------------------------------------------------------*/ >+/* B92E Cipher message (KM) FC 19 */ >+/*----------------------------------------------------------------------------*/ >+static void ARCH_DEP(km_aes_192)(int r1, int r2, REGS *regs) >+{ >+ aes_context context; >+ int crypted; >+ BYTE message_block[16]; >+ int modifier_bit; >+ BYTE parameter_block[24]; >+ int r1_is_not_r2; >+ >+#ifdef OPTION_KM_DEBUG >+ logmsg(" KM: function 19: aes-192\n"); >+#endif >+ >+ /* Check special conditions */ >+ if(unlikely(!r1 || r1 & 0x01 || !r2 || r2 & 0x01 || GR_A(r2 + 1, regs) % 16)) >+ ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ /* Return with cc 0 on zero length */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Fetch the parameter block */ >+ ARCH_DEP(vfetchc)(parameter_block, 23, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KM_DEBUG >+ LOGBYTE("k :", parameter_block, 24); >+#endif >+ >+ /* Set the cryptographic keys */ >+ aes_set_key(&context, parameter_block, 192); >+ >+ /* Try to process the CPU-determined amount of data */ >+ crypted = 0; >+ modifier_bit = GR0_m(regs); >+ r1_is_not_r2 = r1 != r2; >+ while(crypted += 16 < PROCESS_MAX) >+ { >+ /* Fetch a block of data */ >+ ARCH_DEP(vfetchc)(message_block, 15, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KM_DEBUG >+ LOGBYTE("input :", message_block, 16); >+#endif >+ >+ /* Do the job */ >+ if(modifier_bit) >+ aes_decrypt(&context, message_block, message_block); >+ else >+ aes_encrypt(&context, message_block, message_block); >+ >+ /* Store the output */ >+ ARCH_DEP(vstorec)(message_block, 15, GR_A(r1, regs), r1, regs); >+ >+#ifdef OPTION_KM_DEBUG >+ LOGBYTE("output:", message_block, 16); >+#endif >+ >+ /* Update the registers */ >+ SET_GR_A(r1, regs, GR_A(r1, regs) + 16); >+ if(likely(r1_is_not_r2)) >+ SET_GR_A(r2, regs, GR_A(r2, regs) + 16); >+ SET_GR_A(r2 + 1, regs, GR_A(r2 + 1, regs) - 16); >+ >+#ifdef OPTION_KM_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r1, (regs)->GR(r1)); >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ /* check for end of data */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ } >+ >+ /* CPU-determined amount of data processed */ >+ regs->psw.cc = 3; >+} >+ >+/*----------------------------------------------------------------------------*/ >+/* B92E Cipher message (KM) FC 20 */ >+/*----------------------------------------------------------------------------*/ >+static void ARCH_DEP(km_aes_256)(int r1, int r2, REGS *regs) >+{ >+ aes_context context; >+ int crypted; >+ BYTE message_block[16]; >+ int modifier_bit; >+ BYTE parameter_block[32]; >+ int r1_is_not_r2; >+ >+#ifdef OPTION_KM_DEBUG >+ logmsg(" KM: function 20: aes-256\n"); >+#endif >+ >+ /* Check special conditions */ >+ if(unlikely(!r1 || r1 & 0x01 || !r2 || r2 & 0x01 || GR_A(r2 + 1, regs) % 16)) >+ ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ /* Return with cc 0 on zero length */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Fetch the parameter block */ >+ ARCH_DEP(vfetchc)(parameter_block, 31, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KM_DEBUG >+ LOGBYTE("k :", parameter_block, 32); > #endif > > /* Set the cryptographic keys */ >- aes_set_key(&context, parameter_block, 128); >+ aes_set_key(&context, parameter_block, 256); > > /* Try to process the CPU-determined amount of data */ > crypted = 0; >@@ -1085,7 +1586,7 @@ static void ARCH_DEP(km_aes_128)(int r1, > /* CPU-determined amount of data processed */ > regs->psw.cc = 3; > } >-#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 */ >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 */ > > /*----------------------------------------------------------------------------*/ > /* B91E Compute message authentication code (KMAC) FC 0 */ >@@ -1915,7 +2416,251 @@ static void ARCH_DEP(kmc_aes_128)(int r1 > /* CPU-determined amount of data processed */ > regs->psw.cc = 3; > } >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 */ >+ >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+/*----------------------------------------------------------------------------*/ >+/* B92F Cipher message with chaining (KMC) FC 19 */ >+/*----------------------------------------------------------------------------*/ >+static void ARCH_DEP(kmc_aes_192)(int r1, int r2, REGS *regs) >+{ >+ aes_context context; >+ int crypted; >+ int i; >+ BYTE message_block[16]; >+ int modifier_bit; >+ BYTE ocv[16]; >+ BYTE parameter_block[40]; >+ int r1_is_not_r2; >+ >+#ifdef OPTION_KMC_DEBUG >+ logmsg(" KMC: function 19: aes-192\n"); >+#endif >+ >+ /* Check special conditions */ >+ if(unlikely(!r1 || r1 & 0x01 || !r2 || r2 & 0x01 || GR_A(r2 + 1, regs) % 16)) >+ ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ /* Return with cc 0 on zero length */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Test writeability output chaining value */ >+ ARCH_DEP(validate_operand)(GR_A(1, regs), 1, 15, ACCTYPE_WRITE, regs); >+ >+ /* Fetch the parameter block */ >+ ARCH_DEP(vfetchc)(parameter_block, 39, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("icv :", parameter_block, 16); >+ LOGBYTE("k :", ¶meter_block[16], 24); >+#endif >+ >+ /* Set the cryptographic key */ >+ aes_set_key(&context, ¶meter_block[16], 192); >+ >+ /* Try to process the CPU-determined amount of data */ >+ crypted = 0; >+ modifier_bit = GR0_m(regs); >+ r1_is_not_r2 = r1 != r2; >+ while(crypted += 16 < PROCESS_MAX) >+ { >+ /* Fetch a block of data */ >+ ARCH_DEP(vfetchc)(message_block, 15, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("input :", message_block, 16); >+#endif >+ >+ /* Do the job */ >+ if(modifier_bit) >+ { >+ >+ /* Save the ovc */ >+ memcpy(ocv, message_block, 16); >+ >+ /* Decrypt and XOR */ >+ aes_decrypt(&context, message_block, message_block); >+ for(i = 0; i < 16; i++) >+ message_block[i] ^= parameter_block[i]; >+ } >+ else >+ { >+ /* XOR and encrypt */ >+ for(i = 0; i < 16; i++) >+ message_block[i] ^= parameter_block[i]; >+ aes_encrypt(&context, message_block, message_block); >+ >+ /* Save the ovc */ >+ memcpy(ocv, message_block, 16); >+ } >+ >+ /* Store the output */ >+ ARCH_DEP(vstorec)(message_block, 15, GR_A(r1, regs), r1, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("output:", message_block, 16); >+#endif >+ >+ /* Store the output chaining value */ >+ ARCH_DEP(vstorec)(ocv, 15, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("ocv :", ocv, 16); >+#endif >+ >+ /* Update the registers */ >+ SET_GR_A(r1, regs, GR_A(r1, regs) + 16); >+ if(likely(r1_is_not_r2)) >+ SET_GR_A(r2, regs, GR_A(r2, regs) + 16); >+ SET_GR_A(r2 + 1, regs, GR_A(r2 + 1, regs) - 16); >+ >+#ifdef OPTION_KMC_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r1, (regs)->GR(r1)); >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ /* check for end of data */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Set cv for next 16 bytes */ >+ memcpy(parameter_block, ocv, 16); >+ } >+ >+ /* CPU-determined amount of data processed */ >+ regs->psw.cc = 3; >+} >+ >+/*----------------------------------------------------------------------------*/ >+/* B92F Cipher message with chaining (KMC) FC 20 */ >+/*----------------------------------------------------------------------------*/ >+static void ARCH_DEP(kmc_aes_256)(int r1, int r2, REGS *regs) >+{ >+ aes_context context; >+ int crypted; >+ int i; >+ BYTE message_block[16]; >+ int modifier_bit; >+ BYTE ocv[16]; >+ BYTE parameter_block[48]; >+ int r1_is_not_r2; >+ >+#ifdef OPTION_KMC_DEBUG >+ logmsg(" KMC: function 20: aes-256\n"); >+#endif >+ >+ /* Check special conditions */ >+ if(unlikely(!r1 || r1 & 0x01 || !r2 || r2 & 0x01 || GR_A(r2 + 1, regs) % 16)) >+ ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ /* Return with cc 0 on zero length */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Test writeability output chaining value */ >+ ARCH_DEP(validate_operand)(GR_A(1, regs), 1, 15, ACCTYPE_WRITE, regs); >+ >+ /* Fetch the parameter block */ >+ ARCH_DEP(vfetchc)(parameter_block, 47, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("icv :", parameter_block, 16); >+ LOGBYTE("k :", ¶meter_block[16], 32); >+#endif >+ >+ /* Set the cryptographic key */ >+ aes_set_key(&context, ¶meter_block[16], 256); >+ >+ /* Try to process the CPU-determined amount of data */ >+ crypted = 0; >+ modifier_bit = GR0_m(regs); >+ r1_is_not_r2 = r1 != r2; >+ while(crypted += 16 < PROCESS_MAX) >+ { >+ /* Fetch a block of data */ >+ ARCH_DEP(vfetchc)(message_block, 15, GR_A(r2, regs), r2, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("input :", message_block, 16); >+#endif >+ >+ /* Do the job */ >+ if(modifier_bit) >+ { >+ >+ /* Save the ovc */ >+ memcpy(ocv, message_block, 16); >+ >+ /* Decrypt and XOR */ >+ aes_decrypt(&context, message_block, message_block); >+ for(i = 0; i < 16; i++) >+ message_block[i] ^= parameter_block[i]; >+ } >+ else >+ { >+ /* XOR and encrypt */ >+ for(i = 0; i < 16; i++) >+ message_block[i] ^= parameter_block[i]; >+ aes_encrypt(&context, message_block, message_block); >+ >+ /* Save the ovc */ >+ memcpy(ocv, message_block, 16); >+ } >+ >+ /* Store the output */ >+ ARCH_DEP(vstorec)(message_block, 15, GR_A(r1, regs), r1, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("output:", message_block, 16); >+#endif >+ >+ /* Store the output chaining value */ >+ ARCH_DEP(vstorec)(ocv, 15, GR_A(1, regs), 1, regs); >+ >+#ifdef OPTION_KMC_DEBUG >+ LOGBYTE("ocv :", ocv, 16); >+#endif >+ >+ /* Update the registers */ >+ SET_GR_A(r1, regs, GR_A(r1, regs) + 16); >+ if(likely(r1_is_not_r2)) >+ SET_GR_A(r2, regs, GR_A(r2, regs) + 16); >+ SET_GR_A(r2 + 1, regs, GR_A(r2 + 1, regs) - 16); >+ >+#ifdef OPTION_KMC_DEBUG >+ logmsg(" GR%02d : " F_GREG "\n", r1, (regs)->GR(r1)); >+ logmsg(" GR%02d : " F_GREG "\n", r2, (regs)->GR(r2)); >+ logmsg(" GR%02d : " F_GREG "\n", r2 + 1, (regs)->GR(r2 + 1)); >+#endif >+ >+ /* check for end of data */ >+ if(unlikely(!GR_A(r2 + 1, regs))) >+ { >+ regs->psw.cc = 0; >+ return; >+ } >+ >+ /* Set cv for next 16 bytes */ >+ memcpy(parameter_block, ocv, 16); >+ } >+ >+ /* CPU-determined amount of data processed */ >+ regs->psw.cc = 3; >+} >+#endif /* FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 */ > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 > /*----------------------------------------------------------------------------*/ > /* B92F Cipher message with chaining (KMC) FC 67 */ > /*----------------------------------------------------------------------------*/ >@@ -2085,6 +2830,12 @@ DEF_INST(compute_intermediate_message_di > break; > #endif > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ case 3: >+ ARCH_DEP(kimd_sha_512)(r1, r2, regs); >+ break; >+#endif >+ > default: > ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); > break; >@@ -2130,6 +2881,12 @@ DEF_INST(compute_last_message_digest_d) > break; > #endif > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ case 3: >+ ARCH_DEP(klmd_sha_512)(r1, r2, regs); >+ break; >+#endif >+ > default: > ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); > break; >@@ -2183,6 +2940,16 @@ DEF_INST(cipher_message_d) > break; > #endif > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ case 19: >+ ARCH_DEP(km_aes_192)(r1, r2, regs); >+ break; >+ >+ case 20: >+ ARCH_DEP(km_aes_256)(r1, r2, regs); >+ break; >+#endif >+ > default: > ARCH_DEP(program_interrupt)(regs, PGM_SPECIFICATION_EXCEPTION); > break; >@@ -2279,7 +3046,19 @@ DEF_INST(cipher_message_with_chaining_d) > case 18: > ARCH_DEP(kmc_aes_128)(r1, r2, regs); > break; >+#endif >+ >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ case 19: >+ ARCH_DEP(kmc_aes_192)(r1, r2, regs); >+ break; >+ >+ case 20: >+ ARCH_DEP(kmc_aes_256)(r1, r2, regs); >+ break; >+#endif > >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 > case 67: > ARCH_DEP(kmc_prng)(r1, r2, regs); > break; >@@ -2335,6 +3114,13 @@ HDL_REGISTER_SECTION; > #endif /*defined(_900_FEATURE_MESSAGE_SECURITY_ASSIST)*/ > > logmsg("Crypto module loaded (c) Copyright Bernard van der Helm, 2003-2007\n"); >+ logmsg(" Active: Message Security Assist\n"); >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >+ logmsg(" Message Security Assist Extension 1\n"); >+#endif >+#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 >+ logmsg(" Message Security Assist Extension 2\n"); >+#endif > > } > END_REGISTER_SECTION; >diff -Naupr hercules-3.05/crypto/Makefile.in hercules-20070717/crypto/Makefile.in >--- hercules-3.05/crypto/Makefile.in 2007-06-23 16:59:38.000000000 +0200 >+++ hercules-20070717/crypto/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,553 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >- >-# >-# Makefile for Hercules S/370, ESA/390 and z/Architecture emulator >-# >- >-# $Id: Makefile.am,v 1.13 2006/12/08 09:43:34 jj Exp $ >-# >-# $Log: Makefile.am,v $ >-# Revision 1.13 2006/12/08 09:43:34 jj >-# Add CVS message log >-# >- >- >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = .. >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-subdir = crypto >-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ >- $(srcdir)/Makefile.in >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = $(top_builddir)/config.h >-CONFIG_CLEAN_FILES = >-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; >-am__vpath_adj = case $$p in \ >- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ >- *) f=$$p;; \ >- esac; >-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; >-am__installdirs = "$(DESTDIR)$(modexecdir)" >-modexecLTLIBRARIES_INSTALL = $(INSTALL) >-LTLIBRARIES = $(modexec_LTLIBRARIES) >-am__DEPENDENCIES_1 = ../libhercs.la ../libherc.la ../libhercu.la >-@OPTION_DYNAMIC_LOAD_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) >-dyncrypt_la_DEPENDENCIES = $(am__DEPENDENCIES_2) >-am_dyncrypt_la_OBJECTS = dyncrypt.lo sha1.lo sha256.lo des.lo aes.lo >-dyncrypt_la_OBJECTS = $(am_dyncrypt_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_dyncrypt_la_rpath = -rpath $(modexecdir) >-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) >-depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp >-am__depfiles_maybe = depfiles >-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ >- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) >-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ >- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ >- $(AM_CFLAGS) $(CFLAGS) >-CCLD = $(CC) >-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ >- $(AM_LDFLAGS) $(LDFLAGS) -o $@ >-SOURCES = $(dyncrypt_la_SOURCES) >-DIST_SOURCES = $(dyncrypt_la_SOURCES) >-HEADERS = $(noinst_HEADERS) >-ETAGS = etags >-CTAGS = ctags >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-lns = @LN_S@ >-LDADD = @LTLIBINTL@ @LIBS@ ../libhercs.la ../libherc.la ../libhercu.la >-AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)\intl >-dyndev_SRC = dyncrypt.c sha1.c sha256.c des.c aes.c >-@BUILD_SHARED_FALSE@XSTATIC = -static >-@BUILD_SHARED_TRUE@XSTATIC = >-@OPTION_DYNAMIC_LOAD_FALSE@DYNSRC = $(dyndev_SRC) >-@OPTION_DYNAMIC_LOAD_TRUE@DYNSRC = >-@OPTION_DYNAMIC_LOAD_FALSE@LTDL = >-@OPTION_DYNAMIC_LOAD_TRUE@LTDL = ../ltdl.c >-@OPTION_DYNAMIC_LOAD_FALSE@DYNMOD_LD_FLAGS = >-@OPTION_DYNAMIC_LOAD_TRUE@DYNMOD_LD_FLAGS = -module \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -export-dynamic \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -avoid-version >- >-@OPTION_DYNAMIC_LOAD_FALSE@DYNMOD_LD_ADD = >-@OPTION_DYNAMIC_LOAD_TRUE@DYNMOD_LD_ADD = $(LDADD) >-@OPTION_DYNAMIC_LOAD_FALSE@LIB_LD_FLAGS = $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_FALSE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_FALSE@ -avoid-version >- >-@OPTION_DYNAMIC_LOAD_TRUE@LIB_LD_FLAGS = -export-dynamic \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -avoid-version >- >-HERCMODS = dyncrypt.la >-@OPTION_DYNAMIC_LOAD_TRUE@modexec_LTLIBRARIES = $(HERCMODS) >-dyncrypt_la_SOURCES = dyncrypt.c sha1.c sha256.c des.c aes.c >-dyncrypt_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-dyncrypt_la_LIBADD = $(DYNMOD_LD_ADD) >-noinst_HEADERS = sha1.h sha256.h des.h aes.h >-all: all-am >- >-.SUFFIXES: >-.SUFFIXES: .c .lo .o .obj >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu crypto/Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --gnu crypto/Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-install-modexecLTLIBRARIES: $(modexec_LTLIBRARIES) >- @$(NORMAL_INSTALL) >- test -z "$(modexecdir)" || $(mkdir_p) "$(DESTDIR)$(modexecdir)" >- @list='$(modexec_LTLIBRARIES)'; for p in $$list; do \ >- if test -f $$p; then \ >- f=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=install $(modexecLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(modexecdir)/$$f'"; \ >- $(LIBTOOL) --mode=install $(modexecLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(modexecdir)/$$f"; \ >- else :; fi; \ >- done >- >-uninstall-modexecLTLIBRARIES: >- @$(NORMAL_UNINSTALL) >- @set -x; list='$(modexec_LTLIBRARIES)'; for p in $$list; do \ >- p=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(modexecdir)/$$p'"; \ >- $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(modexecdir)/$$p"; \ >- done >- >-clean-modexecLTLIBRARIES: >- -test -z "$(modexec_LTLIBRARIES)" || rm -f $(modexec_LTLIBRARIES) >- @list='$(modexec_LTLIBRARIES)'; for p in $$list; do \ >- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ >- test "$$dir" != "$$p" || dir=.; \ >- echo "rm -f \"$${dir}/so_locations\""; \ >- rm -f "$${dir}/so_locations"; \ >- done >-dyncrypt.la: $(dyncrypt_la_OBJECTS) $(dyncrypt_la_DEPENDENCIES) >- $(LINK) $(am_dyncrypt_la_rpath) $(dyncrypt_la_LDFLAGS) $(dyncrypt_la_OBJECTS) $(dyncrypt_la_LIBADD) $(LIBS) >- >-mostlyclean-compile: >- -rm -f *.$(OBJEXT) >- >-distclean-compile: >- -rm -f *.tab.c >- >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aes.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/des.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyncrypt.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Plo@am__quote@ >- >-.c.o: >-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(COMPILE) -c $< >- >-.c.obj: >-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` >- >-.c.lo: >-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >- >-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- mkid -fID $$unique >-tags: TAGS >- >-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ >- $(TAGS_FILES) $(LISP) >- tags=; \ >- here=`pwd`; \ >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ >- test -n "$$unique" || unique=$$empty_fix; \ >- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ >- $$tags $$unique; \ >- fi >-ctags: CTAGS >-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ >- $(TAGS_FILES) $(LISP) >- tags=; \ >- here=`pwd`; \ >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- test -z "$(CTAGS_ARGS)$$tags$$unique" \ >- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ >- $$tags $$unique >- >-GTAGS: >- here=`$(am__cd) $(top_builddir) && pwd` \ >- && cd $(top_srcdir) \ >- && gtags -i $(GTAGS_ARGS) $$here >- >-distclean-tags: >- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- >-distdir: $(DISTFILES) >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >-check-am: all-am >-check: check-am >-all-am: Makefile $(LTLIBRARIES) $(HEADERS) >-installdirs: >- for dir in "$(DESTDIR)$(modexecdir)"; do \ >- test -z "$$dir" || $(mkdir_p) "$$dir"; \ >- done >-install: install-am >-install-exec: install-exec-am >-install-data: install-data-am >-uninstall: uninstall-am >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-am >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-am >- >-clean-am: clean-generic clean-libtool clean-modexecLTLIBRARIES \ >- mostlyclean-am >- >-distclean: distclean-am >- -rm -rf ./$(DEPDIR) >- -rm -f Makefile >-distclean-am: clean-am distclean-compile distclean-generic \ >- distclean-libtool distclean-tags >- >-dvi: dvi-am >- >-dvi-am: >- >-html: html-am >- >-info: info-am >- >-info-am: >- >-install-data-am: >- >-install-exec-am: install-modexecLTLIBRARIES >- >-install-info: install-info-am >- >-install-man: >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-am >- -rm -rf ./$(DEPDIR) >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-am >- >-mostlyclean-am: mostlyclean-compile mostlyclean-generic \ >- mostlyclean-libtool >- >-pdf: pdf-am >- >-pdf-am: >- >-ps: ps-am >- >-ps-am: >- >-uninstall-am: uninstall-info-am uninstall-modexecLTLIBRARIES >- >-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ >- clean-libtool clean-modexecLTLIBRARIES ctags distclean \ >- distclean-compile distclean-generic distclean-libtool \ >- distclean-tags distdir dvi dvi-am html html-am info info-am \ >- install install-am install-data install-data-am install-exec \ >- install-exec-am install-info install-info-am install-man \ >- install-modexecLTLIBRARIES install-strip installcheck \ >- installcheck-am installdirs maintainer-clean \ >- maintainer-clean-generic mostlyclean mostlyclean-compile \ >- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ >- tags uninstall uninstall-am uninstall-info-am \ >- uninstall-modexecLTLIBRARIES >- >- >-%.s: %.c >- $(COMPILE) -S $< >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/crypto/sha256.c hercules-20070717/crypto/sha256.c >--- hercules-3.05/crypto/sha256.c 2006-12-30 16:18:31.000000000 +0100 >+++ hercules-20070717/crypto/sha256.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* $OpenBSD: sha2.c,v 1.6 2004/05/03 02:57:36 millert Exp $ */ > /* modified for use with dyncrypt */ > >-// $Id: sha256.c,v 1.9 2006/12/08 09:43:35 jj Exp $ >+// $Id: sha256.c,v 1.10 2008/02/28 10:16:39 rbowler Exp $ > > /* > * FILE: sha2.c >@@ -38,6 +38,9 @@ > */ > > // $Log: sha256.c,v $ >+// Revision 1.10 2008/02/28 10:16:39 rbowler >+// Fix unresolved external symbol _sha512_process >+// > // Revision 1.9 2006/12/08 09:43:35 jj > // Add CVS message log > // >@@ -515,7 +518,7 @@ SHA256_Final(u_int8_t digest[], SHA256_C > } > > >-/* Hashing-only function called by dyncrypt */ >+/* Hashing-only functions called by dyncrypt */ > > void > sha256_process(sha256_context *ctx, u_int8_t data[64]) >@@ -523,6 +526,12 @@ sha256_process(sha256_context *ctx, u_in > SHA256_Transform(ctx, data); > } > >+void >+sha512_process(sha512_context *ctx, u_int8_t data[64]) >+{ >+ SHA512_Transform(ctx, data); >+} >+ > > /*** SHA-512: *********************************************************/ > void >diff -Naupr hercules-3.05/ctcadpt.c hercules-20070717/ctcadpt.c >--- hercules-3.05/ctcadpt.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/ctcadpt.c 2008-09-03 13:07:48.000000000 +0200 >@@ -15,9 +15,12 @@ > // > // Please read README.NETWORKING for more info. > // >-// $Id: ctcadpt.c,v 1.68 2007/06/23 00:04:07 ivan Exp $ >+// $Id: ctcadpt.c,v 1.69 2007/11/21 22:54:14 fish Exp $ > // > // $Log: ctcadpt.c,v $ >+// Revision 1.69 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.68 2007/06/23 00:04:07 ivan > // Update copyright notices to include current year (2007) > // >@@ -191,7 +194,8 @@ void CTCX_Query( DEVBLK* pDEVBLK, > int iBufLen, > char* pBuffer ) > { >- *ppszClass = "CTCA"; >+ BEGIN_DEVICE_CLASS_QUERY( "CTCA", pDEVBLK, ppszClass, iBufLen, pBuffer ); >+ > snprintf( pBuffer, iBufLen, "%s", pDEVBLK->filename ); > } > >diff -Naupr hercules-3.05/ctc_ctci.c hercules-20070717/ctc_ctci.c >--- hercules-3.05/ctc_ctci.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/ctc_ctci.c 2008-09-03 13:07:48.000000000 +0200 >@@ -8,9 +8,24 @@ > // > // linux 2.4 modifications (c) Copyright Fritz Elfert, 2001-2007 > // >-// $Id: ctc_ctci.c,v 1.66 2007/06/23 00:04:05 ivan Exp $ >+// $Id: ctc_ctci.c,v 1.71 2008/02/07 00:29:04 rbowler Exp $ > // > // $Log: ctc_ctci.c,v $ >+// Revision 1.71 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// >+// Revision 1.70 2008/01/11 21:33:21 fish >+// new 'ctc' command to enable/disable debug option on demand >+// >+// Revision 1.69 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// >+// Revision 1.68 2007/07/29 02:02:44 fish >+// Fix day-1 CTCI/LCS bug found by Vince Weaver [vince@deater.net] >+// >+// Revision 1.67 2007/07/29 00:24:43 fish >+// (comment change only) >+// > // Revision 1.66 2007/06/23 00:04:05 ivan > // Update copyright notices to include current year (2007) > // >@@ -19,6 +34,10 @@ > // > > #include "hstdinc.h" >+ >+/* jbs 10/27/2007 added _SOLARIS_ silly typo fixed 01/18/08 when looked at this again */ >+#if !defined(__SOLARIS__) >+ > #include "hercules.h" > #include "ctcadpt.h" > #include "tuntap.h" >@@ -606,9 +625,11 @@ int CTCI_Close( DEVBLK* pDEVBLK ) > void CTCI_Query( DEVBLK* pDEVBLK, char** ppszClass, > int iBufLen, char* pBuffer ) > { >- PCTCBLK pCTCBLK = (PCTCBLK)pDEVBLK->dev_data; >+ CTCBLK* pCTCBLK; >+ >+ BEGIN_DEVICE_CLASS_QUERY( "CTCA", pDEVBLK, ppszClass, iBufLen, pBuffer ); > >- *ppszClass = "CTCA"; >+ pCTCBLK = (CTCBLK*) pDEVBLK->dev_data; > > if(!pCTCBLK) > { >@@ -616,10 +637,11 @@ void CTCI_Query( DEVBLK* pDEVBLK, char* > return; > } > >- snprintf( pBuffer, iBufLen, "CTCI %s/%s (%s)", >+ snprintf( pBuffer, iBufLen, "CTCI %s/%s (%s)%s", > pCTCBLK->szGuestIPAddr, > pCTCBLK->szDriveIPAddr, >- pCTCBLK->szTUNDevName ); >+ pCTCBLK->szTUNDevName, >+ pCTCBLK->fDebug ? " -d" : "" ); > } > > // ------------------------------------------------------------------- >@@ -631,6 +653,9 @@ void CTCI_Query( DEVBLK* pDEVBLK, char* > // The residual byte count is set to indicate the amount of the buffer > // which was not filled. > // >+// For details regarding the actual buffer layout, please refer to >+// the comments preceding the CTCI_ReadThread function. >+ > // Input: > // pDEVBLK A pointer to the CTC adapter device block > // sCount The I/O buffer length from the read CCW >@@ -708,7 +733,9 @@ void CTCI_Read( DEVBLK* pDEVBLK, U16 > > STORE_HW( pFrame->hwOffset, 0x0000 ); > >- iLength = pCTCBLK->iFrameOffset + sizeof( CTCIHDR ) + 2; >+ // (fix for day-1 bug offered by Vince Weaver [vince@deater.net]) >+// iLength = pCTCBLK->iFrameOffset + sizeof( CTCIHDR ) + 2; >+ iLength = pCTCBLK->iFrameOffset + sizeof( CTCIHDR ); > > if( sCount < iLength ) > { >@@ -747,6 +774,10 @@ void CTCI_Read( DEVBLK* pDEVBLK, U16 > // ------------------------------------------------------------------- > // CTCI_Write > // ------------------------------------------------------------------- >+// >+// For details regarding the actual buffer layout, please refer to >+// the comments preceding the CTCI_ReadThread function. >+// > > void CTCI_Write( DEVBLK* pDEVBLK, U16 sCount, > BYTE* pIOBuf, BYTE* pUnitStat, >@@ -924,15 +955,31 @@ void CTCI_Write( DEVBLK* pDEVBLK, U16 > // is enqueued on the device frame buffer. > // > // The device frame buffer is a chain of blocks. The first 2 bytes of >-// a block specify the offset in the buffer of the next block. The >-// final block in indicated by an offset of 0x0000. >-// >-// Within each block, each IP frame is preceeded by a segment header. >-// This segment header has a 2 byte length field that specifies the >-// length of the segment (including the segment header), a 2 byte >-// frame type field (always 0x0800 - IPv4), and a 2 byte reserved area >-// followed by the actual frame data. >+// a block (CTCIHDR) specify the offset in the buffer of the next block. >+// The final block in indicated by a CTCIHDR offset value of 0x0000. > // >+// Within each block, each IP frame is preceeded by a segment header >+// (CTCISEG). This segment header has a 2 byte length field that >+// specifies the length of the segment (including the segment header), >+// a 2 byte frame type field (always 0x0800 = IPv4), and a 2 byte >+// reserved area (always 0000), followed by the actual frame data. >+// >+// The CTCI_ReadThread reads the IP frame, then CTCI_EnqueueIPFrame >+// function is called to add it to the frame buffer (which precedes >+// each one with a CTCISEG and adjusts the block header (CTCIHDR) >+// offset value as appropriate. >+// >+// Oddly, it is the CTCI_Read function (called by CCW processing in >+// response to a guest SIO request) that adds the CTCIHDR with the >+// 000 offset value marking the end of the buffer's chain of blocks, >+// and not the CTCI_EnqueueIPFrame nor the CTCI_ReadThread as would >+// be expected. >+// >+// Also note that the iFrameOffset field in the CTCI device's CTCBLK >+// control block is the offset from the end of the buffer's first >+// CTCIHDR to where the end-of-chain CTCIHDR is, and is identical to >+// all of the queued CTCISEG's hwLength fields added together. >+// > > static void* CTCI_ReadThread( PCTCBLK pCTCBLK ) > { >@@ -1003,8 +1050,9 @@ static void* CTCI_ReadThread( PCTCBLK p > // CTCI_EnqueueIPFrame > // -------------------------------------------------------------------- > // >-// Places the provided IP frame in the next available frame >-// slot in the adapter buffer. >+// Places the provided IP frame in the next available frame slot in >+// the adapter buffer. For details regarding the actual buffer layout >+// please refer to the comments preceding the CTCI_ReadThread function. > // > // Returns: > // >@@ -1524,3 +1572,4 @@ static int ParseArgs( DEVBLK* pDEVBLK, > > return 0; > } >+#endif /* !defined(__SOLARIS__) jbs */ >diff -Naupr hercules-3.05/ctc_lcs.c hercules-20070717/ctc_lcs.c >--- hercules-3.05/ctc_lcs.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/ctc_lcs.c 2008-09-03 13:07:48.000000000 +0200 >@@ -4,9 +4,27 @@ > // > // Copyright (C) 2002-2007 by James A. Pierson > // >-// $Id: ctc_lcs.c,v 1.64 2007/06/23 00:04:05 ivan Exp $ >+// $Id: ctc_lcs.c,v 1.70 2008/05/22 18:27:25 fish Exp $ > // > // $Log: ctc_lcs.c,v $ >+// Revision 1.70 2008/05/22 18:27:25 fish >+// Fix read timeout bug in LCS logic >+// >+// Revision 1.69 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// >+// Revision 1.68 2008/01/11 21:33:21 fish >+// new 'ctc' command to enable/disable debug option on demand >+// >+// Revision 1.67 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// >+// Revision 1.66 2007/08/17 00:59:40 fish >+// Backout 28 Jul fix for LCS (fix was only meant for CTCI) >+// >+// Revision 1.65 2007/07/29 02:02:44 fish >+// Fix day-1 CTCI/LCS bug found by Vince Weaver [vince@deater.net] >+// > // Revision 1.64 2007/06/23 00:04:05 ivan > // Update copyright notices to include current year (2007) > // >@@ -24,6 +42,10 @@ > // > > #include "hstdinc.h" >+ >+/* jbs 10/27/2007 added _SOLARIS_ */ >+#if !defined(__SOLARIS__) >+ > #include "hercules.h" > #include "ctcadpt.h" > #include "tuntap.h" >@@ -699,9 +721,11 @@ void LCS_Query( DEVBLK* pDEVBLK, char** > { > char *sType[] = { "", " Pri", " Sec" }; > >- PLCSDEV pLCSDEV = (PLCSDEV)pDEVBLK->dev_data; >+ LCSDEV* pLCSDEV; >+ >+ BEGIN_DEVICE_CLASS_QUERY( "CTCA", pDEVBLK, ppszClass, iBufLen, pBuffer ); > >- *ppszClass = "CTCA"; >+ pLCSDEV = (LCSDEV*) pDEVBLK->dev_data; > > if(!pLCSDEV) > { >@@ -709,11 +733,12 @@ void LCS_Query( DEVBLK* pDEVBLK, char** > return; > } > >- snprintf( pBuffer, iBufLen, "LCS Port %2.2X %s%s (%s)", >+ snprintf( pBuffer, iBufLen, "LCS Port %2.2X %s%s (%s)%s", > pLCSDEV->bPort, > pLCSDEV->bMode == LCSDEV_MODE_IP ? "IP" : "SNA", > sType[pLCSDEV->bType], >- pLCSDEV->pLCSBLK->Port[pLCSDEV->bPort].szNetDevName ); >+ pLCSDEV->pLCSBLK->Port[pLCSDEV->bPort].szNetDevName, >+ pLCSDEV->pLCSBLK->fDebug ? " -d" : "" ); > } > > // >@@ -1445,6 +1470,9 @@ static void* LCS_PortThread( PLCSPORT p > // Read an IP packet from the TAP device > iLength = TUNTAP_Read( pPort->fd, szBuff, sizeof( szBuff ) ); > >+ if( iLength == 0 ) // (probably EINTR; ignore) >+ continue; >+ > // Check for other error condition > if( iLength < 0 ) > { >@@ -2451,3 +2479,5 @@ HDL_DEVICE_SECTION; > } > END_DEVICE_SECTION > #endif >+ >+#endif /* !defined(__SOLARIS__) jbs 10/2007 10/2007 */ >diff -Naupr hercules-3.05/.cvsignore hercules-20070717/.cvsignore >--- hercules-3.05/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,196 @@ >+.DS_Store >+.deps >+.libs >+winbuild >+Makefile >+cckd2ckd >+cckdcdsk >+cckdcomp >+cckddiag >+cckdswap >+cfba2fba >+ckd2cckd >+configure >+dasdcat >+dasdconv >+dasdcopy >+dasdinit >+dasdisup >+dasdload >+dasdls >+dasdpdsu >+dasdseq >+dmap2hrc >+dyngui >+dyninst >+fba2cfba >+hdt1403 >+hdt2703 >+hdt3088 >+hdt3270 >+hdt3420 >+hdt3505 >+hdt3525 >+hdt1052c >+hdteq >+hercifc >+hercules >+hetget >+hetinit >+hetmap >+hetupd >+libtool >+stamp-h >+stamp-h1 >+tapecopy >+tapemap >+tapesplt >+autom4te.cache >+hercules.def >+dyngui.dll >+dyninst.dll >+hdt1403.dll >+hdt2703.dll >+hdt3088.dll >+hdt3270.dll >+hdt1052c.dll >+hdt3420.dll >+hdt3505.dll >+hdt3525.dll >+hdteq.dll >+hercules.exp >+config.h >+config.h.in >+Makefile.in >+stamp-h.in >+dyngui.la >+dyninst.la >+hdt1403.la >+hdt2703.la >+hdt3088.la >+hdt3270.la >+hdt3420.la >+hdt3505.la >+hdt3525.la >+hdt2880.la >+hdteq.la >+hdtqeth.la >+hdt1052c.la >+libfthreads.la >+libherc.la >+libhercd.la >+libhercs.la >+libherct.la >+libhercu.la >+assist.lo >+awstape.lo >+cache.lo >+cardpch.lo >+cardrdr.lo >+cckddasd.lo >+cckdutil.lo >+cgibin.lo >+channel.lo >+chsc.lo >+ckddasd.lo >+cmpsc.lo >+clock.lo >+codepage.lo >+commadpt.lo >+config.lo >+console.lo >+control.lo >+cpu.lo >+crypto.lo >+ctc_ctci.lo >+ctc_lcs.lo >+ctcadpt.lo >+dasdtab.lo >+dasdutil.lo >+dat.lo >+decimal.lo >+dfp.lo >+diagmssf.lo >+diagnose.lo >+dyngui.lo >+dyninst.lo >+ecpsvm.lo >+esame.lo >+external.lo >+fbadasd.lo >+fillfnam.lo >+float.lo >+fthreads.lo >+general1.lo >+general2.lo >+general3.lo >+hao.lo >+hdl.lo >+hdlmain.lo >+hdteq.lo >+hetlib.lo >+hettape.lo >+history.lo >+hostinfo.lo >+hsccmd.lo >+hscmisc.lo >+hscutl.lo >+hscutl2.lo >+hsocket.lo >+hsys.lo >+httpserv.lo >+ieee.lo >+impl.lo >+io.lo >+ipl.lo >+loadparm.lo >+logger.lo >+logmsg.lo >+ltdl.lo >+machchk.lo >+memrchr.lo >+omatape.lo >+opcode.lo >+panel.lo >+parser.lo >+pfpo.lo >+plo.lo >+printer.lo >+pttrace.lo >+qdio.lo >+qeth.lo >+con1052c.lo >+service.lo >+shared.lo >+sie.lo >+sllib.lo >+sockdev.lo >+stack.lo >+tapeccws.lo >+tapedev.lo >+timer.lo >+trace.lo >+tuntap.lo >+vector.lo >+version.lo >+vm.lo >+vstore.lo >+w32chan.lo >+w32ctca.lo >+w32stape.lo >+xstore.lo >+autogen.log >+config.log >+aclocal.m4 >+dyngui.res >+config.status >+bldcfg.lo >+sr.lo >+hchan.lo >+hconsole.lo >+herclin >+scsitape.lo >+strsignal.lo >+w32util.lo >+hercules-*.tar.gz >+hao.lo >diff -Naupr hercules-3.05/dasdcopy.c hercules-20070717/dasdcopy.c >--- hercules-3.05/dasdcopy.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/dasdcopy.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,13 +1,32 @@ > /* DASDCOPY.C (c) Copyright Roger Bowler, 1999-2007 */ >-/* Copy a dasd file to another dasd file. */ >-/* Input file and output file may be compressed or not. */ >-/* Files may be either ckd (or cckd) or fba (or cfba) but */ >-/* file types (ckd/cckd or fba/cfba) may not be mixed. */ >+/* Copy a dasd file to another dasd file */ >+ >+// $Id: dasdcopy.c,v 1.29 2008/04/03 16:16:30 rbowler Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This program copies a dasd file to another dasd file. */ >+/* Input file and output file may be compressed or not. */ >+/* Files may be either ckd (or cckd) or fba (or cfba) but */ >+/* file types (ckd/cckd or fba/cfba) may not be mixed. */ >+/* */ >+/* Usage: */ >+/* dasdcopy [-options] ifile [sf=sfile] ofile */ >+/* */ >+/* Refer to the usage section below for details of options. */ >+/* */ >+/* The program may also be invoked by one of the following */ >+/* aliases which override the default output file format: */ >+/* */ >+/* ckd2cckd [-options] ifile ofile */ >+/* cckd2ckd [-options] ifile [sf=sfile] ofile */ >+/* fba2cfba [-options] ifile ofile */ >+/* cfba2fba [-options] ifile [sf=sfile] ofile */ > /*-------------------------------------------------------------------*/ > >-// $Id: dasdcopy.c,v 1.28 2007/06/23 00:04:08 ivan Exp $ >-// > // $Log: dasdcopy.c,v $ >+// Revision 1.29 2008/04/03 16:16:30 rbowler >+// Standardize comment block in module header (cosmetic change only) >+// > // Revision 1.28 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/dasdinit.c hercules-20070717/dasdinit.c >--- hercules-3.05/dasdinit.c 2007-06-23 14:58:04.000000000 +0200 >+++ hercules-20070717/dasdinit.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,10 +1,9 @@ > /* DASDINIT.C (c) Copyright Roger Bowler, 1999-2007 */ > /* Hercules DASD Utilities: DASD image builder */ > >-// $Id: dasdinit.c,v 1.47 2007/06/23 00:04:08 ivan Exp $ >+// $Id: dasdinit.c,v 1.49 2007/09/30 13:30:08 rbowler Exp $ > > /*-------------------------------------------------------------------*/ >-/* */ > /* This program creates a disk image file and initializes it as */ > /* a blank FBA or CKD DASD volume. */ > /* */ >@@ -41,6 +40,12 @@ > /*-------------------------------------------------------------------*/ > > // $Log: dasdinit.c,v $ >+// Revision 1.49 2007/09/30 13:30:08 rbowler >+// Revert extra blank lines inserted by rev 1.12 >+// >+// Revision 1.48 2007/09/30 12:23:22 rbowler >+// Error message if DASD initialisation unsuccessful >+// > // Revision 1.47 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -161,6 +166,7 @@ CKDDEV *ckd; > FBADEV *fba; /* -> FBA device table entry */ > int lfs = 0; /* 1 = Build large file */ > int nullfmt = CKDDASD_NULLTRK_FMT1; /* Null track format type */ >+int rc; /* Return code */ > > #ifdef EXTERNALGUI > if (argc >= 1 && strncmp(argv[argc-1],"EXTERNALGUI",11) == 0) >@@ -201,22 +207,19 @@ int nullfmt = CKDDASD_NULLTRK_FMT1; > } > > /* Check remaining number of arguments */ >- > if (argc < (rawflag ? 3 : 4) || argc > (rawflag ? 4 : 5)) > argexit(5, NULL); > > /* The first argument is the file name */ >- >- if (!argv[1] || strlen(argv[1]) == 0 >+ if (argv[1] == NULL || strlen(argv[1]) == 0 > || strlen(argv[1]) > sizeof(fname)-1) > argexit(1, argv[1]); > > strcpy (fname, argv[1]); > >- /* The second argument is the device type, >- with or without the model number. */ >- >- if (!argv[2]) >+ /* The second argument is the device type. >+ Model number may also be specified */ >+ if (argv[2] == NULL) > argexit(2, argv[2]); > ckd = dasd_lookup (DASD_CKDDEV, argv[2], 0, 0); > if (ckd != NULL) >@@ -255,7 +258,7 @@ int nullfmt = CKDDASD_NULLTRK_FMT1; > volsize_argnum = 4; > > /* The third argument is the volume serial number */ >- if (!argv[3] || strlen(argv[3]) == 0 >+ if (argv[3] == NULL || strlen(argv[3]) == 0 > || strlen(argv[3]) > sizeof(volser)-1) > argexit(3, argv[3]); > >@@ -284,19 +287,23 @@ int nullfmt = CKDDASD_NULLTRK_FMT1; > size += altsize; > > /* Create the device */ >- > if (type == 'C') >- create_ckd (fname, devtype, heads, maxdlen, size, volser, >- comp, lfs, 0, nullfmt, rawflag); >+ rc = create_ckd (fname, devtype, heads, maxdlen, size, volser, >+ comp, lfs, 0, nullfmt, rawflag); > else >- create_fba (fname, devtype, sectsize, size, volser, comp, >- lfs, 0, rawflag); >+ rc = create_fba (fname, devtype, sectsize, size, volser, comp, >+ lfs, 0, rawflag); > > /* Display completion message */ >+ if (rc == 0) >+ { >+ fprintf (stderr, _("HHCDI001I DASD initialization successfully " >+ "completed.\n")); >+ } else { >+ fprintf (stderr, _("HHCDI002I DASD initialization unsuccessful" >+ "\n")); >+ } > >- fprintf (stderr, _("HHCDI001I DASD initialization successfully " >- "completed.\n")); >- >- return 0; >+ return rc; > > } /* end function main */ >diff -Naupr hercules-3.05/dasdtab.c hercules-20070717/dasdtab.c >--- hercules-3.05/dasdtab.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/dasdtab.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* DASDTAB.C (c) Copyright Roger Bowler, 1999-2007 */ > /* Hercules Supported DASD definitions */ > >-// $Id: dasdtab.c,v 1.37 2007/06/23 00:04:08 ivan Exp $ >+// $Id: dasdtab.c,v 1.38 2008/02/13 00:30:22 gsmith Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains the tables that define the attributes of */ >@@ -15,6 +15,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: dasdtab.c,v $ >+// Revision 1.38 2008/02/13 00:30:22 gsmith >+// Fix 3880 SNSID length (thanks De!) >+// > // Revision 1.37 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -240,9 +243,16 @@ int len; > store_fw (devid +32, cu->ciw7); > store_fw (devid +36, cu->ciw8); > >- /* Calculate length */ >- for (len = 40; fetch_fw(devid + len-4) == 0; len -= 4); >- len = len < 12 ? 12 : len; >+ /* Set length */ >+ if (cu->ciw8 != 0) len = 40; >+ else if (cu->ciw7 != 0) len = 36; >+ else if (cu->ciw6 != 0) len = 32; >+ else if (cu->ciw5 != 0) len = 28; >+ else if (cu->ciw4 != 0) len = 24; >+ else if (cu->ciw3 != 0) len = 20; >+ else if (cu->ciw2 != 0) len = 16; >+ else if (cu->ciw1 != 0) len = 12; >+ else len = 7; > > return len; > } >diff -Naupr hercules-3.05/dat.h hercules-20070717/dat.h >--- hercules-3.05/dat.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/dat.h 2008-09-03 13:07:48.000000000 +0200 >@@ -4,7 +4,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: dat.h,v 1.107 2007/06/23 00:04:08 ivan Exp $ >+// $Id: dat.h,v 1.111 2008/03/16 00:04:37 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the DAT, ALET, and ASN translation */ >@@ -24,6 +24,19 @@ > /*-------------------------------------------------------------------*/ > > // $Log: dat.h,v $ >+// Revision 1.111 2008/03/16 00:04:37 rbowler >+// Replace ACC_ARMODE by USE_ARMODE for LPTEA >+// >+// Revision 1.110 2008/03/15 23:41:16 rbowler >+// Correct end function comment for logical_to_main >+// >+// Revision 1.109 2008/01/25 00:50:18 gsmith >+// Fix invalidate_tlbe processing - Paul Leisy >+// >+// Revision 1.108 2007/08/31 10:01:01 ivan >+// Throw an addressing exception when a SIE host->guest DAT points beyond >+// addressable storage >+// > // Revision 1.107 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -565,8 +578,8 @@ int i; > /* arn Access register number (0-15) to be used if the */ > /* address-space control (PSW bits 16-17) indicates */ > /* that ARMODE is the current translation mode. */ >-/* An access type ORed with the special value */ >-/* ACC_ARMODE forces this routine to use ARMODE */ >+/* An access register number ORed with the special */ >+/* value USE_ARMODE forces this routine to use ARMODE */ > /* regardless of the PSW address-space control setting. */ > /* Access register 0 is treated as if it contained 0 */ > /* and its actual contents are not examined. */ >@@ -652,9 +665,12 @@ U16 eax; > #if defined(FEATURE_ACCESS_REGISTERS) > if (ACCESS_REGISTER_MODE(®s->psw) > || (SIE_ACTIVE(regs) && MULTIPLE_CONTROLLED_DATA_SPACE(regs->guestregs)) >- || (acctype & ACC_ARMODE) >+ || (arn & USE_ARMODE) > ) > { >+ /* Remove flags giving access register number 0-15 */ >+ arn &= 0xF; >+ > /* [5.8.4.1] Select the access-list-entry token */ > alet = (arn == 0) ? 0 : > /* Guest ALET if XC guest in AR mode */ >@@ -1578,7 +1594,7 @@ reg_second_invalid: > cc = 2; > return cc; > } /* end if(ACCTYPE_LPTEA) */ >- >+ > /* Otherwise set translation exception code */ > goto reg_second_excp; > >@@ -1590,7 +1606,7 @@ reg_third_invalid: > cc = 2; > return cc; > } /* end if(ACCTYPE_LPTEA) */ >- >+ > /* Otherwise set translation exception code */ > goto reg_third_excp; > >@@ -1619,7 +1635,7 @@ reg_third_excp: > > tran_excp_addr: > /* For LPTEA instruction, return xcode with cc = 3 */ >- if (acctype & ACC_LPTEA) >+ if (acctype & ACC_LPTEA) > return 3; > > /* Set the translation exception address */ >@@ -1828,10 +1844,29 @@ int i; > > /*-------------------------------------------------------------------*/ > /* Invalidate matching translation lookaside buffer entries */ >+/* */ >+/* Input: */ >+/* main mainstore address to match on. This is mainstore */ >+/* base plus absolute address (regs->mainstor+aaddr) */ >+/* */ >+/* This function is called by the SSK(E) instructions to purge */ >+/* TLB entries that match the mainstore address. The "main" */ >+/* field in the TLB contains the mainstore address plus an */ >+/* XOR hash with effective address (regs->mainstor+aaddr^addr). */ >+/* Before the compare can happen, the effective address from */ >+/* the tlb (TLB_VADDR) must be XORed with the "main" field from */ >+/* the tlb (removing hash). This is done using MAINADDR() macro. */ >+/* NOTES: */ >+/* TLB_VADDR does not contain all the effective address bits and */ >+/* must be created on-the-fly using the tlb index (i << shift). */ >+/* TLB_VADDR also contains the tlbid, so the regs->tlbid is merged */ >+/* with the main input variable before the search is begun. */ > /*-------------------------------------------------------------------*/ > _DAT_C_STATIC void ARCH_DEP(invalidate_tlbe) (REGS *regs, BYTE *main) > { >-int i; >+ int i; /* index into TLB */ >+ int shift; /* Number of bits to shift */ >+ BYTE *mainwid; /* mainstore with tlbid */ > > if (main == NULL) > { >@@ -1839,14 +1874,14 @@ int i; > return; > } > >+ mainwid = main + regs->tlbID; >+ > INVALIDATE_AIA_MAIN(regs, main); >+ shift = regs->arch_mode == ARCH_370 ? 11 : 12; > for (i = 0; i < TLBN; i++) >-#if 1 >- if(regs->tlb.main[i] == main) >-#else > if (MAINADDR(regs->tlb.main[i], >- regs->tlb.TLB_VADDR(i)) == main) >-#endif >+ (regs->tlb.TLB_VADDR(i) | (i << shift))) >+ == mainwid) > { > regs->tlb.acc[i] = 0; > #if !defined(FEATURE_S390_DAT) && !defined(FEATURE_ESAME) >@@ -1860,13 +1895,11 @@ int i; > if (regs->host && regs->guestregs) > { > INVALIDATE_AIA_MAIN(regs->guestregs, main); >+ shift = regs->guestregs->arch_mode == ARCH_370 ? 11 : 12; > for (i = 0; i < TLBN; i++) >-#if 1 >- if(regs->guestregs->tlb.main[i] == main) >-#else > if (MAINADDR(regs->guestregs->tlb.main[i], >- regs->guestregs->tlb.TLB_VADDR(i)) == main) >-#endif >+ (regs->guestregs->tlb.TLB_VADDR(i) | (i << shift))) >+ == mainwid) > { > regs->guestregs->tlb.acc[i] = 0; > #if !defined(FEATURE_S390_DAT) && !defined(FEATURE_ESAME) >@@ -1880,13 +1913,11 @@ int i; > if (regs->guest) > { > INVALIDATE_AIA_MAIN(regs->hostregs, main); >+ shift = regs->hostregs->arch_mode == ARCH_370 ? 11 : 12; > for (i = 0; i < TLBN; i++) >-#if 1 >- if(regs->hostregs->tlb.main[i] == main) >-#else > if (MAINADDR(regs->hostregs->tlb.main[i], >- regs->hostregs->tlb.TLB_VADDR(i)) == main) >-#endif >+ (regs->hostregs->tlb.TLB_VADDR(i) | (i << shift))) >+ == mainwid) > { > regs->hostregs->tlb.acc[i] = 0; > #if !defined(FEATURE_S390_DAT) && !defined(FEATURE_ESAME) >@@ -2161,6 +2192,9 @@ int ix = TLBIX(addr); > /* Convert host real address to host absolute address */ > regs->hostregs->dat.aaddr = aaddr = > APPLY_PREFIXING (regs->hostregs->dat.raddr, regs->hostregs->PX); >+ >+ if(regs->hostregs->dat.aaddr > regs->hostregs->mainlim) >+ goto vabs_addr_excp; > } > > /* Do not apply host key access when SIE fetches/stores data */ >@@ -2269,7 +2303,7 @@ vabs_prog_check: > regs->program_interrupt (regs, regs->dat.xcode); > > return NULL; /* prevent warning from compiler */ >-} /* end function logical_to_abs */ >+} /* end function ARCH_DEP(logical_to_main) */ > > #endif /*!defined(OPTION_NO_INLINE_LOGICAL) || defined(_DAT_C) */ > >diff -Naupr hercules-3.05/decNumber/.cvsignore hercules-20070717/decNumber/.cvsignore >--- hercules-3.05/decNumber/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/decNumber/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,11 @@ >+.deps >+.libs >+Makefile >+Makefile.in >+libdecNumber.la >+decContext.lo >+decimal128.lo >+decimal32.lo >+decimal64.lo >+decNumber.lo >+decPacked.lo >diff -Naupr hercules-3.05/decNumber/Makefile.in hercules-20070717/decNumber/Makefile.in >--- hercules-3.05/decNumber/Makefile.in 2007-06-23 16:59:38.000000000 +0200 >+++ hercules-20070717/decNumber/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,584 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >- >-# >-# Makefile for building the decNumber package >-# for use with Hercules S/370, ESA/390 and z/Architecture emulator >-# >-# This file was added by the Hercules project. >-# It is not part of the original decNumber distribution. >-# >-# $Id: Makefile.am,v 1.4 2006/12/30 18:31:08 rbowler Exp $ >-# >-# $Log: Makefile.am,v $ >-# Revision 1.4 2006/12/30 18:31:08 rbowler >-# Add description and changelog >-# >-# Revision 1.3 2006/12/13 11:49:02 rbowler >-# Correct make tar error: No rule to make target `decNumber.pdf' >-# >-# Revision 1.2 2006/12/12 14:07:50 rbowler >-# Make decNumber a shared library not a loadable module >-# >-# >- >- >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = .. >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-subdir = decNumber >-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ >- $(srcdir)/Makefile.in >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = $(top_builddir)/config.h >-CONFIG_CLEAN_FILES = >-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; >-am__vpath_adj = case $$p in \ >- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ >- *) f=$$p;; \ >- esac; >-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; >-am__installdirs = "$(DESTDIR)$(libdir)" >-libLTLIBRARIES_INSTALL = $(INSTALL) >-LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) >-am__DEPENDENCIES_1 = >-libdecNumber_la_DEPENDENCIES = $(am__DEPENDENCIES_1) >-am__objects_1 = decContext.lo decimal128.lo decimal32.lo decimal64.lo \ >- decNumber.lo decPacked.lo >-am_libdecNumber_la_OBJECTS = $(am__objects_1) >-libdecNumber_la_OBJECTS = $(am_libdecNumber_la_OBJECTS) >-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) >-depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp >-am__depfiles_maybe = depfiles >-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ >- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) >-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ >- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ >- $(AM_CFLAGS) $(CFLAGS) >-CCLD = $(CC) >-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ >- $(AM_LDFLAGS) $(LDFLAGS) -o $@ >-SOURCES = $(libdecNumber_la_SOURCES) >-DIST_SOURCES = $(libdecNumber_la_SOURCES) >-HEADERS = $(noinst_HEADERS) >-ETAGS = etags >-CTAGS = ctags >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-lns = @LN_S@ >-LDADD = @LIBS@ >-AM_CPPFLAGS = -I$(top_srcdir) >-decNumber_SRC = decContext.c \ >- decimal128.c \ >- decimal32.c \ >- decimal64.c \ >- decNumber.c \ >- decPacked.c >- >-@BUILD_SHARED_FALSE@XSTATIC = -static >-@BUILD_SHARED_TRUE@XSTATIC = >-@OPTION_DYNAMIC_LOAD_FALSE@LTDL = >-@OPTION_DYNAMIC_LOAD_TRUE@LTDL = ../ltdl.c >-@OPTION_DYNAMIC_LOAD_FALSE@LIB_LD_FLAGS = $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_FALSE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_FALSE@ -avoid-version >- >-@OPTION_DYNAMIC_LOAD_TRUE@LIB_LD_FLAGS = -export-dynamic \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -avoid-version >- >-HERCLIBS = >-HERCLIBS2 = libdecNumber.la >-noinst_LTLIBRARIES = $(HERCLIBS) >-lib_LTLIBRARIES = $(HERCLIBS2) >-libdecNumber_la_SOURCES = $(decNumber_SRC) >-libdecNumber_la_LDFLAGS = $(LIB_LD_FLAGS) >-libdecNumber_la_LIBADD = $(LDADD) >-noinst_HEADERS = decContext.h \ >- decDPD.h \ >- decimal128.h \ >- decimal32.h \ >- decimal64.h \ >- decNumber.h \ >- decNumberLocal.h \ >- decPacked.h >- >-EXTRA_DIST = decNumber.def \ >- decnumber.pdf \ >- decNumber.rc \ >- ICU-license.html \ >- readme.txt >- >-all: all-am >- >-.SUFFIXES: >-.SUFFIXES: .c .lo .o .obj >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu decNumber/Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --gnu decNumber/Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-install-libLTLIBRARIES: $(lib_LTLIBRARIES) >- @$(NORMAL_INSTALL) >- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" >- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ >- if test -f $$p; then \ >- f=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ >- $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ >- else :; fi; \ >- done >- >-uninstall-libLTLIBRARIES: >- @$(NORMAL_UNINSTALL) >- @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ >- p=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ >- $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ >- done >- >-clean-libLTLIBRARIES: >- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) >- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ >- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ >- test "$$dir" != "$$p" || dir=.; \ >- echo "rm -f \"$${dir}/so_locations\""; \ >- rm -f "$${dir}/so_locations"; \ >- done >- >-clean-noinstLTLIBRARIES: >- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) >- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ >- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ >- test "$$dir" != "$$p" || dir=.; \ >- echo "rm -f \"$${dir}/so_locations\""; \ >- rm -f "$${dir}/so_locations"; \ >- done >-libdecNumber.la: $(libdecNumber_la_OBJECTS) $(libdecNumber_la_DEPENDENCIES) >- $(LINK) -rpath $(libdir) $(libdecNumber_la_LDFLAGS) $(libdecNumber_la_OBJECTS) $(libdecNumber_la_LIBADD) $(LIBS) >- >-mostlyclean-compile: >- -rm -f *.$(OBJEXT) >- >-distclean-compile: >- -rm -f *.tab.c >- >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decContext.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decNumber.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decPacked.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decimal128.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decimal32.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decimal64.Plo@am__quote@ >- >-.c.o: >-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(COMPILE) -c $< >- >-.c.obj: >-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` >- >-.c.lo: >-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >- >-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- mkid -fID $$unique >-tags: TAGS >- >-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ >- $(TAGS_FILES) $(LISP) >- tags=; \ >- here=`pwd`; \ >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ >- test -n "$$unique" || unique=$$empty_fix; \ >- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ >- $$tags $$unique; \ >- fi >-ctags: CTAGS >-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ >- $(TAGS_FILES) $(LISP) >- tags=; \ >- here=`pwd`; \ >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- test -z "$(CTAGS_ARGS)$$tags$$unique" \ >- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ >- $$tags $$unique >- >-GTAGS: >- here=`$(am__cd) $(top_builddir) && pwd` \ >- && cd $(top_srcdir) \ >- && gtags -i $(GTAGS_ARGS) $$here >- >-distclean-tags: >- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- >-distdir: $(DISTFILES) >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >-check-am: all-am >-check: check-am >-all-am: Makefile $(LTLIBRARIES) $(HEADERS) >-installdirs: >- for dir in "$(DESTDIR)$(libdir)"; do \ >- test -z "$$dir" || $(mkdir_p) "$$dir"; \ >- done >-install: install-am >-install-exec: install-exec-am >-install-data: install-data-am >-uninstall: uninstall-am >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-am >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-am >- >-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ >- clean-noinstLTLIBRARIES mostlyclean-am >- >-distclean: distclean-am >- -rm -rf ./$(DEPDIR) >- -rm -f Makefile >-distclean-am: clean-am distclean-compile distclean-generic \ >- distclean-libtool distclean-tags >- >-dvi: dvi-am >- >-dvi-am: >- >-html: html-am >- >-info: info-am >- >-info-am: >- >-install-data-am: >- >-install-exec-am: install-libLTLIBRARIES >- >-install-info: install-info-am >- >-install-man: >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-am >- -rm -rf ./$(DEPDIR) >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-am >- >-mostlyclean-am: mostlyclean-compile mostlyclean-generic \ >- mostlyclean-libtool >- >-pdf: pdf-am >- >-pdf-am: >- >-ps: ps-am >- >-ps-am: >- >-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES >- >-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ >- clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ >- ctags distclean distclean-compile distclean-generic \ >- distclean-libtool distclean-tags distdir dvi dvi-am html \ >- html-am info info-am install install-am install-data \ >- install-data-am install-exec install-exec-am install-info \ >- install-info-am install-libLTLIBRARIES install-man \ >- install-strip installcheck installcheck-am installdirs \ >- maintainer-clean maintainer-clean-generic mostlyclean \ >- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ >- pdf pdf-am ps ps-am tags uninstall uninstall-am \ >- uninstall-info-am uninstall-libLTLIBRARIES >- >- >-%.s: %.c >- $(COMPILE) -S $< >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/devtype.h hercules-20070717/devtype.h >--- hercules-3.05/devtype.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/devtype.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,12 @@ > /* DEVTYPE.H (c) Copyright Jan Jaeger, 1999-2007 */ > /* Hercules Device Definitions */ > >-// $Id: devtype.h,v 1.20 2007/06/23 00:04:08 ivan Exp $ >+// $Id: devtype.h,v 1.21 2007/11/21 22:48:45 fish Exp $ > // > // $Log: devtype.h,v $ >+// Revision 1.21 2007/11/21 22:48:45 fish >+// New BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.20 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -58,6 +61,10 @@ struct DEVHND { > DEVSR *hresume; /* Hercules resume */ > }; > >+#define BEGIN_DEVICE_CLASS_QUERY( _classname, _dev, _class, _buflen, _buffer ) \ >+ if (_class) *_class = _classname; \ >+ if (!_dev || !_class || !_buflen || !_buffer) return >+ > > #if !defined(OPTION_DYNAMIC_LOAD) > extern DEVHND constty_device_hndinfo; >diff -Naupr hercules-3.05/dfp.c hercules-20070717/dfp.c >--- hercules-3.05/dfp.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/dfp.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* DFP.C (c) Copyright Roger Bowler, 2007-2007 */ > /* Decimal Floating Point instructions */ > >-// $Id: dfp.c,v 1.65 2007/06/23 00:04:08 ivan Exp $ >+// $Id: dfp.c,v 1.67 2007/11/23 12:28:07 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the Decimal Floating Point instructions */ >@@ -10,6 +10,12 @@ > /*-------------------------------------------------------------------*/ > > // $Log: dfp.c,v $ >+// Revision 1.67 2007/11/23 12:28:07 rbowler >+// Correct CPSDR when R1 and R3 are same register (2nd attempt) >+// >+// Revision 1.66 2007/11/15 22:11:26 rbowler >+// Correct CPSDR when R1 and R3 are same register >+// > // Revision 1.65 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -106,6 +112,7 @@ DEF_INST(copy_sign_fpr_long_reg) > { > int r1, r2, r3; /* Values of R fields */ > int i1, i2, i3; /* FP register subscripts */ >+U32 sign; /* Work area for sign bit */ > > RRF_M(inst, regs, r1, r2, r3); > HFPREG2_CHECK(r1, r2, regs); >@@ -114,13 +121,16 @@ int i1, i2, i3; > i2 = FPR2I(r2); > i3 = FPR2I(r3); > >- /* Copy register contents */ >+ /* Copy the sign bit from r3 register */ >+ sign = regs->fpr[i3] & 0x80000000; >+ >+ /* Copy r2 register contents to r1 register */ > regs->fpr[i1] = regs->fpr[i2]; > regs->fpr[i1+1] = regs->fpr[i2+1]; > >- /* Copy the sign bit from r3 register */ >+ /* Insert the sign bit into r1 register */ > regs->fpr[i1] &= 0x7FFFFFFF; >- regs->fpr[i1] |= regs->fpr[i3] & 0x80000000; >+ regs->fpr[i1] |= sign; > > } /* end DEF_INST(copy_sign_fpr_long_reg) */ > >diff -Naupr hercules-3.05/diagnose.c hercules-20070717/diagnose.c >--- hercules-3.05/diagnose.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/diagnose.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* DIAGNOSE.C (c) Copyright Roger Bowler, 2000-2007 */ > /* ESA/390 Diagnose Functions */ > >-// $Id: diagnose.c,v 1.47 2007/06/23 00:04:08 ivan Exp $ >+// $Id: diagnose.c,v 1.48 2007/12/10 23:12:02 gsmith Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements miscellaneous diagnose functions */ >@@ -15,6 +15,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: diagnose.c,v $ >+// Revision 1.48 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// > // Revision 1.47 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -457,7 +460,7 @@ U32 code; > /*---------------------------------------------------------------*/ > /* Diagnose F08: Hercules get instruction counter */ > /*---------------------------------------------------------------*/ >- regs->GR_L(r1) = (U32)regs->instcount; >+ regs->GR_L(r1) = (U32)INSTCOUNT(regs); > break; > > case 0xF0C: >diff -Naupr hercules-3.05/dyngui.c hercules-20070717/dyngui.c >--- hercules-3.05/dyngui.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/dyngui.c 2008-09-03 13:07:48.000000000 +0200 >@@ -6,7 +6,7 @@ > /* */ > /*********************************************************************/ > >-// $Id: dyngui.c,v 1.59 2007/06/23 00:04:08 ivan Exp $ >+// $Id: dyngui.c,v 1.63 2008/02/12 08:42:15 fish Exp $ > > /*********************************************************************/ > /* */ >@@ -39,10 +39,23 @@ > /* 12/23/06 Improve efficiency of reporting register updates */ > /* 12/23/06 Forced GUI status update/refresh support */ > /* 03/25/07 Prevent need for OBTAIN_INTLOCK same as panel.c */ >+/* 02/10/08 Forced refresh doesn't apply to device-status reporting */ > /* */ > /*********************************************************************/ > > // $Log: dyngui.c,v $ >+// Revision 1.63 2008/02/12 08:42:15 fish >+// dyngui tweaks: new def devlist fmt, new debug_cd_cmd hook >+// >+// Revision 1.62 2007/12/29 14:40:51 fish >+// fix copyregs function to fallback to using dummyregs whenever regs->hostregs happens to be NULL >+// >+// Revision 1.61 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.60 2007/09/05 00:24:18 gsmith >+// Use integer arithmetic calculating cpupct >+// > // Revision 1.59 2007/06/23 00:04:08 ivan > // Update copyright notices to include current year (2007) > // >@@ -106,7 +119,6 @@ > #endif > #endif > >- > static FILE* fOutputStream = NULL; // (stdout stream) > static FILE* fStatusStream = NULL; // (stderr stream) > static int nInputStreamFileNum = -1; // (file descriptor for stdin stream) >@@ -213,6 +225,12 @@ REGS* CopyREGS( int cpu ) > > memcpy( ©regs, regs, sysblk.regs_copy_len ); > >+ if (!copyregs.hostregs) >+ { >+ release_lock(&sysblk.cpulock[cpu]); >+ return &sysblk.dummyregs; >+ } >+ > #if defined(_FEATURE_SIE) > if (regs->sie_active) > { >@@ -226,6 +244,7 @@ REGS* CopyREGS( int cpu ) > regs = ©regs; > > SET_PSW_IA( regs ); >+ > release_lock( &sysblk.cpulock[cpu] ); > return regs; > } >@@ -380,6 +399,8 @@ void ProcessInputData () > /////////////////////////////////////////////////////////////////////////////// > // (These are actually boolean flags..) > >+double gui_version = 0.0; // (version of HercGUI we're talking to) >+ > BYTE gui_forced_refresh = 1; // (force initial update refresh) > > BYTE gui_wants_gregs = 0; >@@ -389,8 +410,8 @@ BYTE gui_wants_cregs64 = 0; > BYTE gui_wants_aregs = 0; > BYTE gui_wants_fregs = 0; > BYTE gui_wants_fregs64 = 0; >-BYTE gui_wants_devlist = 1; // (should always be initially on) >-BYTE gui_wants_new_devlist = 0; >+BYTE gui_wants_devlist = 0; >+BYTE gui_wants_new_devlist = 1; // (should always be initially on) > #if defined(OPTION_MIPS_COUNTING) > BYTE gui_wants_cpupct = 0; > #endif >@@ -417,6 +438,12 @@ void* gui_panel_command (char* pszComma > > pszCommand++; // (bump past ']') > >+ if (strncasecmp(pszCommand,"VERS=",5) == 0) >+ { >+ gui_version = atof(pszCommand+5); >+ return NULL; >+ } >+ > if (strncasecmp(pszCommand,"SCD=",4) == 0) > { > SetCurrentDirectory(pszCommand+4); >@@ -583,23 +610,12 @@ void UpdateStatus () > #if defined(OPTION_MIPS_COUNTING) > if (gui_wants_cpupct) > { >- char cpupct[10]; >- >- if (CPUSTATE_STOPPED == pTargetCPU_REGS->cpustate) >- strcpy(cpupct,"0"); >- else >- snprintf(cpupct,sizeof(cpupct), >- "%1.0f",(100.0 * pTargetCPU_REGS->cpupct)); >- >- if (isdigit(cpupct[0])) >- { > gui_fprintf(fStatusStream, > >- "CPUPCT=%s\n" >+ "CPUPCT=%d\n" > >- ,cpupct >+ ,pTargetCPU_REGS->cpupct > ); >- } > } > #endif > >@@ -613,12 +629,7 @@ void UpdateStatus () > || pcpu != prev_pcpu > || memcmp(prev_psw, psw, sizeof(prev_psw)) != 0 > || prev_cpustate != pTargetCPU_REGS->cpustate >- || (prev_instcount != ( >-#if defined(_FEATURE_SIE) >- SIE_MODE(pTargetCPU_REGS) ? pTargetCPU_REGS->hostregs->instcount : >-#endif >- pTargetCPU_REGS->instcount) >- ) >+ || prev_instcount != INSTCOUNT(pTargetCPU_REGS) > ) > { > bStatusChanged = TRUE; // (something has indeed changed...) >@@ -632,11 +643,7 @@ void UpdateStatus () > prev_pcpu = pcpu; > memcpy(prev_psw, psw, sizeof(prev_psw)); > prev_cpustate = pTargetCPU_REGS->cpustate; >- prev_instcount = ( >-#if defined(_FEATURE_SIE) >- SIE_MODE(pTargetCPU_REGS) ? pTargetCPU_REGS->hostregs->instcount : >-#endif >- pTargetCPU_REGS->instcount); >+ prev_instcount = INSTCOUNT(pTargetCPU_REGS); > } > > // If anything has changed, inform the GUI... >@@ -775,11 +782,7 @@ void UpdateCPUStatus () > #else // !defined(_900) > '.' > #endif // defined(_900) >- ,(long long)( >-#if defined(_FEATURE_SIE) >- SIE_MODE(pTargetCPU_REGS) ? pTargetCPU_REGS->hostregs->instcount : >-#endif // defined(_FEATURE_SIE) >- pTargetCPU_REGS->instcount) >+ ,(long long)INSTCOUNT(pTargetCPU_REGS) > ); > > } // endif cpu is online/offline >@@ -1702,7 +1705,6 @@ void UpdateDeviceStatus () > /////////////////////////////////////////////////////////////////////////////// > // Send device status msgs to the gui IF NEEDED... (slightly more efficient) > >-#ifdef EXTERNALGUI > void NewUpdateDevStats () > { > DEVBLK* pDEVBLK; >@@ -1803,8 +1805,7 @@ void NewUpdateDevStats () > // for next time. In this way we only send device status > // msgs to the GUI only when the status actually changes... > >- if (gui_forced_refresh || >- strcmp( pGUIStat->pszNewStatStr, pGUIStat->pszOldStatStr )) >+ if (strcmp( pGUIStat->pszNewStatStr, pGUIStat->pszOldStatStr )) > { > gui_fprintf ( fStatusStream, "%s\n", pGUIStat->pszNewStatStr ); > bUpdatesSent = TRUE; >@@ -1820,21 +1821,21 @@ void NewUpdateDevStats () > if ( bUpdatesSent ) > gui_fprintf(fStatusStream, "DEVX=\n"); // (send end-of-batch indicator) > } >-#endif > > /////////////////////////////////////////////////////////////////////////////// > // Our Hercules "debug_cpu_state" override... >- >-// The following function fixes an unintentional problem caused by the new >-// logger mechanism (wherein stdout and stderr now point to the same stream) >-// due to a oversight (bug) on my part wherein the 'LOAD' and 'MAN' messages >-// are being [mistakenly] written to stdout instead of stderr (where they >-// normally should be). The current version of the gui expects both messages >-// to come in on the stdout stream, but due to the recent logger changes, they >-// now come in on the stderr stream instead (because stdout was duped to stderr >-// by the new logger logic) thus causing the gui to miss seeing them without >-// the below fix. The below fix simply corrects for this by simply writing the >-// two messages to the stdout stream where the current gui expects to see them. >+// >+// Hercules calls the following function from several different places to fix >+// an unintentional problem caused by the new logger mechanism (wherein stdout >+// and stderr now point to the same stream) due to a oversight (bug) on my part >+// wherein the 'LOAD' and 'MAN' messages are being [mistakenly] written to stdout >+// instead of stderr (where they normally should be). The current version of >+// the gui expects both messages to come in on the stdout stream, but due to the >+// recent logger changes, they now come in on the stderr stream instead (because >+// stdout was duped to stderr by the new logger logic) thus causing the gui to >+// miss seeing them without the below fix. The below fix simply corrects for the >+// problem by simply writing the two messages to the stdout stream where older >+// versions of the gui expect to see them. > > void* gui_debug_cpu_state ( REGS* pREGS ) > { >@@ -1867,6 +1868,19 @@ void *(*next_debug_call)(REGS *); > } > > /////////////////////////////////////////////////////////////////////////////// >+// Our Hercules "debug_cd_cmd" hook... >+// >+// The following function is called by the 'cd_cmd' panel command to notify >+// the GUI of what the new current directory was just changed to... >+ >+void gui_debug_cd_cmd( char* pszCWD ) >+{ >+ ASSERT( pszCWD ); >+ if (gui_version >= 1.12) >+ gui_fprintf( fStatusStream, "]CWD=%s\n", pszCWD ); >+} >+ >+/////////////////////////////////////////////////////////////////////////////// > // Streams 'fprintf' function to prevent interleaving collision problem... > > LOCK gui_fprintf_lock; >@@ -2019,6 +2033,7 @@ HDL_REGISTER_SECTION; // ("Registe > HDL_REGISTER ( panel_display, gui_panel_display );// (Yep! We override EITHER!) > HDL_REGISTER ( daemon_task, gui_panel_display );// (Yep! We override EITHER!) > HDL_REGISTER ( debug_cpu_state, gui_debug_cpu_state ); >+HDL_REGISTER ( debug_cd_cmd, gui_debug_cd_cmd ); > HDL_REGISTER ( panel_command, gui_panel_command ); > > END_REGISTER_SECTION >diff -Naupr hercules-3.05/dyninst.c hercules-20070717/dyninst.c >--- hercules-3.05/dyninst.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/dyninst.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* DYNINST.C (c) Copyright Jan Jaeger, 2003-2007 */ > /* Hercules Dynamic Loader */ > >-// $Id: dyninst.c,v 1.22 2007/06/23 00:04:09 ivan Exp $ >+// $Id: dyninst.c,v 1.24 2008/02/29 15:53:10 rbowler Exp $ > > /* This module dynamically loads instructions. Instruction routine */ > /* names must be registered under the name of s370_opcode_B220 for */ >@@ -10,6 +10,12 @@ > /* instruction 2 3 or 4 digits. */ > > // $Log: dyninst.c,v $ >+// Revision 1.24 2008/02/29 15:53:10 rbowler >+// Instruction decoder for C4xx and C6xx instructions >+// >+// Revision 1.23 2008/02/29 12:05:06 rbowler >+// dyninst.c incorrect restore of C8xx opcodes >+// > // Revision 1.22 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -40,6 +46,8 @@ > #define opcode_b9xx opcode_b9xx_r > #define opcode_c0xx opcode_c0xx_r > #define opcode_c2xx opcode_c2xx_r >+ #define opcode_c4xx opcode_c4xx_r /*208*/ >+ #define opcode_c6xx opcode_c6xx_r /*208*/ > #define opcode_c8xx opcode_c8xx_r > #define opcode_e3xx opcode_e3xx_r > #define opcode_e5xx opcode_e5xx_r >@@ -63,6 +71,8 @@ > #undef opcode_b9xx > #undef opcode_c0xx > #undef opcode_c2xx >+ #undef opcode_c4xx /*208*/ >+ #undef opcode_c6xx /*208*/ > #undef opcode_c8xx > #undef opcode_e3xx > #undef opcode_e5xx >@@ -101,6 +111,8 @@ static zz_func save_b3xx[256][GEN_MAXARC > static zz_func save_b9xx[256][GEN_MAXARCH]; > static zz_func save_c0xx[16][GEN_MAXARCH]; > static zz_func save_c2xx[16][GEN_MAXARCH]; /*@Z9*/ >+static zz_func save_c4xx[16][GEN_MAXARCH]; /*208*/ >+static zz_func save_c6xx[16][GEN_MAXARCH]; /*208*/ > static zz_func save_c8xx[16][GEN_MAXARCH]; > static zz_func save_e3xx[256][GEN_MAXARCH]; > static zz_func save_e5xx[256][GEN_MAXARCH]; >@@ -124,6 +136,8 @@ static zz_func save_edxx[256][GEN_MAXARC > static void * opcode_b9xx; > static void * opcode_c0xx; > static void * opcode_c2xx; /*@Z9*/ >+ static void * opcode_c4xx; /*208*/ >+ static void * opcode_c6xx; /*208*/ > static void * opcode_c8xx; > static void * opcode_e3xx; > static void * opcode_e5xx; >@@ -160,6 +174,8 @@ static void opcode_save() > memcpy(save_b9xx,opcode_b9xx,sizeof(save_b9xx)); > memcpy(save_c0xx,opcode_c0xx,sizeof(save_c0xx)); > memcpy(save_c2xx,opcode_c2xx,sizeof(save_c2xx)); /*@Z9*/ >+ memcpy(save_c4xx,opcode_c4xx,sizeof(save_c4xx)); /*208*/ >+ memcpy(save_c6xx,opcode_c6xx,sizeof(save_c6xx)); /*208*/ > memcpy(save_c8xx,opcode_c8xx,sizeof(save_c8xx)); > memcpy(save_e3xx,opcode_e3xx,sizeof(save_e3xx)); > memcpy(save_e5xx,opcode_e5xx,sizeof(save_e5xx)); >@@ -184,7 +200,9 @@ static void opcode_restore() > memcpy(opcode_b9xx,save_b9xx,sizeof(save_b9xx)); > memcpy(opcode_c0xx,save_c0xx,sizeof(save_c0xx)); > memcpy(opcode_c2xx,save_c2xx,sizeof(save_c2xx)); /*@Z9*/ >- memcpy(opcode_c8xx,save_c2xx,sizeof(save_c8xx)); >+ memcpy(opcode_c4xx,save_c4xx,sizeof(save_c4xx)); /*208*/ >+ memcpy(opcode_c6xx,save_c6xx,sizeof(save_c6xx)); /*208*/ >+ memcpy(opcode_c8xx,save_c8xx,sizeof(save_c8xx)); > memcpy(opcode_e3xx,save_e3xx,sizeof(save_e3xx)); > memcpy(opcode_e5xx,save_e5xx,sizeof(save_e5xx)); > memcpy(opcode_e6xx,save_e6xx,sizeof(save_e6xx)); >@@ -321,6 +339,8 @@ int opcode, extop; > HDL_RESOLVE(opcode_b9xx); > HDL_RESOLVE(opcode_c0xx); > HDL_RESOLVE(opcode_c2xx); /*@Z9*/ >+ HDL_RESOLVE(opcode_c4xx); /*208*/ >+ HDL_RESOLVE(opcode_c6xx); /*208*/ > HDL_RESOLVE(opcode_c8xx); > HDL_RESOLVE(opcode_e3xx); > HDL_RESOLVE(opcode_e5xx); >@@ -387,6 +407,16 @@ int opcode, extop; > assign_extop1(opcode, extop, opcode_c2xx, save_c2xx); /*@Z9*/ > break; /*@Z9*/ > >+ case 0xC4: /*208*/ >+ for(extop = 0; extop < 16; extop++) /*208*/ >+ assign_extop1(opcode, extop, opcode_c4xx, save_c4xx); /*208*/ >+ break; /*208*/ >+ >+ case 0xC6: /*208*/ >+ for(extop = 0; extop < 16; extop++) /*208*/ >+ assign_extop1(opcode, extop, opcode_c6xx, save_c6xx); /*208*/ >+ break; /*208*/ >+ > case 0xC8: > for(extop = 0; extop < 16; extop++) > assign_extop1(opcode, extop, opcode_c8xx, save_c8xx); >diff -Naupr hercules-3.05/esa390.h hercules-20070717/esa390.h >--- hercules-3.05/esa390.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/esa390.h 2008-09-03 13:07:48.000000000 +0200 >@@ -4,9 +4,15 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: esa390.h,v 1.94 2007/06/23 00:04:09 ivan Exp $ >+// $Id: esa390.h,v 1.96 2008/03/04 17:09:14 rbowler Exp $ > // > // $Log: esa390.h,v $ >+// Revision 1.96 2008/03/04 17:09:14 rbowler >+// Add CRT,CGRT,CIT,CGIT,CLRT,CLGRT,CLFIT,CLGIT instructions >+// >+// Revision 1.95 2008/02/28 10:11:50 rbowler >+// STFL bit settings for new features in zPOP-06 >+// > // Revision 1.94 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -1318,6 +1324,8 @@ typedef struct _MBK { > is installed */ > #define STFL_0_STFL_EXTENDED 0x01 /* Store facility list @Z9 > extended is installed @Z9*/ >+#define STFL_1_ENHANCED_DAT 0x80 /* Enhanced-DAT facility 208 >+ is installed 208*/ > #define STFL_1_SENSE_RUN_STATUS 0x40 /* Sense running status @Z9 > facility is installed @Z9*/ > #define STFL_1_CONDITIONAL_SSKE 0x20 /* Conditional SSKE facility >@@ -1344,6 +1352,8 @@ typedef struct _MBK { > facility 2 enhancement @Z9*/ > #define STFL_3_STORE_CLOCK_FAST 0x40 /* Store clock fast @Z9 > enhancement installed @Z9*/ >+#define STFL_3_PARSING_ENHANCE 0x20 /* Parsing-Enhancement 208 >+ facility is installed 208*/ > #define STFL_3_MVCOS 0x10 /* MVCOS instruction > is installed 407*/ > #define STFL_3_TOD_CLOCK_STEER 0x08 /* TOD clock steering @Z9 >@@ -1356,6 +1366,10 @@ typedef struct _MBK { > facility is installed */ > #define STFL_4_CSSF2 0x40 /* Compare-and-Swap-and-Store > facility 2 is installed */ >+#define STFL_4_GEN_INST_EXTN 0x20 /* General-Instr-Extn 208 >+ facility is installed 208*/ >+#define STFL_4_EXECUTE_EXTN 0x10 /* Execute-Extensions 208 >+ facility is installed 208*/ > #define STFL_5_FPS_ENHANCEMENT 0x40 /* Floating point support > enhancements (FPR-GR-loading > FPS-sign-handling, and >@@ -2044,6 +2058,7 @@ typedef struct _PTFFQSI { > #define DXC_IEEE_DIV_ZERO_IISE 0x43 /* IEEE div by zero(IISE) DFP*/ > #define DXC_IEEE_INVALID_OP 0x80 /* IEEE invalid operation */ > #define DXC_IEEE_INV_OP_IISE 0x83 /* IEEE invalid op (IISE) DFP*/ >+#define DXC_COMPARE_AND_TRAP 0xFF /* Compare-and-trap exception*/ > /* Note: IISE = IEEE-interruption-simulation event */ > > /* Decimal rounding modes */ >diff -Naupr hercules-3.05/esame.c hercules-20070717/esame.c >--- hercules-3.05/esame.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/esame.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* ESAME.C (c) Copyright Jan Jaeger, 2000-2007 */ > /* ESAME (z/Architecture) instructions */ > >-// $Id: esame.c,v 1.189 2007/06/23 00:04:09 ivan Exp $ >+// $Id: esame.c,v 1.202 2008/05/06 22:15:42 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the instructions which exist in ESAME */ >@@ -20,6 +20,45 @@ > /*-------------------------------------------------------------------*/ > > // $Log: esame.c,v $ >+// Revision 1.202 2008/05/06 22:15:42 rbowler >+// Fix warning: operation on `p1' may be undefined >+// >+// Revision 1.201 2008/04/11 14:28:29 bernard >+// Integrate regs->exrl into base Hercules code. >+// >+// Revision 1.200 2008/04/09 07:36:51 bernard >+// Allign to Rogers terminal ;-) >+// >+// Revision 1.199 2008/04/08 23:57:15 rbowler >+// Fix '#' : invalid character : possibly the result of a macro expansion >+// >+// Revision 1.198 2008/04/08 17:12:47 bernard >+// Added execute relative long instruction >+// >+// Revision 1.197 2008/03/16 00:04:37 rbowler >+// Replace ACC_ARMODE by USE_ARMODE for LPTEA >+// >+// Revision 1.196 2008/03/06 16:10:35 rbowler >+// Remove extraneous trailing blanks (cosmetic change only) >+// >+// Revision 1.195 2008/03/01 12:19:04 rbowler >+// Rename new features to include the word facility >+// >+// Revision 1.194 2008/02/28 22:05:10 ptl00 >+// Fix RP for z/arch and mode switch trace >+// >+// Revision 1.193 2008/02/28 10:11:50 rbowler >+// STFL bit settings for new features in zPOP-06 >+// >+// Revision 1.192 2008/02/15 21:17:55 ptl00 >+// Add pic13 check to RP >+// >+// Revision 1.191 2007/11/17 21:57:52 rbowler >+// Correct comments on two #endif statements >+// >+// Revision 1.190 2007/11/15 21:34:01 rbowler >+// EPSW correction in accord with ESA/390 POP ninth edition >+// > // Revision 1.189 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -154,7 +193,7 @@ int r1, unused; > > /* Program check if reserved bits are non-zero */ > FPC_CHECK(regs->GR_L(r1), regs); >- >+ > /* Load FPC register from R1 register bits 32-63 */ > regs->fpc = regs->GR_L(r1); > >@@ -249,14 +288,16 @@ U16 psw_offset; > U16 ar_offset; /* Offset to new AR */ > U16 gr_offset; /* Offset to new GR */ > U32 ar; /* Copy of new AR */ >+U32 gr = 0; /* Copy of new GR */ > #if defined(FEATURE_ESAME) >-U16 grd_offset; /* Offset of disjoint GR_H */ >+U16 grd_offset = 0; /* Offset of disjoint GR_H */ > BYTE psw[16]; /* Copy of new PSW */ >-U64 gr; /* Copy of new GR */ >+U64 gr8 = 0; /* Copy of new GR - 8 bytes */ >+U32 grd = 0; /* Copy of new GR - disjoint */ > U64 ia; /* ia for trace */ >+BYTE amode64; /* save for amod64 */ > #else /*!defined(FEATURE_ESAME)*/ > BYTE psw[8]; /* Copy of new PSW */ >-U32 gr; /* Copy of new GR */ > U32 ia; /* ia for trace */ > #endif /*!defined(FEATURE_ESAME)*/ > BYTE amode; /* amode for trace */ >@@ -269,7 +310,8 @@ CREG newcr12 = 0; > S(inst, regs, b2, effective_addr2); > > /* Determine the address of the parameter list */ >- pl_addr = !regs->execflag ? PSW_IA(regs, 0) : (regs->ET + 4); >+ pl_addr = !regs->execflag ? PSW_IA(regs, 0) : >+ regs->exrl ? (regs->ET + 6) : (regs->ET + 4); > > /* Fetch flags from the instruction address space */ > mn = MADDR (pl_addr, USE_INST_SPACE, regs, ACCTYPE_INSTFETCH, regs->psw.pkey); >@@ -324,9 +366,20 @@ CREG newcr12 = 0; > > /* Fetch the new gr from operand address + GPR offset */ > #if defined(FEATURE_ESAME) >- if(flags & 0x0002) >- gr = ARCH_DEP(vfetch8) ((effective_addr2 + gr_offset) >+ /* General Register Field 1 is eight bytes */ >+ if((flags & 0x0003) == 0x0002) >+ { >+ gr8 = ARCH_DEP(vfetch8) ((effective_addr2 + gr_offset) > & ADDRESS_MAXWRAP(regs), b2, regs); >+ } >+ /* General Register Field 1 and 2 are four bytes - disjoint */ >+ else if((flags & 0x0003) == 0x0003) >+ { >+ gr = ARCH_DEP(vfetch4) ((effective_addr2 + gr_offset) >+ & ADDRESS_MAXWRAP(regs), b2, regs); >+ grd = ARCH_DEP(vfetch4) ((effective_addr2 + grd_offset) >+ & ADDRESS_MAXWRAP(regs), b2, regs); >+ } > else > #endif /*defined(FEATURE_ESAME)*/ > gr = ARCH_DEP(vfetch4) ((effective_addr2 + gr_offset) >@@ -334,18 +387,22 @@ CREG newcr12 = 0; > > #if defined(FEATURE_TRACING) > #if defined(FEATURE_ESAME) >- FETCH_DW(ia, psw + 8); >- amode = psw[3] & 0x01; >+ /* fetch 8 or 4 byte IA depending on psw operand size */ >+ if (flags & 0x0004) >+ FETCH_DW(ia, psw + 8); >+ else >+ FETCH_FW(ia, psw + 4); >+ amode64 = psw[3] & 0x01; > #else /*!defined(FEATURE_ESAME)*/ > FETCH_FW(ia, psw + 4); > ia &= 0x7FFFFFFF; >- amode = psw[4] & 0x80; > #endif /*!defined(FEATURE_ESAME)*/ >+ amode = psw[4] & 0x80; > > #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ >- if((regs->CR(12) & CR12_MTRACE) && regs->psw.amode64 != amode) >- ARCH_DEP(trace_ms) (regs->CR(12) & CR12_BRTRACE, ia | regs->psw.amode64 ? amode << 31 : 0, regs); >+ if((regs->CR(12) & CR12_MTRACE) && (regs->psw.amode64 != amode64)) >+ newcr12 = ARCH_DEP(trace_ms) (regs->CR(12) & CR12_BRTRACE ? 1 : 0, ia, regs); > else > #endif /*defined(FEATURE_ESAME)*/ > if (regs->CR(12) & CR12_BRTRACE) >@@ -358,10 +415,11 @@ CREG newcr12 = 0; > save_psw = regs->psw; > > >- /* Use bits 16-23, 32-63 of psw in operand, other bits from old psw */ >+ /* Use bytes 0 and 1 of old psw and byte 2 from operand */ > psw[0] = save_psw.sysmask; >- psw[1] = save_psw.pkey | 0x08 | save_psw.states; >- psw[3] = 0; >+ psw[1] = save_psw.pkey | save_psw.states; >+ /* ignore bits 24-30 */ >+ psw[3] = 0x01 & psw[3]; > > > #if defined(FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE) >@@ -370,6 +428,12 @@ CREG newcr12 = 0; > regs->program_interrupt (regs, PGM_SPECIAL_OPERATION_EXCEPTION); > #endif /*defined(FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE)*/ > >+ /* Special operation exception when setting AR space mode >+ and ASF is off */ >+ if(!REAL_MODE(®s->psw) >+ && ((psw[2] & 0xC0) == 0x40) >+ && !ASF_ENABLED(regs) ) >+ regs->program_interrupt (regs, PGM_SPECIAL_OPERATION_EXCEPTION); > > /* Privileged Operation exception when setting home > space mode in problem state */ >@@ -379,10 +443,10 @@ CREG newcr12 = 0; > regs->program_interrupt (regs, PGM_PRIVILEGED_OPERATION_EXCEPTION); > > #if defined(FEATURE_ESAME) >+ /* Handle 16 byte psw operand */ > if(flags & 0x0004) > { >- /* Do not check esame bit (force to zero) */ >- psw[1] &= ~0x08; >+ psw[1] &= ~0x08; /* force bit 12 off */ > if( ARCH_DEP(load_psw) (regs, psw) )/* only check invalid IA not odd */ > { > /* restore the psw */ >@@ -391,13 +455,16 @@ CREG newcr12 = 0; > regs->program_interrupt (regs, PGM_SPECIFICATION_EXCEPTION); > } > } >+ /* Handle 8 byte psw operand */ > else >-#endif /*defined(FEATURE_ESAME)*/ > { >-#if defined(FEATURE_ESAME) >- /* Do not check amode64 bit (force to zero) */ >+ /* Save amode64, do not check amode64 bit (force to zero) */ >+ /* This is so s390_load_psw will work. */ >+ /* Checks for amode64 will be done a few lines later */ >+ amode64 = psw[3] & 01; > psw[3] &= ~0x01; > #endif /*defined(FEATURE_ESAME)*/ >+ psw[1] |= 0x08; /* force bit 12 on */ > if( s390_load_psw(regs, psw) ) > { > /* restore the psw */ >@@ -407,8 +474,29 @@ CREG newcr12 = 0; > } > #if defined(FEATURE_ESAME) > regs->psw.states &= ~BIT(PSW_NOTESAME_BIT); >-#endif /*defined(FEATURE_ESAME)*/ >+ /* clear high word of IA since operand was 8-byte psw */ >+ regs->psw.IA_H = 0; >+ /* Check original amode64 and restore and do checks */ >+ if (amode64) >+ { >+ /* if amode64 (31) on, then amode (32) must be on too */ >+ if (!regs->psw.amode) >+ { >+ /* restore the psw */ >+ regs->psw = save_psw; >+ /* And generate a program interrupt */ >+ regs->program_interrupt (regs, PGM_SPECIFICATION_EXCEPTION); >+ } >+ regs->psw.amode64 = 1; >+ regs->psw.AMASK = AMASK64; >+ } >+ else >+ { >+ regs->psw.amode64 = 0; >+ regs->psw.AMASK_H = 0; >+ } > } >+#endif /*defined(FEATURE_ESAME)*/ > > /* Check for odd IA in psw */ > if(regs->psw.IA & 0x01) >@@ -424,15 +512,20 @@ CREG newcr12 = 0; > > /* Update general register b2 */ > #if defined(FEATURE_ESAME) >- if(flags & 0x0002) >- regs->GR_G(b2) = gr; >+ if((flags & 0x0003) == 0x0002) >+ regs->GR_G(b2) = gr8; >+ else if((flags & 0x0003) == 0x0003) >+ { >+ regs->GR_L(b2) = gr; >+ regs->GR_H(b2) = grd; >+ } > else > #endif /*defined(FEATURE_ESAME)*/ > regs->GR_L(b2) = gr; > > #ifdef FEATURE_TRACING > /* Update trace table address if branch tracing is on */ >- if (regs->CR(12) & CR12_BRTRACE) >+ if (newcr12) > regs->CR(12) = newcr12; > #endif /*FEATURE_TRACING*/ > >@@ -1124,8 +1217,7 @@ int acctype = ACCTYPE_LPTEA; > n = USE_PRIMARY_SPACE; > break; > case 1: /* Use ALET in access register r2 */ >- n = r2; >- acctype |= ACC_ARMODE; >+ n = USE_ARMODE | r2; > break; > case 2: /* Use ASCE in control register 7 */ > n = USE_SECONDARY_SPACE; >@@ -1606,8 +1698,16 @@ QWORD currpsw; > /* If R2 specifies a register other than register zero, > load PSW bits 32-63 into bits 32-63 of the R2 register */ > if(r2 != 0) >+ { > FETCH_FW(regs->GR_L(r2), currpsw+4); > >+#if !defined(FEATURE_ESAME) >+ /* The Ninth Edition of ESA/390 POP (SA22-7201-08) requires >+ the low 31 bits to be set to zeroes in ESA/390 mode */ >+ regs->GR_L(r2) &= 0x80000000; >+#endif /*!defined(FEATURE_ESAME)*/ >+ } >+ > } /* end DEF_INST(extract_psw) */ > #endif /*defined(FEATURE_ESAME_N3_ESA390) || defined(FEATURE_ESAME)*/ > >@@ -2088,7 +2188,7 @@ BYTE rbyte[4]; > if (r3 & 0x8) rbyte[i++] = (regs->GR_H(r1) >> 24) & 0xFF; > if (r3 & 0x4) rbyte[i++] = (regs->GR_H(r1) >> 16) & 0xFF; > if (r3 & 0x2) rbyte[i++] = (regs->GR_H(r1) >> 8) & 0xFF; >- if (r3 & 0x1) rbyte[i++] = (regs->GR_H(r1) ) & 0xFF; >+ if (r3 & 0x1) rbyte[i++] = (regs->GR_H(r1) ) & 0xFF; > > if (i) > ARCH_DEP(vstorec) (rbyte, i-1, effective_addr2, b2, regs); >@@ -2144,7 +2244,8 @@ U64 gr0, gr1; > if( OPEN_IC_PTIMER(regs) ) > { > RELEASE_INTLOCK(regs); >- UPD_PSW_IA(regs, PSW_IA(regs, !regs->execflag ? -6 : -4)); >+ UPD_PSW_IA(regs, PSW_IA(regs, !regs->execflag ? -6 : >+ regs->exrl ? -6 : -4)); > RETURN_INTCHECK(regs); > } > } >@@ -2160,9 +2261,9 @@ U64 gr0, gr1; > /* The second operand is placed in general register 1 */ > gr1 = ARCH_DEP(vfetch8) (effective_addr2, b2, regs); > >- /* The eight bytes at the third operand location replace the contents >+ /* The eight bytes at the third operand location replace the contents > of general register R3. The operands are treated as unsigned 64-bit >- integers. The contents of R3 is treated according to current >+ integers. The contents of R3 is treated according to current > addressing mode. In AR mode, access register R3 is used. */ > regs->GR_G(r3) = ARCH_DEP(wfetch8) (regs->GR_G(r3), r3, regs); > regs->GR_G(0) = gr0; >@@ -2200,7 +2301,7 @@ static const unsigned int > case 15: > /* Optimized case */ > regs->GR_H(r1) = ARCH_DEP(vfetch4) (effective_addr2, b2, regs); >- regs->psw.cc = regs->GR_H(r1) ? regs->GR_H(r1) & 0x80000000 ? >+ regs->psw.cc = regs->GR_H(r1) ? regs->GR_H(r1) & 0x80000000 ? > 1 : 2 : 0; > break; > >@@ -3444,7 +3545,7 @@ U32 i, j; > > #if defined(FEATURE_ESAME) > /*-------------------------------------------------------------------*/ >-/* EB0A SRAG - Shift Right single Long [RSY] */ >+/* EB0A SRAG - Shift Right Single Long [RSY] */ > /*-------------------------------------------------------------------*/ > DEF_INST(shift_right_single_long) > { >@@ -3940,8 +4041,8 @@ U32 *p1, *p2; > { > /* Boundary not crossed */ > n >>= 2; >- for (i = 0; i < n; i++) >- regs->GR_H((r1 + i) & 0xF) = fetch_fw (p1++); >+ for (i = 0; i < n; i++, p1++) >+ regs->GR_H((r1 + i) & 0xF) = fetch_fw (p1); > } > else > { >@@ -3954,11 +4055,11 @@ U32 *p1, *p2; > { > /* Addresses are word aligned */ > m >>= 2; >- for (i = 0; i < m; i++) >- regs->GR_H((r1 + i) & 0xF) = fetch_fw (p1++); >+ for (i = 0; i < m; i++, p1++) >+ regs->GR_H((r1 + i) & 0xF) = fetch_fw (p1); > n >>= 2; >- for ( ; i < n; i++) >- regs->GR_H((r1 + i) & 0xF) = fetch_fw (p2++); >+ for ( ; i < n; i++, p2++) >+ regs->GR_H((r1 + i) & 0xF) = fetch_fw (p2); > } > else > { >@@ -4441,7 +4542,7 @@ VADR ia = PSW_IA(regs, 0); > #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ > if((regs->CR(12) & CR12_MTRACE) && regs->psw.amode64) >- ARCH_DEP(trace_ms) (0, PSW_IA(regs, 0), regs); >+ regs->CR(12) = ARCH_DEP(trace_ms) (0, 0, regs); > #endif /*defined(FEATURE_ESAME)*/ > > #if defined(FEATURE_ESAME) >@@ -4477,7 +4578,7 @@ VADR ia = PSW_IA(regs, 0); > #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ > if((regs->CR(12) & CR12_MTRACE) && regs->psw.amode64) >- ARCH_DEP(trace_ms) (0, PSW_IA(regs,0) , regs); >+ regs->CR(12) = ARCH_DEP(trace_ms) (0, 0, regs); > #endif /*defined(FEATURE_ESAME)*/ > > #if defined(FEATURE_ESAME) >@@ -4506,7 +4607,7 @@ DEF_INST(set_addressing_mode_64) > #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ > if((regs->CR(12) & CR12_MTRACE) && !regs->psw.amode64) >- ARCH_DEP(trace_ms) (0, PSW_IA(regs, 0), regs); >+ regs->CR(12) = ARCH_DEP(trace_ms) (0, 0, regs); > #endif /*defined(FEATURE_ESAME)*/ > > regs->psw.amode = regs->psw.amode64 = 1; >@@ -4837,12 +4938,18 @@ BYTE ARCH_DEP(stfl_data)[8] = { > #endif /*defined(FEATURE_STORE_FACILITY_LIST_EXTENDED)*/ > , > 0 >+#if defined(FEATURE_ENHANCED_DAT_FACILITY) /*208*/ >+ | STFL_1_ENHANCED_DAT /*208*/ >+#endif /*defined(FEATURE_ENHANCED_DAT_FACILITY)*/ /*208*/ > #if defined(FEATURE_SENSE_RUNNING_STATUS) > | STFL_1_SENSE_RUN_STATUS > #endif /*defined(FEATURE_SENSE_RUNNING_STATUS)*/ > #if defined(FEATURE_CONDITIONAL_SSKE) > | STFL_1_CONDITIONAL_SSKE > #endif /*defined(FEATURE_CONDITIONAL_SSKE)*/ >+#if defined(FEATURE_CONFIGURATION_TOPOLOGY_FACILITY) /*208*/ >+ | STFL_1_CONFIG_TOPOLOGY /*208*/ >+#endif /*defined(FEATURE_CONFIGURATION_TOPOLOGY_FACILITY)*/ /*208*/ > , > 0 > #if defined(FEATURE_EXTENDED_TRANSLATION_FACILITY_2) >@@ -4859,7 +4966,7 @@ BYTE ARCH_DEP(stfl_data)[8] = { > | STFL_2_HFP_MULT_ADD_SUB > #endif /*defined(FEATURE_HFP_MULTIPLY_ADD_SUBTRACT)*/ > #if defined(FEATURE_EXTENDED_IMMEDIATE) >- | STFL_2_EXTENDED_IMMED >+ | STFL_2_EXTENDED_IMMED > #endif /*defined(FEATURE_EXTENDED_IMMEDIATE)*/ > #if defined(FEATURE_EXTENDED_TRANSLATION_FACILITY_3) > | STFL_2_TRAN_FAC3 >@@ -4875,9 +4982,12 @@ BYTE ARCH_DEP(stfl_data)[8] = { > #if defined(FEATURE_STORE_CLOCK_FAST) > | STFL_3_STORE_CLOCK_FAST > #endif /*defined(FEATURE_STORE_CLOCK_FAST)*/ >-#if defined(FEATURE_MVCOS) >- | STFL_3_MVCOS >-#endif /*defined(FEATURE_MVCOS)*/ >+#if defined(FEATURE_PARSING_ENHANCEMENT_FACILITY) /*208*/ >+ | STFL_3_PARSING_ENHANCE /*208*/ >+#endif /*defined(FEATURE_PARSING_ENHANCEMENT_FACILITY)*/ /*208*/ >+#if defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS) /*208*/ >+ | STFL_3_MVCOS /*208*/ >+#endif /*defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS)*/ /*208*/ > #if defined(FEATURE_TOD_CLOCK_STEERING) > | STFL_3_TOD_CLOCK_STEER > #endif /*defined(FEATURE_TOD_CLOCK_STEERING)*/ >@@ -4892,6 +5002,15 @@ BYTE ARCH_DEP(stfl_data)[8] = { > #if defined(FEATURE_COMPARE_AND_SWAP_AND_STORE) > | STFL_4_CSSF > #endif /*defined(FEATURE_COMPARE_AND_SWAP_AND_STORE)*/ >+#if defined(FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2) /*208*/ >+ | STFL_4_CSSF2 /*208*/ >+#endif /*FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2*/ /*208*/ >+#if defined(FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY) /*208*/ >+ | STFL_4_GEN_INST_EXTN /*208*/ >+#endif /*FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY*/ /*208*/ >+#if defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY) /*208*/ >+ | STFL_4_EXECUTE_EXTN /*208*/ >+#endif /*defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY)*/ /*208*/ > , > 0 > #if defined(FEATURE_FPS_ENHANCEMENT) >@@ -4937,7 +5056,7 @@ void ARCH_DEP(adjust_stfl_data) () > ARCH_DEP(stfl_data)[0] |= STFL_0_ASN_LX_REUSE; > else > ARCH_DEP(stfl_data)[0] &= ~STFL_0_ASN_LX_REUSE; >-#endif >+#endif /*defined(FEATURE_ASN_AND_LX_REUSE)*/ > } /* end ARCH_DEP(adjust_stfl_data) */ > > /*-------------------------------------------------------------------*/ >@@ -4991,7 +5110,7 @@ int cc; > > /* Adjust the facility list to account for runtime options */ > ARCH_DEP(adjust_stfl_data)(); >- >+ > /* Calculate number of doublewords of facilities defined */ > nmax = sizeof(ARCH_DEP(stfl_data)) / 8; > >@@ -5022,7 +5141,7 @@ int cc; > } /* end DEF_INST(store_facility_list_extended) */ > #endif /*defined(FEATURE_STORE_FACILITY_LIST_EXTENDED)*/ > >-#endif /*defined(_900) || defined(FEATURE_ESAME)*/ >+#endif /*defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390)*/ > > > #if defined(FEATURE_LOAD_REVERSED) && defined(FEATURE_ESAME) >@@ -6527,7 +6646,7 @@ static const unsigned int > case 15: > /* Optimized case */ > regs->GR_L(r1) = ARCH_DEP(vfetch4) (effective_addr2, b2, regs); >- regs->psw.cc = regs->GR_L(r1) ? regs->GR_L(r1) & 0x80000000 ? >+ regs->psw.cc = regs->GR_L(r1) ? regs->GR_L(r1) & 0x80000000 ? > 1 : 2 : 0; > break; > >@@ -6612,16 +6731,16 @@ U32 *p1, *p2 = NULL; > m = n; > > /* Load from first page */ >- for (i = 0; i < m; i++) >+ for (i = 0; i < m; i++, p1++) > { >- regs->AR((r1 + i) & 0xF) = fetch_fw (p1++); >+ regs->AR((r1 + i) & 0xF) = fetch_fw (p1); > SET_AEA_AR(regs, (r1 + i) & 0xF); > } > > /* Load from next page */ >- for ( ; i < n; i++) >+ for ( ; i < n; i++, p2++) > { >- regs->AR((r1 + i) & 0xF) = fetch_fw (p2++); >+ regs->AR((r1 + i) & 0xF) = fetch_fw (p2); > SET_AEA_AR(regs, (r1 + i) & 0xF); > } > >@@ -6695,8 +6814,8 @@ U32 *p1, *p2; > { > /* Boundary not crossed */ > n >>= 2; >- for (i = 0; i < n; i++) >- regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1++); >+ for (i = 0; i < n; i++, p1++) >+ regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1); > } > else > { >@@ -6709,11 +6828,11 @@ U32 *p1, *p2; > { > /* Addresses are word aligned */ > m >>= 2; >- for (i = 0; i < m; i++) >- regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1++); >+ for (i = 0; i < m; i++, p1++) >+ regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1); > n >>= 2; >- for ( ; i < n; i++) >- regs->GR_L((r1 + i) & 0xF) = fetch_fw (p2++); >+ for ( ; i < n; i++, p2++) >+ regs->GR_L((r1 + i) & 0xF) = fetch_fw (p2); > } > else > { >@@ -6968,7 +7087,7 @@ BYTE rbyte[4]; > if (r3 & 0x8) rbyte[i++] = (regs->GR_L(r1) >> 24) & 0xFF; > if (r3 & 0x4) rbyte[i++] = (regs->GR_L(r1) >> 16) & 0xFF; > if (r3 & 0x2) rbyte[i++] = (regs->GR_L(r1) >> 8) & 0xFF; >- if (r3 & 0x1) rbyte[i++] = (regs->GR_L(r1) ) & 0xFF; >+ if (r3 & 0x1) rbyte[i++] = (regs->GR_L(r1) ) & 0xFF; > > if (i) > ARCH_DEP(vstorec) (rbyte, i-1, effective_addr2, b2, regs); >@@ -7216,7 +7335,7 @@ U32 i2; > > } /* end DEF_INST(add_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2x8 AGFI - Add Long Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7239,7 +7358,7 @@ U32 i2; > > } /* end DEF_INST(add_long_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2xB ALFI - Add Logical Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7258,7 +7377,7 @@ U32 i2; > > } /* end DEF_INST(add_logical_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2xA ALGFI - Add Logical Long Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7277,7 +7396,7 @@ U32 i2; > > } /* end DEF_INST(add_logical_long_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0xA NIHF - And Immediate High Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7297,7 +7416,7 @@ U32 i2; > > } /* end DEF_INST(and_immediate_high_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0xB NILF - And Immediate Low Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7317,7 +7436,7 @@ U32 i2; > > } /* end DEF_INST(and_immediate_low_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2xD CFI - Compare Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7335,7 +7454,7 @@ U32 i2; > > } /* end DEF_INST(compare_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2xC CGFI - Compare Long Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7353,7 +7472,7 @@ U32 i2; > > } /* end DEF_INST(compare_long_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2xF CLFI - Compare Logical Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7371,7 +7490,7 @@ U32 i2; > > } /* end DEF_INST(compare_logical_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2xE CLGFI - Compare Logical Long Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7389,7 +7508,7 @@ U32 i2; > > } /* end DEF_INST(compare_logical_long_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0x6 XIHF - Exclusive Or Immediate High Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7409,7 +7528,7 @@ U32 i2; > > } /* end DEF_INST(exclusive_or_immediate_high_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0x7 XILF - Exclusive Or Immediate Low Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7429,7 +7548,7 @@ U32 i2; > > } /* end DEF_INST(exclusive_or_immediate_low_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0x8 IIHF - Insert Immediate High Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7446,7 +7565,7 @@ U32 i2; > > } /* end DEF_INST(insert_immediate_high_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0x9 IILF - Insert Immediate Low Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7463,7 +7582,7 @@ U32 i2; > > } /* end DEF_INST(insert_immediate_low_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0xE LLIHF - Load Logical Immediate High Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7475,14 +7594,14 @@ U32 i2; > > RIL0(inst, regs, r1, opcd, i2); > >- /* Load fullword operand into high 32 bits of register >+ /* Load fullword operand into high 32 bits of register > and set remaining bits to zero */ > regs->GR_H(r1) = i2; > regs->GR_L(r1) = 0; > > } /* end DEF_INST(load_logical_immediate_high_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0xF LLILF - Load Logical Immediate Low Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7494,13 +7613,13 @@ U32 i2; > > RIL0(inst, regs, r1, opcd, i2); > >- /* Load fullword operand into low 32 bits of register >+ /* Load fullword operand into low 32 bits of register > and set remaining bits to zero */ > regs->GR_G(r1) = i2; > > } /* end DEF_INST(load_logical_immediate_low_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0x1 LGFI - Load Long Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7537,7 +7656,7 @@ U32 i2; > > } /* end DEF_INST(or_immediate_high_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C0xD OILF - Or Immediate Low Fullword [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7557,7 +7676,7 @@ U32 i2; > > } /* end DEF_INST(or_immediate_low_fullword) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2x5 SLFI - Subtract Logical Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7576,7 +7695,7 @@ U32 i2; > > } /* end DEF_INST(subtract_logical_fullword_immediate) */ > >- >+ > /*-------------------------------------------------------------------*/ > /* C2x4 SLGFI - Subtract Logical Long Fullword Immediate [RIL] */ > /*-------------------------------------------------------------------*/ >@@ -7596,7 +7715,7 @@ U32 i2; > } /* end DEF_INST(subtract_logical_long_fullword_immediate) */ > #endif /*defined(FEATURE_EXTENDED_IMMEDIATE)*/ /*@Z9*/ > >- >+ > #if defined(FEATURE_EXTENDED_IMMEDIATE) /*@Z9*/ > /*-------------------------------------------------------------------*/ > /* E312 LT - Load and Test [RXY] */ >@@ -7617,8 +7736,8 @@ VADR effective_addr2; > (S32)regs->GR_L(r1) > 0 ? 2 : 0; > > } /* end DEF_INST(load_and_test) */ >- >- >+ >+ > /*-------------------------------------------------------------------*/ > /* E302 LTG - Load and Test Long [RXY] */ > /*-------------------------------------------------------------------*/ >@@ -7636,10 +7755,10 @@ VADR effective_addr2; > /* Set condition code according to value loaded */ > regs->psw.cc = (S64)regs->GR_G(r1) < 0 ? 1 : > (S64)regs->GR_G(r1) > 0 ? 2 : 0; >- >+ > } /* end DEF_INST(load_and_test_long) */ >- >- >+ >+ > /*-------------------------------------------------------------------*/ > /* B926 LBR - Load Byte Register [RRE] */ > /*-------------------------------------------------------------------*/ >@@ -7810,7 +7929,7 @@ int n; > op = regs->GR_G(r2); > > /* If R2 contents is all zero, set R1 register to 64, >- set R1+1 register to zero, and return cond code 0 */ >+ set R1+1 register to zero, and return cond code 0 */ > if (op == 0) > { > regs->GR_G(r1) = 64; >diff -Naupr hercules-3.05/faketape.c hercules-20070717/faketape.c >--- hercules-3.05/faketape.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/faketape.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,896 @@ >+/* FAKETAPE.C (c) Copyright Roger Bowler, 1999-2007 */ >+/* ESA/390 Tape Device Handler */ >+ >+/* Original Author: "Fish" (David B. Trout) */ >+/* Prime Maintainer: "Fish" (David B. Trout) */ >+/* Secondary Maintainer: Ivan Warren */ >+ >+// $Id: faketape.c,v 1.2 2008/06/22 05:54:30 fish Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This module contains the FAKETAPE emulated tape format support. */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Five emulated tape formats are supported: */ >+/* */ >+/* 1. AWSTAPE This is the format used by the P/390. */ >+/* The entire tape is contained in a single flat file. */ >+/* A tape block consists of one or more block segments. */ >+/* Each block segment is preceded by a 6-byte header. */ >+/* Files are separated by tapemarks, which consist */ >+/* of headers with zero block length. */ >+/* AWSTAPE files are readable and writable. */ >+/* */ >+/* Support for AWSTAPE is in the "AWSTAPE.C" member. */ >+/* */ >+/* */ >+/* 2. OMATAPE This is the Optical Media Attach device format. */ >+/* Each physical file on the tape is represented by */ >+/* a separate flat file. The collection of files that */ >+/* make up the physical tape is obtained from an ASCII */ >+/* text file called the "tape description file", whose */ >+/* file name is always tapes/xxxxxx.tdf (where xxxxxx */ >+/* is the volume serial number of the tape). */ >+/* Three formats of tape files are supported: */ >+/* * FIXED files contain fixed length EBCDIC blocks */ >+/* with no headers or delimiters. The block length */ >+/* is specified in the TDF file. */ >+/* * TEXT files contain variable length ASCII blocks */ >+/* delimited by carriage return line feed sequences. */ >+/* The data is translated to EBCDIC by this module. */ >+/* * HEADER files contain variable length blocks of */ >+/* EBCDIC data prefixed by a 16-byte header. */ >+/* The TDF file and all of the tape files must reside */ >+/* reside under the same directory which is normally */ >+/* on CDROM but can be on disk. */ >+/* OMATAPE files are supported as read-only media. */ >+/* */ >+/* OMATAPE tape Support is in the "OMATAPE.C" member. */ >+/* */ >+/* */ >+/* 3. SCSITAPE This format allows reading and writing of 4mm or */ >+/* 8mm DAT tape, 9-track open-reel tape, or 3480-type */ >+/* cartridge on an appropriate SCSI-attached drive. */ >+/* All SCSI tapes are processed using the generalized */ >+/* SCSI tape driver (st.c) which is controlled using */ >+/* the MTIOCxxx set of IOCTL commands. */ >+/* PROGRAMMING NOTE: the 'tape' portability macros for */ >+/* physical (SCSI) tapes MUST be used for all tape i/o! */ >+/* */ >+/* SCSI tape Support is in the "SCSITAPE.C" member. */ >+/* */ >+/* */ >+/* 4. HET This format is based on the AWSTAPE format but has */ >+/* been extended to support compression. Since the */ >+/* basic file format has remained the same, AWSTAPEs */ >+/* can be read/written using the HET routines. */ >+/* */ >+/* Support for HET is in the "HETTAPE.C" member. */ >+/* */ >+/* */ >+/* 5. FAKETAPE This is the format used by Fundamental Software */ >+/* on their FLEX-ES systems. It it similar to the AWS */ >+/* format. The entire tape is contained in a single */ >+/* flat file. A tape block is preceded by a 12-ASCII- */ >+/* hex-characters header which indicate the size of */ >+/* the previous and next blocks. Files are separated */ >+/* by tapemarks which consist of headers with a zero */ >+/* current block length. FakeTapes are both readable */ >+/* and writable. */ >+/* */ >+/* Support for FAKETAPE is in the "FAKETAPE.C" member. */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Additional credits: */ >+/* 3480 commands contributed by Jan Jaeger */ >+/* Sense byte improvements by Jan Jaeger */ >+/* 3480 Read Block ID and Locate CCWs by Brandon Hill */ >+/* Unloaded tape support by Brandon Hill v209*/ >+/* HET format support by Leland Lucius v209*/ >+/* JCS - minor changes by John Summerfield 2003*/ >+/* PERFORM SUBSYSTEM FUNCTION / CONTROL ACCESS support by */ >+/* Adrian Trenkwalder (with futher enhancements by Fish) */ >+/* **INCOMPLETE** 3590 support by Fish (David B. Trout) */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Reference information: */ >+/* SC53-1200 S/370 and S/390 Optical Media Attach/2 User's Guide */ >+/* SC53-1201 S/370 and S/390 Optical Media Attach/2 Technical Ref */ >+/* SG24-2506 IBM 3590 Tape Subsystem Technical Guide */ >+/* GA32-0331 IBM 3590 Hardware Reference */ >+/* GA32-0329 IBM 3590 Introduction and Planning Guide */ >+/* SG24-2594 IBM 3590 Multiplatform Implementation */ >+/* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference */ >+/* GA32-0127 IBM 3490E Hardware Reference */ >+/* GC35-0152 EREP Release 3.5.0 Reference */ >+/* SA22-7204 ESA/390 Common I/O-Device Commands */ >+/* Flex FakeTape format (http://preview.tinyurl.com/67rgnp) */ >+/*-------------------------------------------------------------------*/ >+ >+// $Log: faketape.c,v $ >+// Revision 1.2 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.1 2008/05/22 19:26:52 fish >+// Flex FakeTape support >+// >+// >+/*-------------------------------------------------------------------*/ >+ >+#include "hstdinc.h" >+#include "hercules.h" /* need Hercules control blocks */ >+#include "tapedev.h" /* Main tape handler header file */ >+ >+/*-------------------------------------------------------------------*/ >+//#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) >+ >+#ifdef ENABLE_TRACING_STMTS >+ #if !defined(DEBUG) >+ #warning DEBUG required for ENABLE_TRACING_STMTS >+ #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) >+#else >+ #undef TRACE >+ #undef ASSERT >+ #undef VERIFY >+ #define TRACE 1 ? ((void)0) : logmsg >+ #define ASSERT(a) >+ #define VERIFY(a) ((void)(a)) >+#endif >+ >+/*********************************************************************/ >+/* START OF ORIGINAL AWS FUNCTIONS (ISW Additions) */ >+/*********************************************************************/ >+ >+/*-------------------------------------------------------------------*/ >+/* Close a FAKETAPE format file */ >+/* New Function added by ISW for consistency with other medias */ >+/*-------------------------------------------------------------------*/ >+void close_faketape (DEVBLK *dev) >+{ >+ if(dev->fd>=0) >+ { >+ logmsg(_("HHCTA301I %4.4x - FakeTape %s closed\n"),dev->devnum,dev->filename); >+ close(dev->fd); >+ } >+ strcpy(dev->filename, TAPE_UNLOADED); >+ dev->fd=-1; >+ dev->blockid = 0; >+ dev->fenced = 0; >+ return; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Rewinds a FAKETAPE format file */ >+/* New Function added by ISW for consistency with other medias */ >+/*-------------------------------------------------------------------*/ >+int rewind_faketape (DEVBLK *dev,BYTE *unitstat,BYTE code) >+{ >+ off_t rcoff; >+ rcoff=lseek(dev->fd,0,SEEK_SET); >+ if(rcoff<0) >+ { >+ build_senseX(TAPE_BSENSE_REWINDFAILED,dev,unitstat,code); >+ return -1; >+ } >+ dev->nxtblkpos=0; >+ dev->prvblkpos=-1; >+ dev->curfilen=1; >+ dev->blockid=0; >+ dev->fenced = 0; >+ return 0; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Determines if a FAKETAPE has passed a virtual EOT marker */ >+/* New Function added by ISW for consistency with other medias */ >+/*-------------------------------------------------------------------*/ >+int passedeot_faketape (DEVBLK *dev) >+{ >+ if(dev->nxtblkpos==0) >+ { >+ dev->eotwarning = 0; >+ return 0; >+ } >+ if(dev->tdparms.maxsize==0) >+ { >+ dev->eotwarning = 0; >+ return 0; >+ } >+ if(dev->nxtblkpos+dev->eotmargin > dev->tdparms.maxsize) >+ { >+ dev->eotwarning = 1; >+ return 1; >+ } >+ dev->eotwarning = 0; >+ return 0; >+} >+ >+/*********************************************************************/ >+/* START OF ORIGINAL RB AWS FUNCTIONS */ >+/*********************************************************************/ >+ >+/*-------------------------------------------------------------------*/ >+/* Open a FAKETAPE format file */ >+/* */ >+/* If successful, the file descriptor is stored in the device block */ >+/* and the return value is zero. Otherwise the return value is -1. */ >+/*-------------------------------------------------------------------*/ >+int open_faketape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc = -1; /* Return code */ >+char pathname[MAX_PATH]; /* file path in host format */ >+ >+ /* Check for no tape in drive */ >+ if (!strcmp (dev->filename, TAPE_UNLOADED)) >+ { >+ build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Open the FAKETAPE file */ >+ hostpath(pathname, dev->filename, sizeof(pathname)); >+ if(!dev->tdparms.logical_readonly) >+ { >+ rc = open (pathname, O_RDWR | O_BINARY); >+ } >+ >+ /* If file is read-only, attempt to open again */ >+ if (dev->tdparms.logical_readonly || (rc < 0 && (EROFS == errno || EACCES == errno))) >+ { >+ dev->readonly = 1; >+ rc = open (pathname, O_RDONLY | O_BINARY); >+ } >+ >+ /* Check for successful open */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA302E Error opening %s: %s\n"), >+ dev->filename, strerror(errno)); >+ >+ strcpy(dev->filename, TAPE_UNLOADED); >+ build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Store the file descriptor in the device block */ >+ dev->fd = rc; >+ rc=rewind_faketape(dev,unitstat,code); >+ return rc; >+ >+} /* end function open_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a FAKETAPE block header */ >+/* */ >+/* If successful, return value is zero, and prvblkl and curblkl are */ >+/* set to the previous and current block lengths respectively. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* and prvblkl and curblkl are undefined. Either or both of prvblkl */ >+/* and/or curblkl may be NULL. */ >+/*-------------------------------------------------------------------*/ >+int readhdr_faketape (DEVBLK *dev, off_t blkpos, >+ U16* pprvblkl, U16* pcurblkl, >+ BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+FAKETAPE_BLKHDR fakehdr; /* FakeTape block header */ >+char sblklen[5]; /* work for converting hdr */ >+int prvblkl; /* Previous block length */ >+int curblkl; /* Current block length */ >+int xorblkl; /* XOR check of block lens */ >+ >+ /* Reposition file to the requested block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA303E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Read the 12-ASCII-hex-character block header */ >+ rc = read (dev->fd, &fakehdr, sizeof(FAKETAPE_BLKHDR)); >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA304E Error reading block header " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file (uninitialized tape) condition */ >+ if (rc == 0) >+ { >+ logmsg (_("HHCTA305E End of file (end of tape) " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ /* Set unit exception with tape indicate (end of tape) */ >+ build_senseX(TAPE_BSENSE_EMPTYTAPE,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file within block header */ >+ if (rc < (int)sizeof(FAKETAPE_BLKHDR)) >+ { >+ logmsg (_("HHCTA306E Unexpected end of file in block header " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Convert the ASCII-hex-character block lengths to binary */ >+ strncpy( sblklen, fakehdr.sprvblkl, 4 ); sblklen[4] = 0; sscanf( sblklen, "%x", &prvblkl ); >+ strncpy( sblklen, fakehdr.scurblkl, 4 ); sblklen[4] = 0; sscanf( sblklen, "%x", &curblkl ); >+ strncpy( sblklen, fakehdr.sxorblkl, 4 ); sblklen[4] = 0; sscanf( sblklen, "%x", &xorblkl ); >+ >+ /* Verify header integrity using the XOR header field */ >+ if ( (prvblkl ^ curblkl) != xorblkl ) >+ { >+ logmsg (_("HHCTA307E Block header damage " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return the converted value(s) to the caller */ >+ if (pprvblkl) *pprvblkl = prvblkl; >+ if (pcurblkl) *pcurblkl = curblkl; >+ >+ /* Successful return */ >+ return 0; >+ >+} /* end function readhdr_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from a FAKETAPE format file */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the return value is zero, and the */ >+/* current file number in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int read_faketape (DEVBLK *dev, BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t blkpos; /* Offset of block header */ >+U16 curblkl; /* Current block length */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Read the block header to obtain the current block length */ >+ rc = readhdr_faketape (dev, blkpos, NULL, &curblkl, unitstat,code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ ASSERT( curblkl >= 0 ); >+ >+ /* Calculate the offset of the next block header */ >+ blkpos += sizeof(FAKETAPE_BLKHDR) + curblkl; >+ >+ /* Check that block length will not exceed buffer size */ >+ if (curblkl > MAX_BLKLEN) >+ { >+ logmsg (_("HHCTA308E Block length exceeds %d " >+ "at offset "I64_FMTX" in file %s\n"), >+ (int)MAX_BLKLEN, blkpos, dev->filename); >+ >+ /* Set unit check with data check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* If not a tapemark, read the data block */ >+ if (curblkl > 0) >+ { >+ rc = read (dev->fd, buf, curblkl); >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA310E Error reading data block " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file within data block */ >+ if (rc < curblkl) >+ { >+ logmsg (_("HHCTA311E Unexpected end of file in data block " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ >+ /* Set unit check with data check and partial record */ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ } >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->prvblkpos = dev->nxtblkpos; >+ dev->nxtblkpos = blkpos; >+ >+ /* Increment the block number */ >+ dev->blockid++; >+ >+ /* Increment file number and return zero if tapemark was read */ >+ if (curblkl == 0) >+ { >+ dev->curfilen++; >+ return 0; /* UX will be set by caller */ >+ } >+ >+ /* Return block length */ >+ return curblkl; >+ >+} /* end function read_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a FAKETAPE block header */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC. */ >+/*-------------------------------------------------------------------*/ >+ >+int writehdr_faketape (DEVBLK *dev, off_t blkpos, >+ U16 prvblkl, U16 curblkl, >+ BYTE *unitstat, BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+FAKETAPE_BLKHDR fakehdr; /* FAKETAPE block header */ >+char sblklen[5]; /* work buffer */ >+ >+ /* Position file to where block header is to go */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA303E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Build the 12-ASCII-hex-character block header */ >+ snprintf( sblklen, sizeof(sblklen), "%4.4X", prvblkl ); >+ strncpy( fakehdr.sprvblkl, sblklen, sizeof(fakehdr.sprvblkl) ); >+ snprintf( sblklen, sizeof(sblklen), "%4.4X", curblkl ); >+ strncpy( fakehdr.scurblkl, sblklen, sizeof(fakehdr.scurblkl) ); >+ snprintf( sblklen, sizeof(sblklen), "%4.4X", prvblkl ^ curblkl ); >+ strncpy( fakehdr.sxorblkl, sblklen, sizeof(fakehdr.sxorblkl) ); >+ >+ /* Write the block header */ >+ rc = write (dev->fd, &fakehdr, sizeof(FAKETAPE_BLKHDR)); >+ if (rc < (int)sizeof(FAKETAPE_BLKHDR)) >+ { >+ if(errno==ENOSPC) >+ { >+ /* Disk FULL */ >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ logmsg (_("HHCTA313E Media full condition reached " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ return -1; >+ } >+ /* Handle write error condition */ >+ logmsg (_("HHCTA314E Error writing block header " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ return 0; >+ >+} /* end function writehdr_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a block to a FAKETAPE format file */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_faketape (DEVBLK *dev, BYTE *buf, U16 blklen, >+ BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+off_t blkpos; /* Offset of block header */ >+U16 prvblkl; /* Length of previous block */ >+ >+ /* Initialize current block position and previous block length */ >+ blkpos = dev->nxtblkpos; >+ prvblkl = 0; >+ >+ /* Determine previous block length if not at start of tape */ >+ if (dev->nxtblkpos > 0) >+ { >+ /* Retrieve the previous block length */ >+ rc = readhdr_faketape (dev, dev->prvblkpos, NULL, &prvblkl, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Recalculate the offset of the next block */ >+ blkpos = dev->prvblkpos + sizeof(FAKETAPE_BLKHDR) + prvblkl; >+ } >+ >+ /* Reposition file to the new block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA312E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ /* ISW: Determine if we are passed maxsize */ >+ if(dev->tdparms.maxsize>0) >+ { >+ if((off_t)(dev->nxtblkpos+blklen+sizeof(FAKETAPE_BLKHDR)) > dev->tdparms.maxsize) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ } >+ /* ISW: End of virtual physical EOT determination */ >+ >+ /* Write the block header */ >+ rc = writehdr_faketape (dev, rcoff, prvblkl, blklen, unitstat, code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos + sizeof(FAKETAPE_BLKHDR) + blklen; >+ dev->prvblkpos = blkpos; >+ >+ /* Write the data block */ >+ rc = write (dev->fd, buf, blklen); >+ if (rc < blklen) >+ { >+ if(errno==ENOSPC) >+ { >+ /* Disk FULL */ >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ logmsg (_("HHCTA315E Media full condition reached " >+ "at offset "I64_FMTX" in file %s\n"), >+ blkpos, dev->filename); >+ return -1; >+ } >+ /* Handle write error condition */ >+ logmsg (_("HHCTA316E Error writing data block " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Increment the block number */ >+ dev->blockid++; >+ >+ /* Set new physical EOF */ >+ do rc = ftruncate( dev->fd, dev->nxtblkpos ); >+ while (EINTR == rc); >+ >+ if (rc != 0) >+ { >+ /* Handle write error condition */ >+ logmsg (_("HHCTA317E Error writing data block " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function write_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a tapemark to a FAKETAPE format file */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_fakemark (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+off_t blkpos; /* Offset of block header */ >+U16 prvblkl; /* Length of previous block */ >+ >+ /* Initialize current block position and previous block length */ >+ blkpos = dev->nxtblkpos; >+ prvblkl = 0; >+ >+ /* Determine previous block length if not at start of tape */ >+ if (dev->nxtblkpos > 0) >+ { >+ /* Retrieve the previous block length */ >+ rc = readhdr_faketape (dev, dev->prvblkpos, NULL, &prvblkl, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Recalculate the offset of the next block */ >+ blkpos = dev->prvblkpos + sizeof(FAKETAPE_BLKHDR) + prvblkl; >+ } >+ >+ /* Reposition file to the new block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA318E Error seeking to offset "I64_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ /* ISW: Determine if we are passed maxsize */ >+ if(dev->tdparms.maxsize>0) >+ { >+ if((off_t)(dev->nxtblkpos+sizeof(FAKETAPE_BLKHDR)) > dev->tdparms.maxsize) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ } >+ /* ISW: End of virtual physical EOT determination */ >+ >+ /* Write the block header */ >+ rc = writehdr_faketape (dev, rcoff, prvblkl, 0, unitstat, code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ >+ /* Increment the block number */ >+ dev->blockid++; >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos + sizeof(FAKETAPE_BLKHDR); >+ dev->prvblkpos = blkpos; >+ >+ /* Set new physical EOF */ >+ do rc = ftruncate( dev->fd, dev->nxtblkpos ); >+ while (EINTR == rc); >+ >+ if (rc != 0) >+ { >+ /* Handle write error condition */ >+ logmsg (_("HHCTA320E Error writing tape mark " >+ "at offset "I64_FMTX" in file %s: %s\n"), >+ blkpos, dev->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function write_fakemark */ >+ >+/*-------------------------------------------------------------------*/ >+/* Synchronize a FAKETAPE format file (i.e. flush buffers to disk) */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int sync_faketape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+ /* Unit check if tape is write-protected */ >+ if (dev->readonly) >+ { >+ build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Perform sync. Return error on failure. */ >+ if (fdatasync( dev->fd ) < 0) >+ { >+ /* Log the error */ >+ logmsg (_("HHCTA321E Sync error on " >+ "device %4.4X = %s: %s\n"), >+ dev->devnum, dev->filename, strerror(errno)); >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function sync_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space over next block of a FAKETAPE format file */ >+/* */ >+/* If successful, return value is the length of the block skipped. */ >+/* If the block skipped was a tapemark, the return value is zero, */ >+/* and the current file number in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsb_faketape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t blkpos; /* Offset of block header */ >+U16 blklen; /* Block length */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Read the block header to obtain the current block length */ >+ rc = readhdr_faketape (dev, blkpos, NULL, &blklen, unitstat,code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ >+ /* Calculate the offset of the next block */ >+ blkpos += sizeof(FAKETAPE_BLKHDR) + blklen; >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->prvblkpos = dev->nxtblkpos; >+ dev->nxtblkpos = blkpos; >+ >+ /* Increment current file number if tapemark was skipped */ >+ if (blklen == 0) >+ dev->curfilen++; >+ >+ /* Increment the block number */ >+ dev->blockid++; >+ >+ /* Return block length or zero if tapemark */ >+ return blklen; >+ >+} /* end function fsb_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous block of a FAKETAPE format file */ >+/* */ >+/* If successful, return value is the length of the block. */ >+/* If the block is a tapemark, the return value is zero, */ >+/* and the current file number in the device block is decremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsb_faketape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+U16 curblkl; /* Length of current block */ >+U16 prvblkl; /* Length of previous block */ >+off_t blkpos; /* Offset of block header */ >+ >+ /* Unit check if already at start of tape */ >+ if (dev->nxtblkpos == 0) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Backspace to previous block position */ >+ blkpos = dev->prvblkpos; >+ >+ /* Read the block header to obtain the block lengths */ >+ rc = readhdr_faketape (dev, blkpos, &prvblkl, &curblkl, unitstat,code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ >+ /* Calculate the offset of the previous block */ >+ dev->prvblkpos = blkpos - sizeof(FAKETAPE_BLKHDR) - prvblkl; >+ dev->nxtblkpos = blkpos; >+ >+ /* Decrement current file number if backspaced over tapemark */ >+ if (curblkl == 0) >+ dev->curfilen--; >+ >+ /* Decrement the block number */ >+ dev->blockid--; >+ >+ /* Return block length or zero if tapemark */ >+ return curblkl; >+ >+} /* end function bsb_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space to next logical file of a FAKETAPE format file */ >+/* */ >+/* For FAKETAPE files, the forward space file operation is achieved */ >+/* by forward spacing blocks until positioned just after a tapemark. */ >+/* */ >+/* If successful, return value is zero, and the current file number */ >+/* in the device block is incremented by fsb_faketape. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsf_faketape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ while (1) >+ { >+ /* Forward space over next block */ >+ rc = fsb_faketape (dev, unitstat,code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ >+ /* Exit loop if spaced over a tapemark */ >+ if (rc == 0) break; >+ >+ } /* end while */ >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function fsf_faketape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous logical file of a FAKETAPE format file */ >+/* */ >+/* For FAKETAPE files, the backspace file operation is achieved */ >+/* by backspacing blocks until positioned just before a tapemark */ >+/* or until positioned at start of tape. */ >+/* */ >+/* If successful, return value is zero, and the current file number */ >+/* in the device block is decremented by bsb_faketape. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsf_faketape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ while (1) >+ { >+ /* Exit if now at start of tape */ >+ if (dev->nxtblkpos == 0) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Backspace to previous block position */ >+ rc = bsb_faketape (dev, unitstat,code); >+ if (rc < 0) return -1; /* (error message already issued) */ >+ >+ /* Exit loop if backspaced over a tapemark */ >+ if (rc == 0) break; >+ >+ } /* end while */ >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function bsf_faketape */ >+ >+/*********************************************************************/ >+/* END OF ORIGINAL RB AWS FUNCTIONS */ >+/*********************************************************************/ >diff -Naupr hercules-3.05/fbadasd.c hercules-20070717/fbadasd.c >--- hercules-3.05/fbadasd.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/fbadasd.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* FBADASD.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 FBA Direct Access Storage Device Handler */ > >-// $Id: fbadasd.c,v 1.47 2007/06/23 00:04:09 ivan Exp $ >+// $Id: fbadasd.c,v 1.48 2007/11/21 22:54:14 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for emulated */ >@@ -14,6 +14,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: fbadasd.c,v $ >+// Revision 1.48 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.47 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -332,7 +335,8 @@ void fbadasd_query_device (DEVBLK *dev, > int buflen, char *buffer) > { > >- *class = "DASD"; >+ BEGIN_DEVICE_CLASS_QUERY( "DASD", dev, class, buflen, buffer ); >+ > snprintf (buffer, buflen, "%s [%lld,%d]", > dev->filename, > (long long)dev->fbaorigin, dev->fbanumblk); >diff -Naupr hercules-3.05/feat370.h hercules-20070717/feat370.h >--- hercules-3.05/feat370.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/feat370.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,30 @@ > /* FEAT370.H (c) Copyright Jan Jaeger, 2000-2007 */ > /* S/370 feature definitions */ > >-// $Id: feat370.h,v 1.23 2007/06/23 00:04:09 ivan Exp $ >+// $Id: feat370.h,v 1.30 2008/01/21 22:20:35 rbowler Exp $ > // > // $Log: feat370.h,v $ >+// Revision 1.30 2008/01/21 22:20:35 rbowler >+// Correct previous changelog entry (ETF3 not ETF2) >+// >+// Revision 1.29 2008/01/21 14:02:13 rbowler >+// Permit Extended-Translation-Facility-3 in S/370 and ESA/390 modes >+// >+// Revision 1.28 2007/12/02 16:34:23 rbowler >+// Permit Extended-Translation-Facility-2 to be activated in S/370 mode >+// >+// Revision 1.27 2007/12/02 15:45:17 rbowler >+// Permit Extended-Translation facility to be activated in S/370 mode >+// >+// Revision 1.26 2007/12/02 15:32:46 rbowler >+// Permit Compare-and-Move-Extended facility to be activated in S/370 mode >+// >+// Revision 1.25 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// >+// Revision 1.24 2007/11/18 22:18:51 rbowler >+// Permit FEATURE_IMMEDIATE_AND_RELATIVE to be activated in S/370 mode >+// > // Revision 1.23 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -38,5 +59,21 @@ > #define FEATURE_TEST_BLOCK > #define FEATURE_ECPSVM > >+/* The following ESA/390 features can be retrofitted to S/370 and >+ may be activated if desired by uncommenting the appropriate >+ define statements below and performing a complete rebuild */ >+//#define FEATURE_IMMEDIATE_AND_RELATIVE >+//#define FEATURE_STRING_INSTRUCTION >+//#define FEATURE_COMPARE_AND_MOVE_EXTENDED >+//#define FEATURE_EXTENDED_TRANSLATION >+//#define FEATURE_EXTENDED_TRANSLATION_FACILITY_2 >+ >+/* The following ESAME features can be retrofitted to S/370 and >+ may be activated if desired by uncommenting the appropriate >+ define statements below and performing a complete rebuild */ >+//#define FEATURE_EXTENDED_TRANSLATION_FACILITY_3 >+//#define FEATURE_ETF2_ENHANCEMENT >+//#define FEATURE_ETF3_ENHANCEMENT >+ > #endif /*defined(OPTION_370_MODE)*/ > /* end of FEAT370.H */ >diff -Naupr hercules-3.05/feat390.h hercules-20070717/feat390.h >--- hercules-3.05/feat390.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/feat390.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,24 @@ > /* FEAT390.H (c) Copyright Jan Jaeger, 2000-2007 */ > /* ESA/390 feature definitions */ > >-// $Id: feat390.h,v 1.38 2007/06/23 00:04:09 ivan Exp $ >+// $Id: feat390.h,v 1.43 2008/02/27 14:14:23 bernard Exp $ > // > // $Log: feat390.h,v $ >+// Revision 1.43 2008/02/27 14:14:23 bernard >+// Implemented feature_security_assist_extension_2 >+// >+// Revision 1.42 2008/01/21 14:04:27 rbowler >+// Activate ETF3 and ETF2/ETF3-Enhancements in ESA/390 mode >+// >+// Revision 1.41 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// >+// Revision 1.40 2007/11/18 22:27:07 rbowler >+// Add Message-Security-Assist-Extension-1 facility to ESA/390 >+// >+// Revision 1.39 2007/11/16 13:01:49 rbowler >+// Add HFP-multiply-add/subtract facility to ESA/390 >+// > // Revision 1.38 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -36,12 +51,15 @@ > #define FEATURE_CPU_RECONFIG > #define FEATURE_DUAL_ADDRESS_SPACE > #define FEATURE_EMULATE_VM >+#define FEATURE_ETF2_ENHANCEMENT /*@ZA*/ >+#define FEATURE_ETF3_ENHANCEMENT /*@ZA*/ > #define FEATURE_EXPANDED_STORAGE > #define FEATURE_EXPEDITED_SIE_SUBSET > #define FEATURE_EXTENDED_STORAGE_KEYS > #define FEATURE_EXTENDED_TOD_CLOCK > #define FEATURE_EXTENDED_TRANSLATION > #define FEATURE_EXTENDED_TRANSLATION_FACILITY_2 >+#define FEATURE_EXTENDED_TRANSLATION_FACILITY_3 /*@ZA*/ > #define FEATURE_EXTERNAL_INTERRUPT_ASSIST > #define FEATURE_FETCH_PROTECTION_OVERRIDE > #define FEATURE_FPS_ENHANCEMENT /*DFP*/ >@@ -49,6 +67,7 @@ > #define FEATURE_HERCULES_DIAGCALLS > #define FEATURE_HEXADECIMAL_FLOATING_POINT > #define FEATURE_HFP_EXTENSIONS >+#define FEATURE_HFP_MULTIPLY_ADD_SUBTRACT > #define FEATURE_HYPERVISOR > #define FEATURE_IMMEDIATE_AND_RELATIVE > #define FEATURE_INCORRECT_LENGTH_INDICATION_SUPPRESSION >@@ -57,6 +76,8 @@ > #define FEATURE_LOCK_PAGE > #define FEATURE_LINKAGE_STACK > #define FEATURE_MESSAGE_SECURITY_ASSIST >+#define FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 >+#define FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 > #define FEATURE_MOVE_PAGE_FACILITY_2 > #define FEATURE_MSSF_CALL > #define FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE >@@ -77,6 +98,7 @@ > #define FEATURE_STORAGE_KEY_ASSIST > #define FEATURE_STORAGE_PROTECTION_OVERRIDE > #define FEATURE_STORE_SYSTEM_INFORMATION >+#define FEATURE_STRING_INSTRUCTION > #define FEATURE_SUBSPACE_GROUP > #define FEATURE_SUPPRESSION_ON_PROTECTION > #define FEATURE_SYSTEM_CONSOLE >diff -Naupr hercules-3.05/feat900.h hercules-20070717/feat900.h >--- hercules-3.05/feat900.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/feat900.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,43 @@ > /* FEAT900.H (c) Copyright Jan Jaeger, 2000-2007 */ > /* ESAME feature definitions */ > >-// $Id: feat900.h,v 1.72 2007/06/23 00:04:09 ivan Exp $ >+// $Id: feat900.h,v 1.83 2008/04/08 17:13:06 bernard Exp $ > // > // $Log: feat900.h,v $ >+// Revision 1.83 2008/04/08 17:13:06 bernard >+// Added execute relative long instruction >+// >+// Revision 1.82 2008/03/23 06:20:47 rbowler >+// Activate Move-with-Optional-Specifications Facility for ESAME >+// >+// Revision 1.81 2008/03/08 23:34:30 rbowler >+// Activate General Instructions Extension Facility for ESAME >+// >+// Revision 1.80 2008/03/01 12:19:04 rbowler >+// Rename new features to include the word facility >+// >+// Revision 1.79 2008/02/29 16:25:48 bernard >+// Enabled Parsing Enhancement Facility >+// >+// Revision 1.78 2008/02/28 11:05:13 rbowler >+// Deactivate new features not yet coded >+// >+// Revision 1.77 2008/02/28 10:11:50 rbowler >+// STFL bit settings for new features in zPOP-06 >+// >+// Revision 1.76 2008/02/27 17:09:58 bernard >+// introduce FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FEATURE >+// >+// Revision 1.75 2008/02/27 14:14:50 bernard >+// Implemented feature_message_security_assist_extension_2 >+// >+// Revision 1.74 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// >+// Revision 1.73 2007/07/19 17:53:55 ivan >+// Disable DIAG 308. Current implementation isn't complete enough to allow >+// for a proper 2.6.21 linux kernel IPL >+// > // Revision 1.72 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -55,19 +89,27 @@ > #define FEATURE_CHSC > #define FEATURE_COMPARE_AND_MOVE_EXTENDED > #define FEATURE_COMPARE_AND_SWAP_AND_STORE /*407*/ >+//#define FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2 /*208*/ > #define FEATURE_COMPRESSION > #define FEATURE_CONDITIONAL_SSKE /*407*/ >+//#define FEATURE_CONFIGURATION_TOPOLOGY_FACILITY /*208*/ > #define FEATURE_CPU_RECONFIG > #define FEATURE_CPUID_FORMAT_1 > #define FEATURE_DAT_ENHANCEMENT > #define FEATURE_DAT_ENHANCEMENT_FACILITY_2 /*@Z9*/ > #define FEATURE_DECIMAL_FLOATING_POINT /*DFP*/ >-#define FEATURE_DIAG308_REIPL >+/* >+ * DIAG 308 Disabled until a complete implementation can >+ * be devised >+ */ >+// #define FEATURE_DIAG308_REIPL > #define FEATURE_DUAL_ADDRESS_SPACE > #define FEATURE_EMULATE_VM >+//#define FEATURE_ENHANCED_DAT_FACILITY /*208*/ > #define FEATURE_ESAME > #define FEATURE_ETF2_ENHANCEMENT /*@Z9*/ > #define FEATURE_ETF3_ENHANCEMENT /*@Z9*/ >+#define FEATURE_EXECUTE_EXTENSIONS_FACILITY /*208*/ > #define FEATURE_EXPANDED_STORAGE > #define FEATURE_EXPEDITED_SIE_SUBSET > #define FEATURE_EXTENDED_IMMEDIATE /*@Z9*/ >@@ -81,6 +123,7 @@ > #define FEATURE_FETCH_PROTECTION_OVERRIDE > #define FEATURE_FPS_ENHANCEMENT /*DFP*/ > #define FEATURE_FPS_EXTENSIONS >+#define FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY /*208*/ > #define FEATURE_HERCULES_DIAGCALLS > #define FEATURE_HEXADECIMAL_FLOATING_POINT > #define FEATURE_HFP_EXTENSIONS >@@ -98,11 +141,13 @@ > #define FEATURE_LONG_DISPLACEMENT > #define FEATURE_MESSAGE_SECURITY_ASSIST > #define FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 /*@Z9*/ >+#define FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 > #define FEATURE_MIDAW /*@Z9*/ > #define FEATURE_MOVE_PAGE_FACILITY_2 >-//#define FEATURE_MVCOS /*407*/ >+#define FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS /*208*/ > #define FEATURE_MVS_ASSIST > #define FEATURE_PAGE_PROTECTION >+#define FEATURE_PARSING_ENHANCEMENT_FACILITY /*208*/ > #define FEATURE_PERFORM_LOCKED_OPERATION > #define FEATURE_PER > #define FEATURE_PER2 >@@ -111,6 +156,7 @@ > #define FEATURE_PRIVATE_SPACE > #define FEATURE_PROTECTION_INTERCEPTION_CONTROL > #define FEATURE_QUEUED_DIRECT_IO >+//#define FEATURE_RESTORE_SUBCHANNEL_FACILITY /*208*/ > #define FEATURE_RESUME_PROGRAM > #define FEATURE_REGION_RELOCATE > #define FEATURE_SENSE_RUNNING_STATUS /*@Z9*/ >@@ -122,6 +168,7 @@ > #define FEATURE_STORE_CLOCK_FAST > #define FEATURE_STORE_FACILITY_LIST_EXTENDED /*@Z9*/ > #define FEATURE_STORE_SYSTEM_INFORMATION >+#define FEATURE_STRING_INSTRUCTION > #define FEATURE_SUBSPACE_GROUP > #define FEATURE_SUPPRESSION_ON_PROTECTION > #define FEATURE_SYSTEM_CONSOLE >diff -Naupr hercules-3.05/featall.h hercules-20070717/featall.h >--- hercules-3.05/featall.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/featall.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,32 @@ > /* FEATALL.H (c) Copyright Jan Jaeger, 2000-2007 */ > /* Architecture-dependent macro definitions */ > >-// $Id: featall.h,v 1.125 2007/06/23 00:04:09 ivan Exp $ >+// $Id: featall.h,v 1.132 2008/07/08 05:35:49 fish Exp $ > // > // $Log: featall.h,v $ >+// Revision 1.132 2008/07/08 05:35:49 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.131 2008/03/01 12:19:04 rbowler >+// Rename new features to include the word facility >+// >+// Revision 1.130 2008/02/28 10:11:50 rbowler >+// STFL bit settings for new features in zPOP-06 >+// >+// Revision 1.129 2008/02/27 17:09:22 bernard >+// introduce FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FEATURE >+// >+// Revision 1.128 2008/02/27 14:15:17 bernard >+// Implemented feature_message_security_assist_extension_2 >+// >+// Revision 1.127 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// >+// Revision 1.126 2007/08/06 16:48:20 ivan >+// Implement "PARM" option for IPL command (same as VM IPL PARM XXX) >+// Also add command helps for ipl, iplc, sysclear, sysreset >+// > // Revision 1.125 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -74,13 +97,16 @@ > interrupt selects instead > of inter-thread signaling */ > #define OPTION_TIMESTAMP_LOGFILE /* Hardcopy logfile HH:MM:SS */ >+#define OPTION_IPLPARM /* IPL PARM a la VM */ > #ifndef FISH_HANG > #define OPTION_PTTRACE /* Pthreads tracing */ > #endif >-//#define OPTION_DEBUG_MESSAGES // Prefix msgs with filename >- // and line# if DEBUG build >+//#define OPTION_DEBUG_MESSAGES /* Prefix msgs with filename >+// and line# if DEBUG build */ > #define OPTION_SET_STSI_INFO /* Set STSI info in cfg file */ > >+#define OPTION_TAPE_AUTOMOUNT /* "Automount" CCWs support */ >+ > /*********************************************************************\ > ********************************************************************* > ** ** >@@ -126,8 +152,10 @@ > #undef FEATURE_CHSC > #undef FEATURE_COMPARE_AND_MOVE_EXTENDED > #undef FEATURE_COMPARE_AND_SWAP_AND_STORE /*407*/ >+#undef FEATURE_COMPARE_AND_SWAP_AND_STORE_FACILITY_2 /*208*/ > #undef FEATURE_COMPRESSION > #undef FEATURE_CONDITIONAL_SSKE /*407*/ >+#undef FEATURE_CONFIGURATION_TOPOLOGY_FACILITY /*208*/ > #undef FEATURE_CPU_RECONFIG > #undef FEATURE_CPUID_FORMAT_1 > #undef FEATURE_DAT_ENHANCEMENT >@@ -136,10 +164,12 @@ > #undef FEATURE_DUAL_ADDRESS_SPACE > #undef FEATURE_ECPSVM > #undef FEATURE_EMULATE_VM >+#undef FEATURE_ENHANCED_DAT_FACILITY /*208*/ > #undef FEATURE_ESAME > #undef FEATURE_ESAME_N3_ESA390 > #undef FEATURE_ETF2_ENHANCEMENT /*@Z9*/ > #undef FEATURE_ETF3_ENHANCEMENT /*@Z9*/ >+#undef FEATURE_EXECUTE_EXTENSIONS_FACILITY /*208*/ > #undef FEATURE_EXPANDED_STORAGE > #undef FEATURE_EXPEDITED_SIE_SUBSET > #undef FEATURE_EXTENDED_IMMEDIATE /*@Z9*/ >@@ -153,6 +183,7 @@ > #undef FEATURE_FETCH_PROTECTION_OVERRIDE > #undef FEATURE_FPS_ENHANCEMENT /*DFP*/ > #undef FEATURE_FPS_EXTENSIONS >+#undef FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY > #undef FEATURE_HERCULES_DIAGCALLS > #undef FEATURE_HEXADECIMAL_FLOATING_POINT > #undef FEATURE_HFP_EXTENSIONS >@@ -171,13 +202,15 @@ > #undef FEATURE_LONG_DISPLACEMENT > #undef FEATURE_MESSAGE_SECURITY_ASSIST > #undef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1 /*@Z9*/ >+#undef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2 > #undef FEATURE_MIDAW /*@Z9*/ > #undef FEATURE_MOVE_PAGE_FACILITY_2 >+#undef FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS /*208*/ > #undef FEATURE_MSSF_CALL > #undef FEATURE_MULTIPLE_CONTROLLED_DATA_SPACE >-#undef FEATURE_MVCOS /*407*/ > #undef FEATURE_MVS_ASSIST > #undef FEATURE_PAGE_PROTECTION >+#undef FEATURE_PARSING_ENHANCEMENT_FACILITY /*208*/ > #undef FEATURE_PERFORM_LOCKED_OPERATION > #undef FEATURE_PER > #undef FEATURE_PER2 >@@ -187,6 +220,7 @@ > #undef FEATURE_PROTECTION_INTERCEPTION_CONTROL > #undef FEATURE_QUEUED_DIRECT_IO > #undef FEATURE_REGION_RELOCATE >+#undef FEATURE_RESTORE_SUBCHANNEL_FACILITY /*208*/ > #undef FEATURE_RESUME_PROGRAM > #undef FEATURE_S370_CHANNEL > #undef FEATURE_S390_DAT >@@ -201,6 +235,7 @@ > #undef FEATURE_STORE_CLOCK_FAST /*@Z9*/ > #undef FEATURE_STORE_FACILITY_LIST_EXTENDED /*@Z9*/ > #undef FEATURE_STORE_SYSTEM_INFORMATION >+#undef FEATURE_STRING_INSTRUCTION > #undef FEATURE_SUBSPACE_GROUP > #undef FEATURE_SUPPRESSION_ON_PROTECTION > #undef FEATURE_SYSTEM_CONSOLE >diff -Naupr hercules-3.05/featchk.h hercules-20070717/featchk.h >--- hercules-3.05/featchk.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/featchk.h 2008-09-03 13:07:48.000000000 +0200 >@@ -10,9 +10,12 @@ > /* */ > /*-------------------------------------------------------------------*/ > >-// $Id: featchk.h,v 1.47 2007/06/23 00:04:09 ivan Exp $ >+// $Id: featchk.h,v 1.48 2007/12/23 00:29:20 rbowler Exp $ > // > // $Log: featchk.h,v $ >+// Revision 1.48 2007/12/23 00:29:20 rbowler >+// reset_channel_path, cancel_subchannel unresolved if no channel subsystem feature >+// > // Revision 1.47 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -251,6 +254,19 @@ > #error Vector Facility not supported on ESAME capable processors > #endif > >+#if !defined(FEATURE_S370_CHANNEL) && !defined(FEATURE_CHANNEL_SUBSYSTEM) >+ #error Either S/370 Channel or Channel Subsystem must be defined >+#endif >+ >+#if defined(FEATURE_S370_CHANNEL) && defined(FEATURE_CHANNEL_SUBSYSTEM) >+ #error S/370 Channel and Channel Subsystem cannot both be defined >+#endif >+ >+#if defined(FEATURE_CANCEL_IO_FACILITY) \ >+ && !defined(FEATURE_CHANNEL_SUBSYSTEM) >+ #error Cancel I/O facility requires Channel Subsystem >+#endif >+ > #if defined(FEATURE_MOVE_PAGE_FACILITY_2) \ > && !defined(FEATURE_4K_STORAGE_KEYS) > #error Move page facility cannot be defined with 2K storage keys >diff -Naupr hercules-3.05/feature.h hercules-20070717/feature.h >--- hercules-3.05/feature.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/feature.h 2008-09-03 13:07:48.000000000 +0200 >@@ -6,9 +6,12 @@ > > // This header file #included by 'hercules.h' > >-// $Id: feature.h,v 1.77 2007/06/23 00:04:09 ivan Exp $ >+// $Id: feature.h,v 1.78 2007/11/21 22:55:49 fish Exp $ > // > // $Log: feature.h,v $ >+// Revision 1.78 2007/11/21 22:55:49 fish >+// (untab) >+// > // Revision 1.77 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -509,13 +512,13 @@ z900_ ## _name > #if defined(FEATURE_INTERVAL_TIMER) > #define ITIMER_UPDATE(_addr, _len, _regs) \ > do { \ >- if( ITIMER_ACCESS((_addr), (_len)) ) \ >+ if( ITIMER_ACCESS((_addr), (_len)) ) \ > ARCH_DEP(fetch_int_timer) ((_regs)); \ > } while(0) > #define ITIMER_SYNC(_addr, _len, _regs) \ > do { \ > if( ITIMER_ACCESS((_addr), (_len)) ) \ >- ARCH_DEP(store_int_timer) ((_regs)); \ >+ ARCH_DEP(store_int_timer) ((_regs)); \ > } while (0) > #else > #define ITIMER_UPDATE(_addr, _len, _regs) >diff -Naupr hercules-3.05/fillfnam.c hercules-20070717/fillfnam.c >--- hercules-3.05/fillfnam.c 2007-01-01 04:52:08.000000000 +0100 >+++ hercules-20070717/fillfnam.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,9 @@ >-// $Id: fillfnam.c,v 1.10 2006/12/31 17:52:50 gsmith Exp $ >+// $Id: fillfnam.c,v 1.11 2008/02/18 22:57:08 rbowler Exp $ > // > // $Log: fillfnam.c,v $ >+// Revision 1.11 2008/02/18 22:57:08 rbowler >+// Disable filename completion for Solaris 2.9 due to missing scandir function >+// > // Revision 1.10 2006/12/31 17:52:50 gsmith > // 31 Dec 2006 Fix typo in line 1 of fillfnam.c > // >@@ -15,6 +18,17 @@ > #include "hercules.h" > #include "fillfnam.h" > >+/* On Solaris 2.9 (SunOS 5.9) and earlier, there is no scandir >+ and alphasort function. In this case fillfnam does nothing >+ and the tab command is effectively a no-operation */ >+#if !(defined(HAVE_SCANDIR) && defined(HAVE_ALPHASORT)) && !defined(_MSVC_) >+int tab_pressed(char *cmdlinefull, int *cmdoffset) { >+ UNREFERENCED(cmdlinefull); >+ UNREFERENCED(cmdoffset); >+ return 0; >+} >+#else >+ > char *filterarray; > > int filter(const struct dirent *ent) { >@@ -199,3 +213,4 @@ int tab_pressed(char *cmdlinefull, int * > free(path); > return(0); > } >+#endif /*(HAVE_SCANDIR && HAVE_ALPHASORT) || _MSVC_*/ >diff -Naupr hercules-3.05/fishhang.c hercules-20070717/fishhang.c >--- hercules-3.05/fishhang.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/fishhang.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // fishhang.c verify/debug proper Hercules LOCK handling... > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2002-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: fishhang.c,v 1.18 2007/06/23 00:04:09 ivan Exp $ >+// $Id: fishhang.c,v 1.19 2007/11/30 14:54:32 jmaynard Exp $ > // > // $Log: fishhang.c,v $ >+// Revision 1.19 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.18 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/fishhang.h hercules-20070717/fishhang.h >--- hercules-3.05/fishhang.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/fishhang.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // fishhang.h verify/debug proper Hercules LOCK handling... > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2002-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: fishhang.h,v 1.14 2007/06/23 00:04:09 ivan Exp $ >+// $Id: fishhang.h,v 1.15 2007/11/30 14:54:32 jmaynard Exp $ > // > // $Log: fishhang.h,v $ >+// Revision 1.15 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.14 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/float.c hercules-20070717/float.c >--- hercules-3.05/float.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/float.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* FLOAT.C (c) Copyright Peter Kuschnerus, 2000-2007 */ > /* ESA/390 Hex Floatingpoint Instructions */ > >-// $Id: float.c,v 1.49 2007/06/23 00:04:09 ivan Exp $ >+// $Id: float.c,v 1.56 2008/05/04 14:14:03 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the ESA/390 Hex Floatingpoint Instructions */ >@@ -32,6 +32,27 @@ > /*-------------------------------------------------------------------*/ > > // $Log: float.c,v $ >+// Revision 1.56 2008/05/04 14:14:03 rbowler >+// Fix CGXR to handle values exceeding 2G >+// >+// Revision 1.55 2008/05/04 10:01:48 rbowler >+// Fix CGDR to handle values exceeding 2G >+// >+// Revision 1.54 2008/04/27 22:34:23 rbowler >+// CGER result incorrect when expo=70 >+// >+// Revision 1.53 2008/04/25 21:35:02 rbowler >+// CGER result incorrect for values over 2G >+// >+// Revision 1.52 2008/04/22 17:41:21 rbowler >+// Correction to CXGR instruction >+// >+// Revision 1.51 2008/04/21 20:26:27 rbowler >+// CEGR result incorrect if source exceeds 6 digits >+// >+// Revision 1.50 2008/04/20 21:53:50 rbowler >+// CDGR result incorrect if source exceeds 14 digits >+// > // Revision 1.49 2007/06/23 00:04:09 ivan > // Update copyright notices to include current year (2007) > // >@@ -5536,7 +5557,7 @@ DEF_INST(convert_fix64_to_float_short_re > { > int r1, r2; /* Values of R fields */ > int i1; >-LONG_FLOAT fl; >+SHORT_FLOAT fl; > U64 fix; > > RRE(inst, regs, r1, r2); >@@ -5552,14 +5573,21 @@ U64 fix; > fl.sign = POS; > > if (fix) { >- fl.long_fract = fix; >- fl.expo = 78; >+ fl.expo = 70; >+ >+ /* Truncate fraction to 6 hexadecimal digits */ >+ while (fix & 0xFFFFFFFFFF000000ULL) >+ { >+ fix >>= 4; >+ fl.expo += 1; >+ } >+ fl.short_fract = (U32)fix; > > /* Normalize result */ >- normal_lf(&fl); >+ normal_sf(&fl); > >- /* To register (converting to short float) */ >- regs->fpr[i1] = ((U32)fl.sign << 31) | ((U32)fl.expo << 24) | (fl.long_fract >> 32); >+ /* To register */ >+ store_sf(&fl, regs->fpr + i1); > } else { > /* true zero */ > regs->fpr[i1] = 0; >@@ -5593,6 +5621,13 @@ U64 fix; > fl.long_fract = fix; > fl.expo = 78; > >+ /* Truncate fraction to 14 hexadecimal digits */ >+ while (fl.long_fract & 0xFF00000000000000ULL) >+ { >+ fl.long_fract >>= 4; >+ fl.expo += 1; >+ } >+ > /* Normalize result */ > normal_lf(&fl); > >@@ -5607,7 +5642,7 @@ U64 fix; > > > /*-------------------------------------------------------------------*/ >-/* B3C6 CXGR - Convert from Fix64 to Float. Extended Register[RRE] */ >+/* B3C6 CXGR - Convert from Fix64 to Float. Extended Register [RRE] */ > /*-------------------------------------------------------------------*/ > DEF_INST(convert_fix64_to_float_ext_reg) > { >@@ -5629,9 +5664,9 @@ U64 fix; > fl.sign = POS; > > if (fix) { >- fl.ms_fract = fix; >- fl.ls_fract = 0; >- fl.expo = 76; /* 64 + 12 (Herc ms fract is 12 digits) */ >+ fl.ms_fract = fix >> 16; /* Fraction high (12 digits) */ >+ fl.ls_fract = fix << 48; /* Fraction low (16 digits) */ >+ fl.expo = 80; > > /* Normalize result */ > normal_ef(&fl); >@@ -6060,6 +6095,7 @@ int r1, r2; > int m3; > SHORT_FLOAT fl; > BYTE shift; >+U64 intpart; > U32 lsfract; > > RRF_M(inst, regs, r1, r2, m3); >@@ -6073,7 +6109,7 @@ U32 lsfract; > /* not zero */ > normal_sf(&fl); > >- if (fl.expo > 72) { >+ if (fl.expo > 80) { > /* exeeds range by exponent */ > regs->GR_G(r1) = fl.sign ? 0x8000000000000000ULL : 0x7FFFFFFFFFFFFFFFULL; > regs->psw.cc = 3; >@@ -6081,10 +6117,10 @@ U32 lsfract; > } > if (fl.expo > 70) { > /* to be left shifted */ >- fl.short_fract <<= ((fl.expo - 70) * 4); >+ intpart = (U64)fl.short_fract << ((fl.expo - 70) * 4); > if (fl.sign) { > /* negative */ >- if (fl.short_fract > 0x80000000UL) { >+ if (intpart > 0x8000000000000000ULL) { > /* exeeds range by value */ > regs->GR_G(r1) = 0x8000000000000000ULL; > regs->psw.cc = 3; >@@ -6092,7 +6128,7 @@ U32 lsfract; > } > } else { > /* positive */ >- if (fl.short_fract > 0x7FFFFFFFUL) { >+ if (intpart > 0x7FFFFFFFFFFFFFFFULL) { > /* exeeds range by value */ > regs->GR_G(r1) = 0x7FFFFFFFFFFFFFFFULL; > regs->psw.cc = 3; >@@ -6104,77 +6140,83 @@ U32 lsfract; > /* to be right shifted and to be rounded */ > shift = ((70 - fl.expo) * 4); > lsfract = fl.short_fract << (32 - shift); >- fl.short_fract >>= shift; >+ intpart = fl.short_fract >> shift; > > if (m3 == 1) { > /* biased round to nearest */ > if (lsfract & 0x80000000UL) { >- fl.short_fract++; >+ intpart++; > } > } else if (m3 == 4) { > /* round to nearest */ > if ((lsfract > 0x80000000UL) >- || ((fl.short_fract & 0x00000001UL) >+ || ((intpart & 0x0000000000000001ULL) > && (lsfract == 0x80000000UL))) { >- fl.short_fract++; >+ intpart++; > } > } else if (m3 == 6) { > /* round toward + */ > if ((fl.sign == POS) > && lsfract) { >- fl.short_fract++; >+ intpart++; > } > } else if (m3 == 7) { > /* round toward - */ > if ((fl.sign == NEG) > && lsfract) { >- fl.short_fract++; >+ intpart++; > } > } > } else if (fl.expo == 64) { > /* to be rounded */ > lsfract = fl.short_fract << 8; >- fl.short_fract = 0; >+ intpart = 0; > > if (m3 == 1) { > /* biased round to nearest */ > if (lsfract & 0x80000000UL) { >- fl.short_fract++; >+ intpart++; > } > } else if (m3 == 4) { > /* round to nearest */ > if (lsfract > 0x80000000UL) { >- fl.short_fract++; >+ intpart++; > } > } else if (m3 == 6) { > /* round toward + */ > if ((fl.sign == POS) > && lsfract) { >- fl.short_fract++; >+ intpart++; > } > } else if (m3 == 7) { > /* round toward - */ > if ((fl.sign == NEG) > && lsfract) { >- fl.short_fract++; >+ intpart++; > } > } > } else if (fl.expo < 64) { >- fl.short_fract = 0; >+ intpart = 0; > if (((m3 == 6) > && (fl.sign == POS)) > || ((m3 == 7) > && (fl.sign == NEG))) { >- fl.short_fract++; >+ intpart++; > } >+ } else /* fl.expo == 70 */ { >+ /* no shift or round required */ >+ intpart = (U64)fl.short_fract; > } > if (fl.sign) { > /* negative */ >- regs->GR_G(r1) = -((S64) fl.short_fract); >+ if (intpart == 0x8000000000000000ULL) >+ regs->GR_G(r1) = 0x8000000000000000ULL; >+ else >+ regs->GR_G(r1) = -((S64)intpart); > regs->psw.cc = 1; > } else { > /* positive */ >- regs->GR_G(r1) = fl.short_fract; >+ regs->GR_G(r1) = intpart; > regs->psw.cc = 2; > } > } else { >@@ -6207,13 +6249,34 @@ U64 lsfract; > /* not zero */ > normal_lf(&fl); > >- if (fl.expo > 72) { >+ if (fl.expo > 80) { > /* exeeds range by exponent */ > regs->GR_G(r1) = fl.sign ? 0x8000000000000000ULL : 0x7FFFFFFFFFFFFFFFULL; > regs->psw.cc = 3; > return; > } >- if (fl.expo > 64) { >+ if (fl.expo > 78) { >+ /* to be left shifted */ >+ fl.long_fract <<= ((fl.expo - 78) * 4); >+ if (fl.sign) { >+ /* negative */ >+ if (fl.long_fract > 0x8000000000000000ULL) { >+ /* exeeds range by value */ >+ regs->GR_G(r1) = 0x8000000000000000ULL; >+ regs->psw.cc = 3; >+ return; >+ } >+ } else { >+ /* positive */ >+ if (fl.long_fract > 0x7FFFFFFFFFFFFFFFULL) { >+ /* exeeds range by value */ >+ regs->GR_G(r1) = 0x7FFFFFFFFFFFFFFFULL; >+ regs->psw.cc = 3; >+ return; >+ } >+ } >+ } else if ((fl.expo > 64) >+ && (fl.expo < 78)) { > /* to be right shifted and to be rounded */ > shift = ((78 - fl.expo) * 4); > lsfract = fl.long_fract << (64 - shift); >@@ -6244,25 +6307,6 @@ U64 lsfract; > fl.long_fract++; > } > } >- if (fl.expo == 72) { >- if (fl.sign) { >- /* negative */ >- if (fl.long_fract > 0x80000000UL) { >- /* exeeds range by value */ >- regs->GR_G(r1) = 0x8000000000000000ULL; >- regs->psw.cc = 3; >- return; >- } >- } else { >- /* positive */ >- if (fl.long_fract > 0x7FFFFFFFUL) { >- /* exeeds range by value */ >- regs->GR_G(r1) = 0x7FFFFFFFFFFFFFFFULL; >- regs->psw.cc = 3; >- return; >- } >- } >- } > } else if (fl.expo == 64) { > /* to be rounded */ > lsfract = fl.long_fract << 8; >@@ -6291,8 +6335,7 @@ U64 lsfract; > fl.long_fract++; > } > } >- } else { >- /* fl.expo < 64 */ >+ } else if (fl.expo < 64) { > fl.long_fract = 0; > if (((m3 == 6) > && (fl.sign == POS)) >@@ -6303,7 +6346,10 @@ U64 lsfract; > } > if (fl.sign) { > /* negative */ >- regs->GR_G(r1) = -((S64) fl.long_fract); >+ if (fl.long_fract == 0x8000000000000000ULL) >+ regs->GR_G(r1) = 0x8000000000000000ULL; >+ else >+ regs->GR_G(r1) = -((S64)fl.long_fract); > regs->psw.cc = 1; > } else { > /* positive */ >@@ -6327,6 +6373,7 @@ int r1, r2; > int m3; > EXTENDED_FLOAT fl; > BYTE shift; >+U64 intpart; > U64 lsfract; > > RRF_M(inst, regs, r1, r2, m3); >@@ -6341,7 +6388,7 @@ U64 lsfract; > /* not zero */ > normal_ef(&fl); > >- if (fl.expo > 72) { >+ if (fl.expo > 80) { > /* exeeds range by exponent */ > regs->GR_G(r1) = fl.sign ? 0x8000000000000000ULL : 0x7FFFFFFFFFFFFFFFULL; > regs->psw.cc = 3; >@@ -6349,101 +6396,105 @@ U64 lsfract; > } > if (fl.expo > 64) { > /* to be right shifted and to be rounded */ >- shift = ((92 - fl.expo - 16) * 4); >- lsfract = fl.ms_fract << (64 - shift); >- fl.ms_fract >>= shift; >+ shift = ((92 - fl.expo) * 4); >+ if (shift > 64) { >+ intpart = fl.ms_fract >> (shift - 64); >+ lsfract = (fl.ls_fract >> (128 - shift)) >+ | (fl.ms_fract << (128 - shift)); >+ } else if (shift < 64) { >+ intpart = (fl.ls_fract >> shift) >+ | (fl.ms_fract << (64 - shift)); >+ lsfract = fl.ls_fract << (64 - shift); >+ } else /* shift == 64 */ { >+ intpart = fl.ms_fract; >+ lsfract = fl.ls_fract; >+ } > > if (m3 == 1) { > /* biased round to nearest */ > if (lsfract & 0x8000000000000000ULL) { >- fl.ms_fract++; >+ intpart++; > } > } else if (m3 == 4) { > /* round to nearest */ >- if (((lsfract & 0x8000000000000000ULL) >- && ((lsfract & 0x7FFFFFFFFFFFFFFFULL) >- || fl.ls_fract)) >- || ( (fl.ms_fract & 0x0000000000000001ULL) >- && (lsfract == 0x8000000000000000ULL) >- && (fl.ls_fract == 0))) { >- fl.ms_fract++; >+ if ((lsfract > 0x8000000000000000ULL) >+ || ((intpart & 0x0000000000000001ULL) >+ && (lsfract == 0x8000000000000000ULL))) { >+ intpart++; > } > } else if (m3 == 6) { > /* round toward + */ > if ((fl.sign == POS) >- && (lsfract >- || fl.ls_fract)) { >- fl.ms_fract++; >+ && lsfract) { >+ intpart++; > } > } else if (m3 == 7) { > /* round toward - */ > if ((fl.sign == NEG) >- && (lsfract >- || fl.ls_fract)) { >- fl.ms_fract++; >+ && lsfract) { >+ intpart++; > } > } > } else if (fl.expo == 64) { > /* to be rounded */ >- lsfract = fl.ms_fract << 16; >- fl.ms_fract = 0; >+ lsfract = (fl.ms_fract << 16) | (fl.ls_fract >> 48); >+ intpart = 0; > > if (m3 == 1) { > /* biased round to nearest */ > if (lsfract & 0x8000000000000000ULL) { >- fl.ms_fract++; >+ intpart++; > } > } else if (m3 == 4) { > /* round to nearest */ >- if ((lsfract & 0x8000000000000000ULL) >- && ((lsfract & 0x7FFFFFFFFFFFFFFFULL) >- || fl.ls_fract)) { >- fl.ms_fract++; >+ if (lsfract > 0x8000000000000000ULL) { >+ intpart++; > } > } else if (m3 == 6) { > /* round toward + */ > if ((fl.sign == POS) >- && (lsfract >- || fl.ls_fract)) { >- fl.ms_fract++; >+ && lsfract) { >+ intpart++; > } > } else if (m3 == 7) { > /* round toward - */ > if ((fl.sign == NEG) >- && (lsfract >- || fl.ls_fract)) { >- fl.ms_fract++; >+ && lsfract) { >+ intpart++; > } > } > } else { > /* fl.expo < 64 */ >- fl.ms_fract = 0; >+ intpart = 0; > if (((m3 == 6) > && (fl.sign == POS)) > || ((m3 == 7) > && (fl.sign == NEG))) { >- fl.ms_fract++; >+ intpart++; > } > } > if (fl.sign) { > /* negative */ >- if (fl.ms_fract > 0x80000000UL) { >+ if (intpart > 0x8000000000000000ULL) { > /* exeeds range by value */ > regs->GR_G(r1) = 0x8000000000000000ULL; > regs->psw.cc = 3; > return; > } >- regs->GR_G(r1) = -((S64) fl.ms_fract); >+ if (intpart == 0x8000000000000000ULL) >+ regs->GR_G(r1) = 0x8000000000000000ULL; >+ else >+ regs->GR_G(r1) = -((S64)intpart); > regs->psw.cc = 1; > } else { > /* positive */ >- if (fl.ms_fract > 0x7FFFFFFFUL) { >+ if (intpart > 0x7FFFFFFFFFFFFFFFULL) { > /* exeeds range by value */ >- regs->GR_G(r1) = 0x7FFFFFFFUL; >+ regs->GR_G(r1) = 0x7FFFFFFFFFFFFFFFULL; > regs->psw.cc = 3; > return; > } >- regs->GR_G(r1) = fl.ms_fract; >+ regs->GR_G(r1) = intpart; > regs->psw.cc = 2; > } > } else { >diff -Naupr hercules-3.05/fthreads.c hercules-20070717/fthreads.c >--- hercules-3.05/fthreads.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/fthreads.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // fthreads.c Fish's WIN32 version of pthreads > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2001-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: fthreads.c,v 1.29 2007/06/23 00:04:10 ivan Exp $ >+// $Id: fthreads.c,v 1.30 2007/11/30 14:54:32 jmaynard Exp $ > // > // $Log: fthreads.c,v $ >+// Revision 1.30 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.29 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/fthreads.h hercules-20070717/fthreads.h >--- hercules-3.05/fthreads.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/fthreads.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,22 @@ > // fthreads.h Fish's WIN32 version of pthreads > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2001-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: fthreads.h,v 1.22 2007/06/23 00:04:10 ivan Exp $ >+// $Id: fthreads.h,v 1.24 2008/03/25 11:41:31 fish Exp $ > // > // $Log: fthreads.h,v $ >+// Revision 1.24 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.23 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.22 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -35,10 +45,9 @@ > #endif > > //////////////////////////////////////////////////////////////////////////////////// >-// Just some handy macros to have around... >+// Just a handy macro to have around... > >-#define IsEventSet(h) (WaitForSingleObject(h,0) == WAIT_OBJECT_0) >-#define RC(rc) (errno = rc) >+#define RC(rc) (errno = rc) > > //////////////////////////////////////////////////////////////////////////////////// > // (need struct timespec for fthread_cond_timedwait) >diff -Naupr hercules-3.05/general1.c hercules-20070717/general1.c >--- hercules-3.05/general1.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/general1.c 2008-09-03 13:07:48.000000000 +0200 >@@ -7,7 +7,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: general1.c,v 1.151 2007/06/23 00:04:10 ivan Exp $ >+// $Id: general1.c,v 1.166 2008/05/06 22:15:42 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements all general instructions of the */ >@@ -32,6 +32,51 @@ > /*-------------------------------------------------------------------*/ > > // $Log: general1.c,v $ >+// Revision 1.166 2008/05/06 22:15:42 rbowler >+// Fix warning: operation on `p1' may be undefined >+// >+// Revision 1.165 2008/04/11 14:28:44 bernard >+// Integrate regs->exrl into base Hercules code. >+// >+// Revision 1.164 2008/04/09 12:01:35 rbowler >+// Correct target instruction address for EXRL >+// >+// Revision 1.163 2008/04/09 07:38:09 bernard >+// Allign to Rogers terminal ;-) >+// >+// Revision 1.162 2008/04/09 07:15:14 bernard >+// Comment Roger >+// >+// Revision 1.161 2008/04/09 07:05:19 bernard >+// EXRL has format C6x0, not C6. Thanks Roger! >+// >+// Revision 1.160 2008/04/09 05:38:57 bernard >+// Instruction fetching error, now fetched with PSW_IA macro. >+// >+// Revision 1.159 2008/04/08 18:33:41 bernard >+// Error in EXRL >+// >+// Revision 1.158 2008/04/08 17:13:26 bernard >+// Added execute relative long instruction >+// >+// Revision 1.157 2008/03/05 00:34:44 ptl00 >+// Fix CFC operand size fetch >+// >+// Revision 1.156 2008/03/04 00:52:32 ptl00 >+// Fix BSM/BASSM mode switch trace >+// >+// Revision 1.155 2008/02/28 22:07:09 ptl00 >+// Fix mode switch trace >+// >+// Revision 1.154 2008/02/15 21:20:00 ptl00 >+// Fix EX to SS ops so that ILC is 4 on PER rupts >+// >+// Revision 1.153 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// >+// Revision 1.152 2007/08/07 19:47:59 ivan >+// Fix a couple of gcc-4.2 warnings >+// > // Revision 1.151 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -452,7 +497,7 @@ VADR newia; > regs->GR_L(r1) = > ( regs->psw.amode ) > ? (0x80000000 | PSW_IA31(regs, 2)) >- : (((!regs->execflag ? 2 : 4) << 29) >+ : (((!regs->execflag ? 2 : regs->exrl ? 6 : 4) << 29) > | (regs->psw.cc << 28) | (regs->psw.progmask << 24) > | PSW_IA24(regs, 2)); > >@@ -570,6 +615,10 @@ DEF_INST(branch_and_save_and_set_mode) > { > int r1, r2; /* Values of R fields */ > VADR newia; /* New instruction address */ >+int xmode; /* 64 or 31 mode of target */ >+#if defined(FEATURE_ESAME) >+BYTE *ipsav; /* save for ip */ >+#endif /*defined(FEATURE_ESAME)*/ > > RR_B(inst, regs, r1, r2); > >@@ -577,22 +626,31 @@ VADR newia; > newia = regs->GR(r2); > > #if defined(FEATURE_TRACING) >-#if defined(FEATURE_ESAME) >+ #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ >- if((regs->CR(12) & CR12_MTRACE) && (r2 != 0) && regs->psw.amode64 != (newia & 1)) >+ if((regs->CR(12) & CR12_MTRACE) && (r2 != 0) && (regs->psw.amode64 != (newia & 1))) > { >- regs->psw.ilc = 0; // indicates regs->ip not updated >- ARCH_DEP(trace_ms) (regs->CR(12) & CR12_BRTRACE, >- newia | regs->psw.amode64 ? newia & 0x80000000 : 0, regs); >+ /* save ip and update it for mode switch trace */ >+ ipsav = regs->ip; >+ INST_UPDATE_PSW(regs, 2, 0); >+ regs->psw.ilc = 2; >+ regs->CR(12) = ARCH_DEP(trace_ms) (regs->CR(12) & CR12_BRTRACE ? 1 : 0, >+ newia & ~0x01, regs); >+ regs->ip = ipsav; > } > else >-#endif /*defined(FEATURE_ESAME)*/ >+ #endif /*defined(FEATURE_ESAME)*/ > /* Add a branch trace entry to the trace table */ > if ((regs->CR(12) & CR12_BRTRACE) && (r2 != 0)) > { > regs->psw.ilc = 0; // indicates regs->ip not updated >- regs->CR(12) = ARCH_DEP(trace_br) (regs->GR_L(r2) & 0x80000000, >- regs->GR_L(r2), regs); >+ #if defined(FEATURE_ESAME) >+ if (newia & 0x01) >+ xmode = 1; >+ else >+ #endif /*defined(FEATURE_ESAME)*/ >+ xmode = newia & 0x80000000 ? 1 : 0; >+ regs->CR(12) = ARCH_DEP(trace_br) (xmode, newia & ~0x01, regs); > } > #endif /*defined(FEATURE_TRACING)*/ > >@@ -601,7 +659,7 @@ VADR newia; > if ( regs->psw.amode64 ) > regs->GR_G(r1) = PSW_IA64(regs, 3); // low bit on > else >-#endif >+#endif /*defined(FEATURE_ESAME)*/ > if ( regs->psw.amode ) > regs->GR_L(r1) = 0x80000000 | PSW_IA31(regs, 2); > else >@@ -634,14 +692,17 @@ VADR newia; > /* Compute the branch address from the R2 operand */ > newia = regs->GR(r2); > >-#if defined(FEATURE_ESAME) >+#if defined(FEATURE_TRACING) >+ #if defined(FEATURE_ESAME) > /* Add a mode trace entry when switching in/out of 64 bit mode */ >- if((regs->CR(12) & CR12_MTRACE) && (r2 != 0) && regs->psw.amode64 != (newia & 1)) >+ if((regs->CR(12) & CR12_MTRACE) && (r2 != 0) && (regs->psw.amode64 != (newia & 1))) > { >- regs->psw.ilc = 0; // indicates regs->ip not updated >- ARCH_DEP(trace_ms) (0, newia, regs); >+ INST_UPDATE_PSW(regs, 2, 0); >+ regs->psw.ilc = 2; >+ regs->CR(12) = ARCH_DEP(trace_ms) (0, 0, regs); > } >-#endif /*defined(FEATURE_ESAME)*/ >+ #endif /*defined(FEATURE_ESAME)*/ >+#endif /*defined(FEATURE_TRACING)*/ > > /* Insert addressing mode into bit 0 of R1 operand */ > if ( r1 != 0 ) >@@ -1144,8 +1205,8 @@ GREG gr2_high_bit = CFC_HIGH_BIT; > op1_addr = ( regs->GR(1) + index ) & ADDRESS_MAXWRAP(regs); > op3_addr = ( regs->GR(3) + index ) & ADDRESS_MAXWRAP(regs); > >- ARCH_DEP( vfetchc )( op1, op_size, op1_addr, AR1, regs ); >- ARCH_DEP( vfetchc )( op3, op_size, op3_addr, AR1, regs ); >+ ARCH_DEP( vfetchc )( op1, op_size - 1, op1_addr, AR1, regs ); >+ ARCH_DEP( vfetchc )( op3, op_size - 1, op3_addr, AR1, regs ); > > /* Update GR2 operand index value... (Note: we must do this AFTER > we fetch the operand data in case of storage access exceptions) */ >@@ -1378,8 +1439,8 @@ VADR addr1, addr2; > VADR addrp; /* Parameter list address */ > BYTE *main1; /* Mainstor address of op1 */ > int ln2; /* Second operand length - 1 */ >-U64 old8, new8=0; /* Swap values for cmpxchg8 */ >-U32 old4, new4=0; /* Swap values for cmpxchg4 */ >+U64 old8=0, new8=0; /* Swap values for cmpxchg8 */ >+U32 old4=0, new4=0; /* Swap values for cmpxchg4 */ > U64 stv8=0; /* 8-byte store value */ > U32 stv4=0; /* 4-byte store value */ > U16 stv2=0; /* 2-byte store value */ >@@ -1993,6 +2054,7 @@ BYTE pad; > #endif /*defined(FEATURE_COMPARE_AND_MOVE_EXTENDED)*/ > > >+#if defined(FEATURE_STRING_INSTRUCTION) > /*-------------------------------------------------------------------*/ > /* B25D CLST - Compare Logical String [RRE] */ > /*-------------------------------------------------------------------*/ >@@ -2070,9 +2132,11 @@ BYTE termchar; > /* Set condition code */ > regs->psw.cc = cc; > >-} >+} /* end DEF_INST(compare_logical_string) */ >+#endif /*defined(FEATURE_STRING_INSTRUCTION)*/ > > >+#if defined(FEATURE_STRING_INSTRUCTION) > /*-------------------------------------------------------------------*/ > /* B257 CUSE - Compare Until Substring Equal [RRE] */ > /*-------------------------------------------------------------------*/ >@@ -2267,7 +2331,8 @@ S32 remlen1, remlen2; > /* Set condition code */ > regs->psw.cc = cc; > >-} >+} /* end DEF_INST(compare_until_substring_equal) */ >+#endif /*defined(FEATURE_STRING_INSTRUCTION)*/ > > > #ifdef FEATURE_EXTENDED_TRANSLATION >@@ -3062,7 +3127,80 @@ BYTE *ip; > memcpy (regs->exinst, ip, 8); > > /* Program check if recursive execute */ >- if ( regs->exinst[0] == 0x44 ) >+ if ( regs->exinst[0] == 0x44 >+#if defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY) >+ || (regs->exinst[0] == 0xc6 && !(regs->exinst[1] & 0x0f)) >+#endif /*defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY)*/ >+ ) >+ regs->program_interrupt (regs, PGM_EXECUTE_EXCEPTION); >+ >+ /* Or 2nd byte of instruction with low-order byte of R1 */ >+ regs->exinst[1] |= r1 ? regs->GR_LHLCL(r1) : 0; >+ >+ /* >+ * Turn execflag on indicating this instruction is EXecuted. >+ * psw.ip is backed up by the EXecuted instruction length to >+ * be incremented back by the instruction decoder. >+ */ >+ regs->execflag = 1; >+ regs->exrl = 0; >+ regs->ip -= ILC(regs->exinst[0]); >+ >+ EXECUTE_INSTRUCTION (regs->exinst, regs); >+ >+ /* Leave execflag on if pending PER so ILC will reflect EX */ >+ if (!OPEN_IC_PER(regs)) >+ regs->execflag = 0; >+} >+ >+ >+#if defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY) >+/*-------------------------------------------------------------------*/ >+/* C6x0 EXRL - Execute Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(execute_relative_long) >+{ >+int r1; /* Register number */ >+BYTE *ip; /* -> executed instruction */ >+ >+ RIL_A(inst, regs, r1, regs->ET); >+ >+#if defined(_FEATURE_SIE) >+ /* Ensure that the instruction field is zero, such that >+ zeros are stored in the interception parm field, if >+ the interrupt is intercepted */ >+ memset(regs->exinst, 0, 8); >+#endif /*defined(_FEATURE_SIE)*/ >+ >+ /* Fetch target instruction from operand address */ >+ ip = INSTRUCTION_FETCH(regs, 1); >+ if (ip != regs->exinst) >+ memcpy (regs->exinst, ip, 8); >+ >+#if 1 >+ /* Display target instruction if stepping or tracing */ >+ if (CPU_STEPPING_OR_TRACING(regs, 6)) >+ { >+ int n, ilc; >+ char buf[256]; >+ #if defined(FEATURE_ESAME) >+ n = sprintf (buf, "EXRL target ADDR="F_VADR" ", regs->ET); >+ #else >+ n = sprintf (buf, "EXRL ADDR="F_VADR" ", regs->ET); >+ #endif >+ ilc = ILC(ip[0]); >+ n += sprintf (buf+n, " INST=%2.2X%2.2X", ip[0], ip[1]); >+ if (ilc > 2) n += sprintf (buf+n, "%2.2X%2.2X", ip[2], ip[3]); >+ if (ilc > 4) n += sprintf (buf+n, "%2.2X%2.2X", ip[4], ip[5]); >+ logmsg ("%s %s", buf,(ilc<4) ? " " : (ilc<6) ? " " : ""); >+ DISASM_INSTRUCTION(ip); >+ logmsg ("\n"); >+ } >+#endif >+ >+ /* Program check if recursive execute */ >+ if ( regs->exinst[0] == 0x44 || >+ (regs->exinst[0] == 0xc6 && !(regs->exinst[1] & 0x0f)) ) > regs->program_interrupt (regs, PGM_EXECUTE_EXCEPTION); > > /* Or 2nd byte of instruction with low-order byte of R1 */ >@@ -3074,12 +3212,16 @@ BYTE *ip; > * be incremented back by the instruction decoder. > */ > regs->execflag = 1; >+ regs->exrl = 1; > regs->ip -= ILC(regs->exinst[0]); > > EXECUTE_INSTRUCTION (regs->exinst, regs); > >- regs->execflag = 0; >+ /* Leave execflag on if pending PER so ILC will reflect EXRL */ >+ if (!OPEN_IC_PER(regs)) >+ regs->execflag = 0; > } >+#endif /* defined(FEATURE_EXECUTE_EXTENSION_FACILITY) */ > > > #if defined(FEATURE_ACCESS_REGISTERS) >@@ -3274,16 +3416,16 @@ U32 *p1, *p2 = NULL; > m = n; > > /* Copy from operand beginning */ >- for (i = 0; i < m; i++) >+ for (i = 0; i < m; i++, p1++) > { >- regs->AR((r1 + i) & 0xF) = fetch_fw (p1++); >+ regs->AR((r1 + i) & 0xF) = fetch_fw (p1); > SET_AEA_AR (regs, (r1 + i) & 0xF); > } > > /* Copy from next page */ >- for ( ; i < n; i++) >+ for ( ; i < n; i++, p2++) > { >- regs->AR((r1 + i) & 0xF) = fetch_fw (p2++); >+ regs->AR((r1 + i) & 0xF) = fetch_fw (p2); > SET_AEA_AR (regs, (r1 + i) & 0xF); > } > >@@ -3441,8 +3583,8 @@ U32 *p1, *p2; > { > /* Boundary not crossed */ > n >>= 2; >- for (i = 0; i < n; i++) >- regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1++); >+ for (i = 0; i < n; i++, p1++) >+ regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1); > } > else > { >@@ -3455,11 +3597,11 @@ U32 *p1, *p2; > { > /* Addresses are word aligned */ > m >>= 2; >- for (i = 0; i < m; i++) >- regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1++); >+ for (i = 0; i < m; i++, p1++) >+ regs->GR_L((r1 + i) & 0xF) = fetch_fw (p1); > n >>= 2; >- for ( ; i < n; i++) >- regs->GR_L((r1 + i) & 0xF) = fetch_fw (p2++); >+ for ( ; i < n; i++, p2++) >+ regs->GR_L((r1 + i) & 0xF) = fetch_fw (p2); > } > else > { >@@ -4010,6 +4152,7 @@ int i; > } > > >+#if defined(FEATURE_STRING_INSTRUCTION) > /*-------------------------------------------------------------------*/ > /* B255 MVST - Move String [RRE] */ > /*-------------------------------------------------------------------*/ >@@ -4076,7 +4219,8 @@ int cpu_length; > /* Set condition code 3 */ > regs->psw.cc = 3; > >-} >+} /* end DEF_INST(move_string) */ >+#endif /*defined(FEATURE_STRING_INSTRUCTION)*/ > > > /*-------------------------------------------------------------------*/ >diff -Naupr hercules-3.05/general2.c hercules-20070717/general2.c >--- hercules-3.05/general2.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/general2.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > /* ESA/390 CPU Emulator */ > /* Instructions N-Z */ > >-// $Id: general2.c,v 1.114 2007/06/23 00:04:10 ivan Exp $ >+// $Id: general2.c,v 1.126 2008/03/28 13:36:25 rbowler Exp $ > > /* (c) Copyright Peter Kuschnerus, 1999-2007 (UPT & CFC)*/ > >@@ -32,6 +32,42 @@ > /*-------------------------------------------------------------------*/ > > // $Log: general2.c,v $ >+// Revision 1.126 2008/03/28 13:36:25 rbowler >+// Fix incorrect registers when cc=1 for TRTE,TRTRE >+// >+// Revision 1.125 2008/03/27 16:45:17 rbowler >+// TRTE and TRTRE incorrectly return cc=3 >+// >+// Revision 1.124 2008/03/06 16:10:35 rbowler >+// Remove extraneous trailing blanks (cosmetic change only) >+// >+// Revision 1.123 2008/03/01 15:15:41 bernard >+// Removed the silly control-M characters >+// >+// Revision 1.122 2008/03/01 12:19:04 rbowler >+// Rename new features to include the word facility >+// >+// Revision 1.121 2008/03/01 07:51:00 bernard >+// TRTE, TRTRE: Checking for a_bit and ch>255 is double. Removed the a_bit. >+// >+// Revision 1.120 2008/02/29 16:25:13 bernard >+// Added Parsing Enhancement Facility >+// >+// Revision 1.119 2008/02/15 21:21:18 ptl00 >+// Fix STCKE so that byte 0 is cleared >+// >+// Revision 1.118 2008/01/24 00:59:03 gsmith >+// Fix and optimize TR instruction >+// >+// Revision 1.117 2007/12/30 17:48:21 bernard >+// Anoter UTF xlate error >+// >+// Revision 1.116 2007/12/30 09:09:51 bernard >+// Some errors in UTF translation >+// >+// Revision 1.115 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// > // Revision 1.114 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -520,6 +556,7 @@ VADR effective_addr2, > #endif /*defined(FEATURE_PERFORM_LOCKED_OPERATION)*/ > > >+#if defined(FEATURE_STRING_INSTRUCTION) > /*-------------------------------------------------------------------*/ > /* B25E SRST - Search String [RRE] */ > /*-------------------------------------------------------------------*/ >@@ -579,7 +616,8 @@ BYTE termchar; > /* Return condition code 3 */ > regs->psw.cc = 3; > >-} >+} /* end DEF_INST(search_string) */ >+#endif /*defined(FEATURE_STRING_INSTRUCTION)*/ > > > #if defined(FEATURE_ACCESS_REGISTERS) >@@ -835,7 +873,7 @@ U64 dreg; > > > /*-------------------------------------------------------------------*/ >-/* 8A SRA - Shift Right single [RS] */ >+/* 8A SRA - Shift Right Single [RS] */ > /*-------------------------------------------------------------------*/ > DEF_INST(shift_right_single) > { >@@ -1089,7 +1127,7 @@ U64 dreg; > PERFORM_SERIALIZATION (regs); > > /* Retrieve the TOD epoch, clock bits 0-51, and 4 zeroes */ >- dreg = tod_clock(regs); >+ dreg = 0x00ffffffffffffffULL & tod_clock(regs); > > /* Check that all 16 bytes of the operand are accessible */ > ARCH_DEP(validate_operand) (effective_addr2, b2, 15, ACCTYPE_WRITE, regs); >@@ -1109,7 +1147,7 @@ U64 dreg; > effective_addr2 &= ADDRESS_MAXWRAP(regs); > > /* Store nonzero value in pos 72 to 111 */ >- dreg = 0x0000000100000000ULL | (regs->cpuad << 16) | regs->todpr; >+ dreg = 0x0000000001000000ULL | (regs->cpuad << 16) | regs->todpr; > > ARCH_DEP(vstore8) ( dreg, effective_addr2, b2, regs ); > >@@ -1555,60 +1593,74 @@ U16 h2; > /*-------------------------------------------------------------------*/ > DEF_INST(translate) > { >-int l; /* Lenght byte */ >+int len, len2 = -1; /* Lengths */ > int b1, b2; /* Values of base field */ >-VADR effective_addr1, >- effective_addr2; /* Effective address */ >-U32 n; /* 32-bit operand values */ >-BYTE sbyte; /* Byte work areas */ >-int d; /* Integer work areas */ >-int h; /* Integer work areas */ >-int i; /* Integer work areas */ >-BYTE cwork[256]; /* Character work areas */ >- >- SS_L(inst, regs, l, b1, effective_addr1, >- b2, effective_addr2); >+int i, b, n; /* Work variables */ >+VADR addr1, addr2; /* Effective addresses */ >+BYTE *dest, *dest2 = NULL, *tab, *tab2; /* Mainstor pointers */ > >- /* If operand 1 crosses a page, make sure both pages are accessable */ >- if((effective_addr1 & PAGEFRAME_PAGEMASK) != >- ((effective_addr1 + l) & PAGEFRAME_PAGEMASK)) >- ARCH_DEP(validate_operand) (effective_addr1, b1, l, ACCTYPE_WRITE_SKP, regs); >+ SS_L(inst, regs, len, b1, addr1, b2, addr2); > >- /* Fetch first operand into work area */ >- ARCH_DEP(vfetchc) ( cwork, l, effective_addr1, b1, regs ); >+ /* Get destination pointer */ >+ dest = MADDR (addr1, b1, regs, ACCTYPE_WRITE, regs->psw.pkey); > >- /* Determine the second operand range by scanning the >- first operand to find the bytes with the highest >- and lowest values */ >- for ( i = 0, d = 255, h = 0; i <= l; i++ ) >+ /* Get pointer to next page if destination crosses a boundary */ >+ if (CROSS2K (addr1, len)) > { >- if (cwork[i] < d) d = cwork[i]; >- if (cwork[i] > h) h = cwork[i]; >+ len2 = len; >+ len = 0x7FF - (addr1 & 0x7FF); >+ len2 -= (len + 1); >+ dest2 = MADDR ((addr1+len+1) & ADDRESS_MAXWRAP(regs), >+ b1, regs, ACCTYPE_WRITE, regs->psw.pkey); >+ } >+ >+ /* Fast path if table does not cross a boundary */ >+ if (NOCROSS2K (addr2, 255)) >+ { >+ tab = MADDR (addr2, b2, regs, ACCTYPE_READ, regs->psw.pkey); >+ /* Perform translate function */ >+ for (i = 0; i <= len; i++) >+ dest[i] = tab[dest[i]]; >+ for (i = 0; i <= len2; i++) >+ dest2[i] = tab[dest2[i]]; > } >- >- n = (effective_addr2 + d) & ADDRESS_MAXWRAP(regs); >- /* If operand 2 crosses a page, make sure both pages are accessable */ >- if((n & PAGEFRAME_PAGEMASK) != >- ((n + (h-d)) & PAGEFRAME_PAGEMASK)) >- ARCH_DEP(validate_operand) (n, b2, h-d, ACCTYPE_READ, regs); >- >- /* Process first operand from left to right, refetching >- second operand and storing the result byte by byte >- to ensure correct handling of overlapping operands */ >- for ( i = 0; i <= l; i++ ) >+ else > { >- /* Fetch byte from second operand */ >- n = (effective_addr2 + cwork[i]) & ADDRESS_MAXWRAP(regs); >- sbyte = ARCH_DEP(vfetchb) ( n, b2, regs ); >+ n = 0x800 - (addr2 & 0x7FF); >+ b = dest[0]; > >- /* Store result at first operand address */ >- ARCH_DEP(vstoreb) ( sbyte, effective_addr1, b1, regs ); >- >- /* Increment first operand address */ >- effective_addr1++; >- effective_addr1 &= ADDRESS_MAXWRAP(regs); >- >- } /* end for(i) */ >+ /* Referenced part of the table may or may not span boundary */ >+ if (b < n) >+ { >+ tab = MADDR (addr2, b2, regs, ACCTYPE_READ, regs->psw.pkey); >+ for (i = 1; i <= len && b < n; i++) >+ b = dest[i]; >+ for (i = 0; i <= len2 && b < n; i++) >+ b = dest2[i]; >+ tab2 = b < n >+ ? NULL >+ : MADDR ((addr2+n) & ADDRESS_MAXWRAP(regs), >+ b2, regs, ACCTYPE_READ, regs->psw.pkey); >+ } >+ else >+ { >+ tab2 = MADDR ((addr2+n) & ADDRESS_MAXWRAP(regs), >+ b2, regs, ACCTYPE_READ, regs->psw.pkey); >+ for (i = 1; i <= len && b >= n; i++) >+ b = dest[i]; >+ for (i = 0; i <= len2 && b >= n; i++) >+ b = dest2[i]; >+ tab = b >= n >+ ? NULL >+ : MADDR (addr2, b2, regs, ACCTYPE_READ, regs->psw.pkey); >+ } >+ >+ /* Perform translate function */ >+ for (i = 0; i <= len; i++) >+ dest[i] = dest[i] < n ? tab[dest[i]] : tab2[dest[i]-n]; >+ for (i = 0; i <= len2; i++) >+ dest2[i] = dest2[i] < n ? tab[dest2[i]] : tab2[dest2[i]-n]; >+ } /* Translate table spans a boundary */ > } > > >@@ -2078,7 +2130,7 @@ DEF_INST(convert_utf8_to_utf32) > /* 110fghij 10klmnop -> 00000000 00000000 00000fgh ijklmnop */ > utf32[1] = 0x00; > utf32[2] = (utf8[0] & 0x1c) >> 2; >- utf32[3] = (utf8[0] << 6) & (utf8[1] & 0x3f); >+ utf32[3] = (utf8[0] << 6) | (utf8[1] & 0x3f); > read = 2; > } > else if(utf8[0] >= 0xe0 && utf8[0] <= 0xef) >@@ -2127,8 +2179,8 @@ DEF_INST(convert_utf8_to_utf32) > /* xlate range e00000-efffff */ > /* 1110abcd 10efghij 10klmnop -> 00000000 00000000 abcdefgh ijklmnop */ > utf32[1] = 0x00; >- utf32[2] = (utf8[0] << 4) & ((utf8[1] & 0x3c) >> 2); >- utf32[3] = (utf8[1] << 6) & (utf8[2] & 0x3f); >+ utf32[2] = (utf8[0] << 4) | ((utf8[1] & 0x3c) >> 2); >+ utf32[3] = (utf8[1] << 6) | (utf8[2] & 0x3f); > read = 3; > } > else if(utf8[0] >= 0xf0 && utf8[0] <= 0xf7) >@@ -2188,9 +2240,9 @@ DEF_INST(convert_utf8_to_utf32) > > /* xlate range f0000000-f7000000 */ > /* 1110uvw 10xyefgh 10ijklmn 10opqrst -> 00000000 000uvwxy efghijkl mnopqrst */ >- utf32[1] = ((utf8[0] & 0x07) << 2) & ((utf8[1] & 0x30) >> 4); >- utf32[2] = (utf8[1] << 4) & ((utf8[2] & 0x3c) >> 2); >- utf32[3] = (utf8[2] << 6) & (utf8[3] & 0x3f); >+ utf32[1] = ((utf8[0] & 0x07) << 2) | ((utf8[1] & 0x30) >> 4); >+ utf32[2] = (utf8[1] << 4) | ((utf8[2] & 0x3c) >> 2); >+ utf32[3] = (utf8[2] << 6) | (utf8[3] & 0x3f); > read = 4; > } > else >@@ -2442,7 +2494,7 @@ DEF_INST(convert_utf32_to_utf8) > /* 00000000 000uvwxy efghijkl mnopqrst -> 11110uvw 10xyefgh 10ijklmn 10opqrst */ > utf8[0] = 0xf0 | (utf32[1] >> 2); > utf8[1] = 0x80 | ((utf32[1] & 0x03) << 4) | (utf32[2] >> 4); >- utf8[2] = 0x80 | ((utf32[2] & 0x0f) < 2) | (utf32[3] >> 6); >+ utf8[2] = 0x80 | ((utf32[2] & 0x0f) << 2) | (utf32[3] >> 6); > utf8[3] = 0x80 | (utf32[3] & 0x3f); > write = 4; > } >@@ -2539,7 +2591,7 @@ DEF_INST(convert_utf32_to_utf16) > zabcd = (utf32[1] - 1) & 0x0f; > utf16[0] = 0xd8 | (zabcd >> 2); > utf16[1] = (zabcd << 6) | (utf32[2] >> 2); >- utf16[2] = 0xd9 | (utf32[2] & 0x03); >+ utf16[2] = 0xdc | (utf32[2] & 0x03); > utf16[3] = utf32[3]; > write = 4; > } >@@ -2690,6 +2742,196 @@ DEF_INST(translate_and_test_reverse) > } > #endif /*defined(FEATURE_EXTENDED_TRANSLATION_FACILITY_3)*/ > >+#ifdef FEATURE_PARSING_ENHANCEMENT_FACILITY >+/*-------------------------------------------------------------------*/ >+/* B9BF TRTE - Translate and Test Extended [RRF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(translate_and_test_extended) >+{ >+ int a_bit; /* Argument-Character Control (A) */ >+ U32 arg_ch; /* Argument character */ >+ VADR buf_addr; /* first argument address */ >+ GREG buf_len; /* First argument length */ >+ int f_bit; /* Function-Code Control (F) */ >+ U32 fc; /* Function-Code */ >+ VADR fct_addr; /* Function-code table address */ >+ int l_bit; /* Argument-Character Limit (L) */ >+ int m3; >+ int processed; /* # bytes processed */ >+ int r1; >+ int r2; >+ >+ RRF_M(inst, regs, r1, r2, m3); >+ >+ a_bit = ((m3 & 0x08) ? 1 : 0); >+ f_bit = ((m3 & 0x04) ? 1 : 0); >+ l_bit = ((m3 & 0x02) ? 1 : 0); >+ >+ buf_addr = regs->GR(r1) & ADDRESS_MAXWRAP(regs); >+ buf_len = GR_A(r1 + 1, regs); >+ >+ fct_addr = regs->GR(1) & ADDRESS_MAXWRAP(regs); >+ >+ if(unlikely((a_bit && (buf_len % 1)) || r1 & 0x01)) >+ regs->program_interrupt(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ fc = 0; >+ processed = 0; >+ while(buf_len && !fc && processed < 16384) >+ { >+ if(a_bit) >+ { >+ arg_ch = ARCH_DEP(vfetch2)(buf_addr, r1, regs); >+ } >+ else >+ { >+ arg_ch = ARCH_DEP(vfetchb)(buf_addr, r1, regs); >+ } >+ >+ if(l_bit && arg_ch > 255) >+ fc = 0; >+ else >+ { >+ if(f_bit) >+ fc = ARCH_DEP(vfetch2)((fct_addr + (arg_ch * 2)) & ADDRESS_MAXWRAP(regs), 1, regs); >+ else >+ fc = ARCH_DEP(vfetchb)((fct_addr + arg_ch) & ADDRESS_MAXWRAP(regs), 1, regs); >+ } >+ >+ if(!fc) >+ { >+ if(a_bit) >+ { >+ buf_len -= 2; >+ processed += 2; >+ buf_addr = (buf_addr + 2) & ADDRESS_MAXWRAP(regs); >+ } >+ else >+ { >+ buf_len--; >+ processed++; >+ buf_addr = (buf_addr + 1) & ADDRESS_MAXWRAP(regs); >+ } >+ } >+ } >+ >+ /* Commit registers */ >+ SET_GR_A(r1, regs, buf_addr); >+ SET_GR_A(r1 + 1, regs, buf_len); >+ >+ /* Check if CPU determined number of bytes have been processed */ >+ if(buf_len && !fc) >+ { >+ regs->psw.cc = 3; >+ return; >+ } >+ >+ /* Set function code */ >+ if(likely(r2 != r1 && r2 != r1 + 1)) >+ SET_GR_A(r2, regs, fc); >+ >+ /* Set condition code */ >+ if(fc) >+ regs->psw.cc = 1; >+ else >+ regs->psw.cc = 0; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* B9BD TRTRE - Translate and Test Reverse Extended [RRF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(translate_and_test_reverse_extended) >+{ >+ int a_bit; /* Argument-Character Control (A) */ >+ U32 arg_ch; /* Argument character */ >+ VADR buf_addr; /* first argument address */ >+ GREG buf_len; /* First argument length */ >+ int f_bit; /* Function-Code Control (F) */ >+ U32 fc; /* Function-Code */ >+ VADR fct_addr; /* Function-code table address */ >+ int l_bit; /* Argument-Character Limit (L) */ >+ int m3; >+ int processed; /* # bytes processed */ >+ int r1; >+ int r2; >+ >+ RRF_M(inst, regs, r1, r2, m3); >+ >+ a_bit = ((m3 & 0x08) ? 1 : 0); >+ f_bit = ((m3 & 0x04) ? 1 : 0); >+ l_bit = ((m3 & 0x02) ? 1 : 0); >+ >+ buf_addr = regs->GR(r1) & ADDRESS_MAXWRAP(regs); >+ buf_len = GR_A(r1 + 1, regs); >+ >+ fct_addr = regs->GR(1) & ADDRESS_MAXWRAP(regs); >+ >+ if(unlikely((a_bit && (buf_len % 1)) || r1 & 0x01)) >+ regs->program_interrupt(regs, PGM_SPECIFICATION_EXCEPTION); >+ >+ fc = 0; >+ processed = 0; >+ while(buf_len && !fc && processed < 16384) >+ { >+ if(a_bit) >+ { >+ arg_ch = ARCH_DEP(vfetch2)(buf_addr, r1, regs); >+ } >+ else >+ { >+ arg_ch = ARCH_DEP(vfetchb)(buf_addr, r1, regs); >+ } >+ >+ if(l_bit && arg_ch > 255) >+ fc = 0; >+ else >+ { >+ if(f_bit) >+ fc = ARCH_DEP(vfetch2)((fct_addr + (arg_ch * 2)) & ADDRESS_MAXWRAP(regs), 1, regs); >+ else >+ fc = ARCH_DEP(vfetchb)((fct_addr + arg_ch) & ADDRESS_MAXWRAP(regs), 1, regs); >+ } >+ >+ if(!fc) >+ { >+ if(a_bit) >+ { >+ buf_len -= 2; >+ processed += 2; >+ buf_addr = (buf_addr - 2) & ADDRESS_MAXWRAP(regs); >+ } >+ else >+ { >+ buf_len--; >+ processed++; >+ buf_addr = (buf_addr - 1) & ADDRESS_MAXWRAP(regs); >+ } >+ } >+ } >+ >+ /* Commit registers */ >+ SET_GR_A(r1, regs, buf_addr); >+ SET_GR_A(r1 + 1, regs, buf_len); >+ >+ /* Check if CPU determined number of bytes have been processed */ >+ if(buf_len && !fc) >+ { >+ regs->psw.cc = 3; >+ return; >+ } >+ >+ /* Set function code */ >+ if(likely(r2 != r1 && r2 != r1 + 1)) >+ SET_GR_A(r2, regs, fc); >+ >+ /* Set condition code */ >+ if(fc) >+ regs->psw.cc = 1; >+ else >+ regs->psw.cc = 0; >+} >+#endif /* FEATURE_PARSING_ENHANCEMENT_FACILITY */ >+ > #if !defined(_GEN_ARCH) > > #if defined(_ARCHMODE2) >diff -Naupr hercules-3.05/general3.c hercules-20070717/general3.c >--- hercules-3.05/general3.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/general3.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,1947 @@ >+/* GENERAL3.C (c) Copyright Roger Bowler, 2008 */ >+/* Additional General Instructions */ >+ >+// $Id: general3.c,v 1.22 2008/05/12 16:08:29 rbowler Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This module implements additional general instructions introduced */ >+/* as later extensions to z/Architecture and described in the manual */ >+/* SA22-7832-06 z/Architecture Principles of Operation */ >+/*-------------------------------------------------------------------*/ >+ >+// $Log: general3.c,v $ >+// Revision 1.22 2008/05/12 16:08:29 rbowler >+// ECAG correction >+// >+// Revision 1.21 2008/03/30 00:07:58 rbowler >+// Incorrect bit selection again for RNSBG,RISBG,ROSBG,RXSBG >+// >+// Revision 1.20 2008/03/28 23:03:54 rbowler >+// Correct relative address calculation for RIL-format instructions >+// >+// Revision 1.19 2008/03/23 08:00:40 rbowler >+// Fix incorrect bit selection for RNSBG,RISBG,ROSBG,RXSBG >+// >+// Revision 1.18 2008/03/12 18:23:55 jj >+// Fix store operation of ASI, AGSI, ALSI and AGLSI >+// >+// Revision 1.17 2008/03/08 23:08:32 rbowler >+// Add STHRL,STRL,STGRL instructions >+// >+// Revision 1.16 2008/03/08 22:54:25 rbowler >+// Add LHRL,LGHRL,LLHRL,LLGHRL,LLGFRL,LRL,LGRL,LGFRL instructions >+// >+// Revision 1.15 2008/03/08 22:28:04 rbowler >+// Add CHRL,CGHRL,CLRL,CLGRL,CLGFRL,CLHRL,CLGHRL, >+// CRL,CGRL,CGFRL instructions >+// >+// Revision 1.14 2008/03/05 16:36:51 rbowler >+// Add RNSBG,RISBG,ROSBG,RXSBG instructions >+// >+// Revision 1.13 2008/03/05 12:04:23 rbowler >+// Add CRJ,CGRJ,CIJ,CGIJ,CLRJ,CLGRJ,CLIJ,CLGIJ instructions >+// >+// Revision 1.12 2008/03/04 17:09:14 rbowler >+// Add CRT,CGRT,CIT,CGIT,CLRT,CLGRT,CLFIT,CLGIT instructions >+// >+// Revision 1.11 2008/03/04 15:42:50 rbowler >+// Add CRB,CGRB,CIB,CGIB,CLRB,CLGRB,CLIB,CLGIB instructions >+// >+// Revision 1.10 2008/03/04 14:40:28 rbowler >+// Add CLFHSI,CLHHSI,CLGHSI instructions >+// >+// Revision 1.9 2008/03/04 14:23:00 rbowler >+// Add CHHSI,CGHSI,CHSI,CGH instructions >+// >+// Revision 1.8 2008/03/03 23:22:43 rbowler >+// Add LTGF instruction >+// >+// Revision 1.7 2008/03/03 22:43:43 rbowler >+// Add MVHI,MVHHI,MVGHI instructions >+// >+// Revision 1.6 2008/03/03 00:21:45 rbowler >+// Add ECAG,LAEY,PFD,PFDRL instructions >+// >+// Revision 1.5 2008/03/02 23:29:49 rbowler >+// Add MFY,MHY,MSFI,MSGFI instructions >+// >+// Revision 1.4 2008/03/01 23:07:06 rbowler >+// Add ALSI,ALGSI instructions >+// >+// Revision 1.3 2008/03/01 22:49:31 rbowler >+// ASI,AGSI treat I2 operand as 8-bit signed integer >+// >+// Revision 1.2 2008/03/01 22:41:51 rbowler >+// Add ASI,AGSI instructions >+// >+// Revision 1.1 2008/03/01 14:19:29 rbowler >+// Add new module general3.c for general-instructions-extension facility >+// >+ >+#include "hstdinc.h" >+ >+#if !defined(_HENGINE_DLL_) >+#define _HENGINE_DLL_ >+#endif >+ >+#if !defined(_GENERAL3_C_) >+#define _GENERAL3_C_ >+#endif >+ >+#include "hercules.h" >+#include "opcode.h" >+#include "inline.h" >+ >+ >+#if defined(FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY) >+ >+/*-------------------------------------------------------------------*/ >+/* EB6A ASI - Add Immediate Storage [SIY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(add_immediate_storage) >+{ >+BYTE i2; /* Immediate byte */ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U32 n; /* 32-bit operand value */ >+int cc; /* Condition Code */ >+ >+ SIY(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 32-bit operand from operand address */ >+ n = ARCH_DEP(vfetch4) ( effective_addr1, b1, regs ); >+ >+ /* Add signed operands and set condition code */ >+ cc = add_signed (&n, n, (S32)(S8)i2); >+ >+ /* Store 32-bit operand at operand address */ >+ ARCH_DEP(vstore4) ( n, effective_addr1, b1, regs ); >+ >+ /* Update Condition Code */ >+ regs->psw.cc = cc; >+ >+ /* Program check if fixed-point overflow */ >+ if ( regs->psw.cc == 3 && FOMASK(®s->psw) ) >+ regs->program_interrupt (regs, PGM_FIXED_POINT_OVERFLOW_EXCEPTION); >+ >+} /* end DEF_INST(add_immediate_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EB7A AGSI - Add Immediate Long Storage [SIY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(add_immediate_long_storage) >+{ >+BYTE i2; /* Immediate byte */ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U64 n; /* 64-bit operand value */ >+int cc; /* Condition Code */ >+ >+ SIY(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 64-bit operand from operand address */ >+ n = ARCH_DEP(vfetch8) ( effective_addr1, b1, regs ); >+ >+ /* Add signed operands and set condition code */ >+ cc = add_signed_long (&n, n, (S64)(S8)i2); >+ >+ /* Store 64-bit value at operand address */ >+ ARCH_DEP(vstore8) ( n, effective_addr1, b1, regs ); >+ >+ /* Update Condition Code */ >+ regs->psw.cc = cc; >+ >+ /* Program check if fixed-point overflow */ >+ if ( regs->psw.cc == 3 && FOMASK(®s->psw) ) >+ regs->program_interrupt (regs, PGM_FIXED_POINT_OVERFLOW_EXCEPTION); >+ >+} /* end DEF_INST(add_immediate_long_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EB6E ALSI - Add Logical with Signed Immediate [SIY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(add_logical_with_signed_immediate) >+{ >+BYTE i2; /* Immediate byte */ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U32 n; /* 32-bit operand value */ >+int cc; /* Condition Code */ >+ >+ SIY(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 32-bit operand from operand address */ >+ n = ARCH_DEP(vfetch4) ( effective_addr1, b1, regs ); >+ >+ /* Add operands and set condition code */ >+ cc = (S8)i2 < 0 ? >+ sub_logical (&n, n, (S32)(-(S8)i2)) : >+ add_logical (&n, n, (S32)(S8)i2); >+ >+ /* Store 32-bit operand at operand address */ >+ ARCH_DEP(vstore4) ( n, effective_addr1, b1, regs ); >+ >+ /* Update Condition Code */ >+ regs->psw.cc = cc; >+ >+} /* end DEF_INST(add_logical_with_signed_immediate) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EB7E ALGSI - Add Logical with Signed Immediate Long [SIY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(add_logical_with_signed_immediate_long) >+{ >+BYTE i2; /* Immediate byte */ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U64 n; /* 64-bit operand value */ >+int cc; /* Condition Code */ >+ >+ SIY(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 64-bit operand from operand address */ >+ n = ARCH_DEP(vfetch8) ( effective_addr1, b1, regs ); >+ >+ /* Add operands and set condition code */ >+ cc = (S8)i2 < 0 ? >+ sub_logical_long (&n, n, (S64)(-(S8)i2)) : >+ add_logical_long (&n, n, (S64)(S8)i2); >+ >+ /* Store 64-bit value at operand address */ >+ ARCH_DEP(vstore8) ( n, effective_addr1, b1, regs ); >+ >+ /* Update Condition Code */ >+ regs->psw.cc = cc; >+ >+} /* end DEF_INST(add_logical_with_signed_immediate_long) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* ECF6 CRB - Compare and Branch Register [RRS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_and_branch_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+ >+ RRS_B(inst, regs, r1, r2, m3, b4, effective_addr4); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S32)regs->GR_L(r1) < (S32)regs->GR_L(r2) ? 1 : >+ (S32)regs->GR_L(r1) > (S32)regs->GR_L(r2) ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_and_branch_register) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* ECE4 CGRB - Compare and Branch Long Register [RRS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_and_branch_long_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+ >+ RRS_B(inst, regs, r1, r2, m3, b4, effective_addr4); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S64)regs->GR_G(r1) < (S64)regs->GR_G(r2) ? 1 : >+ (S64)regs->GR_G(r1) > (S64)regs->GR_G(r2) ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_and_branch_long_register) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC76 CRJ - Compare and Branch Relative Register [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_and_branch_relative_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RRIM_B(inst, regs, r1, r2, i4, m3); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S32)regs->GR_L(r1) < (S32)regs->GR_L(r2) ? 1 : >+ (S32)regs->GR_L(r1) > (S32)regs->GR_L(r2) ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_and_branch_relative_register) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EC64 CGRJ - Compare and Branch Relative Long Register [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_and_branch_relative_long_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RRIM_B(inst, regs, r1, r2, i4, m3); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S64)regs->GR_G(r1) < (S64)regs->GR_G(r2) ? 1 : >+ (S64)regs->GR_G(r1) > (S64)regs->GR_G(r2) ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_and_branch_relative_long_register) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* B972 CRT - Compare and Trap Register [RRF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_and_trap_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+ >+ RRF_M(inst, regs, r1, r2, m3); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S32)regs->GR_L(r1) < (S32)regs->GR_L(r2) ? 1 : >+ (S32)regs->GR_L(r1) > (S32)regs->GR_L(r2) ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_and_trap_register) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* B960 CGRT - Compare and Trap Long Register [RRF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_and_trap_long_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+ >+ RRF_M(inst, regs, r1, r2, m3); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S64)regs->GR_G(r1) < (S64)regs->GR_G(r2) ? 1 : >+ (S64)regs->GR_G(r1) > (S64)regs->GR_G(r2) ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_and_trap_long_register) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E554 CHHSI - Compare Halfword Immediate Halfword Storage [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_halfword_immediate_halfword_storage) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+S16 i2; /* 16-bit immediate value */ >+S16 n; /* 16-bit storage value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 16-bit value from first operand address */ >+ n = (S16)ARCH_DEP(vfetch2) ( effective_addr1, b1, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = n < i2 ? 1 : n > i2 ? 2 : 0; >+ >+} /* end DEF_INST(compare_halfword_immediate_halfword_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E558 CGHSI - Compare Halfword Immediate Long Storage [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_halfword_immediate_long_storage) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+S16 i2; /* 16-bit immediate value */ >+S64 n; /* 64-bit storage value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 64-bit value from first operand address */ >+ n = (S64)ARCH_DEP(vfetch8) ( effective_addr1, b1, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = n < i2 ? 1 : n > i2 ? 2 : 0; >+ >+} /* end DEF_INST(compare_halfword_immediate_long_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E55C CHSI - Compare Halfword Immediate Storage [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_halfword_immediate_storage) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+S16 i2; /* 16-bit immediate value */ >+S32 n; /* 32-bit storage value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 32-bit value from first operand address */ >+ n = (S32)ARCH_DEP(vfetch4) ( effective_addr1, b1, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = n < i2 ? 1 : n > i2 ? 2 : 0; >+ >+} /* end DEF_INST(compare_halfword_immediate_storage) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* E334 CGH - Compare Halfword Long [RXY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_halfword_long) >+{ >+int r1; /* Values of R fields */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+S64 n; /* 64-bit operand value */ >+ >+ RXY(inst, regs, r1, b2, effective_addr2); >+ >+ /* Load rightmost 2 bytes of comparand from operand address */ >+ n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ (S64)regs->GR_G(r1) < n ? 1 : >+ (S64)regs->GR_G(r1) > n ? 2 : 0; >+ >+} /* end DEF_INST(compare_halfword_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C6x5 CHRL - Compare Halfword Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_halfword_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ (S32)regs->GR_L(r1) < (S16)n ? 1 : >+ (S32)regs->GR_L(r1) > (S16)n ? 2 : 0; >+ >+} /* end DEF_INST(compare_halfword_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C6x4 CGHRL - Compare Halfword Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_halfword_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ (S64)regs->GR_G(r1) < (S16)n ? 1 : >+ (S64)regs->GR_G(r1) > (S16)n ? 2 : 0; >+ >+} /* end DEF_INST(compare_halfword_relative_long_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* ECFE CIB - Compare Immediate and Branch [RIS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_immediate_and_branch) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+BYTE i2; /* Immediate value */ >+ >+ RIS_B(inst, regs, r1, i2, m3, b4, effective_addr4); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S32)regs->GR_L(r1) < (S32)(S8)i2 ? 1 : >+ (S32)regs->GR_L(r1) > (S32)(S8)i2 ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_immediate_and_branch) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* ECFC CGIB - Compare Immediate and Branch Long [RIS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_immediate_and_branch_long) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+BYTE i2; /* Immediate value */ >+ >+ RIS_B(inst, regs, r1, i2, m3, b4, effective_addr4); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S64)regs->GR_G(r1) < (S64)(S8)i2 ? 1 : >+ (S64)regs->GR_G(r1) > (S64)(S8)i2 ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_immediate_and_branch_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC7E CIJ - Compare Immediate and Branch Relative [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_immediate_and_branch_relative) >+{ >+int r1; /* Register numbers */ >+int m3; /* Mask bits */ >+BYTE i2; /* Immediate operand value */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RMII_B(inst, regs, r1, i2, m3, i4); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S32)regs->GR_L(r1) < (S32)(S8)i2 ? 1 : >+ (S32)regs->GR_L(r1) > (S32)(S8)i2 ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_immediate_and_branch_relative) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EC7C CGIJ - Compare Immediate and Branch Relative Long [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_immediate_and_branch_relative_long) >+{ >+int r1; /* Register numbers */ >+int m3; /* Mask bits */ >+BYTE i2; /* Immediate operand value */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RMII_B(inst, regs, r1, i2, m3, i4); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S64)regs->GR_G(r1) < (S64)(S8)i2 ? 1 : >+ (S64)regs->GR_G(r1) > (S64)(S8)i2 ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_immediate_and_branch_relative_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC72 CIT - Compare Immediate and Trap [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_immediate_and_trap) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+U16 i2; /* 16-bit immediate value */ >+ >+ RIE_RIM(inst, regs, r1, i2, m3); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S32)regs->GR_L(r1) < (S32)(S16)i2 ? 1 : >+ (S32)regs->GR_L(r1) > (S32)(S16)i2 ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_immediate_and_trap) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EC70 CGIT - Compare Immediate and Trap Long [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_immediate_and_trap_long) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+U16 i2; /* 16-bit immediate value */ >+ >+ RIE_RIM(inst, regs, r1, i2, m3); >+ >+ /* Compare signed operands and set comparison result */ >+ cc = (S64)regs->GR_G(r1) < (S64)(S16)i2 ? 1 : >+ (S64)regs->GR_G(r1) > (S64)(S16)i2 ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_immediate_and_trap_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* ECF7 CLRB - Compare Logical and Branch Register [RRS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_and_branch_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+ >+ RRS_B(inst, regs, r1, r2, m3, b4, effective_addr4); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_L(r1) < regs->GR_L(r2) ? 1 : >+ regs->GR_L(r1) > regs->GR_L(r2) ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_and_branch_register) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* ECE5 CLGRB - Compare Logical and Branch Long Register [RRS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_and_branch_long_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+ >+ RRS_B(inst, regs, r1, r2, m3, b4, effective_addr4); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_G(r1) < regs->GR_G(r2) ? 1 : >+ regs->GR_G(r1) > regs->GR_G(r2) ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_and_branch_long_register) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC77 CLRJ - Compare Logical and Branch Relative Register [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_and_branch_relative_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RRIM_B(inst, regs, r1, r2, i4, m3); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_L(r1) < regs->GR_L(r2) ? 1 : >+ regs->GR_L(r1) > regs->GR_L(r2) ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_and_branch_relative_register) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EC65 CLGRJ - Compare Logical and Branch Relative Long Reg [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_and_branch_relative_long_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RRIM_B(inst, regs, r1, r2, i4, m3); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_G(r1) < regs->GR_G(r2) ? 1 : >+ regs->GR_G(r1) > regs->GR_G(r2) ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_and_branch_relative_long_register) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* B973 CLRT - Compare Logical and Trap Register [RRF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_and_trap_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+ >+ RRF_M(inst, regs, r1, r2, m3); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_L(r1) < regs->GR_L(r2) ? 1 : >+ regs->GR_L(r1) > regs->GR_L(r2) ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_logical_and_trap_register) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* B961 CLGRT - Compare Logical and Trap Long Register [RRF] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_and_trap_long_register) >+{ >+int r1, r2; /* Register numbers */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+ >+ RRF_M(inst, regs, r1, r2, m3); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_G(r1) < regs->GR_G(r2) ? 1 : >+ regs->GR_G(r1) > regs->GR_G(r2) ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_logical_and_trap_long_register) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* ECFF CLIB - Compare Logical Immediate and Branch [RIS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_and_branch) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+BYTE i2; /* Immediate value */ >+ >+ RIS_B(inst, regs, r1, i2, m3, b4, effective_addr4); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_L(r1) < i2 ? 1 : >+ regs->GR_L(r1) > i2 ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_immediate_and_branch) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* ECFD CLGIB - Compare Logical Immediate and Branch Long [RIS] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_and_branch_long) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int b4; /* Base of effective addr */ >+VADR effective_addr4; /* Effective address */ >+int cc; /* Comparison result */ >+BYTE i2; /* Immediate value */ >+ >+ RIS_B(inst, regs, r1, i2, m3, b4, effective_addr4); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_G(r1) < i2 ? 1 : >+ regs->GR_G(r1) > i2 ? 2 : 0; >+ >+ /* Branch to operand address if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_BRANCH(regs, effective_addr4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_immediate_and_branch_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC7F CLIJ - Compare Logical Immediate and Branch Relative [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_and_branch_relative) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+BYTE i2; /* Immediate operand value */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RMII_B(inst, regs, r1, i2, m3, i4); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_L(r1) < i2 ? 1 : >+ regs->GR_L(r1) > i2 ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_immediate_and_branch_relative) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EC7D CLGIJ - Compare Logical Immed and Branch Relative Long [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_and_branch_relative_long) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+BYTE i2; /* Immediate operand value */ >+S16 i4; /* 16-bit immediate offset */ >+int cc; /* Comparison result */ >+ >+ RIE_RMII_B(inst, regs, r1, i2, m3, i4); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_G(r1) < i2 ? 1 : >+ regs->GR_G(r1) > i2 ? 2 : 0; >+ >+ /* Branch to immediate offset if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ SUCCESSFUL_RELATIVE_BRANCH(regs, 2*i4, 6); >+ else >+ INST_UPDATE_PSW(regs, 6, 0); >+ >+} /* end DEF_INST(compare_logical_immediate_and_branch_relative_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC73 CLFIT - Compare Logical Immediate and Trap Fullword [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_and_trap_fullword) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+U16 i2; /* 16-bit immediate value */ >+ >+ RIE_RIM(inst, regs, r1, i2, m3); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_L(r1) < i2 ? 1 : >+ regs->GR_L(r1) > i2 ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_logical_immediate_and_trap_fullword) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EC71 CLGIT - Compare Logical Immediate and Trap Long [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_and_trap_long) >+{ >+int r1; /* Register number */ >+int m3; /* Mask bits */ >+int cc; /* Comparison result */ >+U16 i2; /* 16-bit immediate value */ >+ >+ RIE_RIM(inst, regs, r1, i2, m3); >+ >+ /* Compare unsigned operands and set comparison result */ >+ cc = regs->GR_G(r1) < i2 ? 1 : >+ regs->GR_G(r1) > i2 ? 2 : 0; >+ >+ /* Raise data exception if m3 mask bit is set */ >+ if ((0x8 >> cc) & m3) >+ { >+ regs->dxc = DXC_COMPARE_AND_TRAP; >+ ARCH_DEP(program_interrupt) (regs, PGM_DATA_EXCEPTION); >+ } >+ >+} /* end DEF_INST(compare_logical_immediate_and_trap_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E55D CLFHSI - Compare Logical Immediate Fullword Storage [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_fullword_storage) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U16 i2; /* 16-bit immediate value */ >+U32 n; /* 32-bit storage value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 32-bit value from first operand address */ >+ n = ARCH_DEP(vfetch4) ( effective_addr1, b1, regs ); >+ >+ /* Compare unsigned operands and set condition code */ >+ regs->psw.cc = n < i2 ? 1 : n > i2 ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_immediate_fullword_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E555 CLHHSI - Compare Logical Immediate Halfword Storage [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_halfword_storage) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U16 i2; /* 16-bit immediate value */ >+U16 n; /* 16-bit storage value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 16-bit value from first operand address */ >+ n = ARCH_DEP(vfetch2) ( effective_addr1, b1, regs ); >+ >+ /* Compare unsigned operands and set condition code */ >+ regs->psw.cc = n < i2 ? 1 : n > i2 ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_immediate_halfword_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E559 CLGHSI - Compare Logical Immediate Long Storage [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_immediate_long_storage) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+U16 i2; /* 16-bit immediate value */ >+U64 n; /* 64-bit storage value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Load 64-bit value from first operand address */ >+ n = ARCH_DEP(vfetch8) ( effective_addr1, b1, regs ); >+ >+ /* Compare unsigned operands and set condition code */ >+ regs->psw.cc = n < i2 ? 1 : n > i2 ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_immediate_long_storage) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C6xF CLRL - Compare Logical Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ regs->GR_L(r1) < n ? 1 : >+ regs->GR_L(r1) > n ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C6xA CLGRL - Compare Logical Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U64 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on doubleword boundary */ >+ DW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch8) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ regs->GR_G(r1) < n ? 1 : >+ regs->GR_G(r1) > n ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_relative_long_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C6xE CLGFRL - Compare Logical Relative Long Long Fullword [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_relative_long_long_fullword) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ regs->GR_G(r1) < n ? 1 : >+ regs->GR_G(r1) > n ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_relative_long_long_fullword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C6x7 CLHRL - Compare Logical Halfword Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_relative_long_halfword) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ regs->GR_L(r1) < n ? 1 : >+ regs->GR_L(r1) > n ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_relative_long_halfword) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C6x6 CLGHRL - Compare Logical Halfword Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_logical_relative_long_long_halfword) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ regs->GR_G(r1) < n ? 1 : >+ regs->GR_G(r1) > n ? 2 : 0; >+ >+} /* end DEF_INST(compare_logical_relative_long_long_halfword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C6xD CRL - Compare Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ (S32)regs->GR_L(r1) < (S32)n ? 1 : >+ (S32)regs->GR_L(r1) > (S32)n ? 2 : 0; >+ >+} /* end DEF_INST(compare_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C6x8 CGRL - Compare Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U64 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on doubleword boundary */ >+ DW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch8) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ (S64)regs->GR_G(r1) < (S64)n ? 1 : >+ (S64)regs->GR_G(r1) > (S64)n ? 2 : 0; >+ >+} /* end DEF_INST(compare_relative_long_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C6xC CGFRL - Compare Relative Long Long Fullword [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(compare_relative_long_long_fullword) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Compare signed operands and set condition code */ >+ regs->psw.cc = >+ (S64)regs->GR_G(r1) < (S32)n ? 1 : >+ (S64)regs->GR_G(r1) > (S32)n ? 2 : 0; >+ >+} /* end DEF_INST(compare_relative_long_long_fullword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* EB4C ECAG - Extract Cache Attribute [RSY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(extract_cache_attribute) >+{ >+int r1, r3; /* Register numbers */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+int ai, li, ti; /* Operand address subfields */ >+ >+ RSY(inst, regs, r1, r3, b2, effective_addr2); >+ >+ /* Address bit 63 contains the Type Indication (TI) */ >+ ti = effective_addr2 & 0x1; >+ >+ /* Address bits 60-62 contain the Level Indication (LI) */ >+ li = (effective_addr2 >> 1) & 0x7; >+ >+ /* Address bits 56-59 contain the Attribute Indication (AI) */ >+ ai = (effective_addr2 >> 4) & 0xF; >+ >+ //logmsg ("ECAG ai=%d li=%d ti=%d\n", ai, li, ti); >+ >+ /* If reserved bits 40-55 are not zero then set r1 to all ones */ >+ if ((effective_addr2 & 0xFFFF00) != 0) >+ { >+ regs->GR(r1) = 0xFFFFFFFFFFFFFFFFULL; >+ return; >+ } >+ >+ /* If AI=0 (topology summary) is requested, set register r1 to >+ indicate that cache level 0 is private to this CPU and that >+ cache levels 1-7 are not implemented */ >+ if (ai == 0) >+ { >+ regs->GR_H(r1) = 0x04000000; >+ regs->GR_L(r1) = 0x00000000; >+ return; >+ } >+ >+ /* If cache level is not 0, set register r1 to all ones which >+ indicates that the requested cache level is not implemented */ >+ if (li > 0) >+ { >+ regs->GR(r1) = 0xFFFFFFFFFFFFFFFFULL; >+ return; >+ } >+ >+ /* If AI=1 (cache line size) is requested for cache level 0 >+ set register r1 to indicate a fictitious cache line size */ >+ if (ai == 1 && li == 0) >+ { >+ regs->GR(r1) = 256; >+ return; >+ } >+ >+ /* If AI=2 (total cache size) is requested for cache level 0 >+ set register r1 to indicate a fictitious total cache size */ >+ if (ai == 2 && li == 0) >+ { >+ regs->GR(r1) = 256 * 2048; >+ return; >+ } >+ >+ /* Set register r1 to all ones indicating that the requested >+ attribute indication is reserved */ >+ regs->GR(r1) = 0xFFFFFFFFFFFFFFFFULL; >+ >+} /* end DEF_INST(extract_cache_attribute) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+#if defined(FEATURE_ACCESS_REGISTERS) >+/*-------------------------------------------------------------------*/ >+/* E375 LAEY - Load Address Extended (Long Displacement) [RXY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_address_extended_y) >+{ >+int r1; /* Value of R field */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+ >+ RXY0(inst, regs, r1, b2, effective_addr2); >+ >+ /* Load operand address into register */ >+ SET_GR_A(r1, regs,effective_addr2); >+ >+ /* Load corresponding value into access register */ >+ if ( PRIMARY_SPACE_MODE(&(regs->psw)) ) >+ regs->AR(r1) = ALET_PRIMARY; >+ else if ( SECONDARY_SPACE_MODE(&(regs->psw)) ) >+ regs->AR(r1) = ALET_SECONDARY; >+ else if ( HOME_SPACE_MODE(&(regs->psw)) ) >+ regs->AR(r1) = ALET_HOME; >+ else /* ACCESS_REGISTER_MODE(&(regs->psw)) */ >+ regs->AR(r1) = (b2 == 0) ? 0 : regs->AR(b2); >+ SET_AEA_AR(regs, r1); >+ >+} /* end DEF_INST(load_address_extended_y) */ >+#endif /*defined(FEATURE_ACCESS_REGISTERS)*/ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* E332 LTGF - Load and Test Long Fullword [RXY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_and_test_long_fullword) >+{ >+int r1; /* Value of R field */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+U32 n; /* Second operand value */ >+ >+ RXY(inst, regs, r1, b2, effective_addr2); >+ >+ /* Load R1 register from sign-extended second operand */ >+ n = ARCH_DEP(vfetch4) ( effective_addr2, b2, regs ); >+ regs->GR_G(r1) = (S64)(S32)n; >+ >+ /* Set condition code according to value loaded */ >+ regs->psw.cc = (S64)regs->GR_G(r1) < 0 ? 1 : >+ (S64)regs->GR_G(r1) > 0 ? 2 : 0; >+ >+} /* end DEF_INST(load_and_test_long_fullword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C4x5 LHRL - Load Halfword Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_halfword_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Sign-extend operand value and load into R1 register */ >+ regs->GR_L(r1) = (S32)(S16)n; >+ >+} /* end DEF_INST(load_halfword_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C4x4 LGHRL - Load Halfword Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_halfword_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Sign-extend operand value and load into R1 register */ >+ regs->GR_G(r1) = (S64)(S16)n; >+ >+} /* end DEF_INST(load_halfword_relative_long_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C4x2 LLHRL - Load Logical Halfword Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_logical_halfword_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Zero-extend operand value and load into R1 register */ >+ regs->GR_L(r1) = n; >+ >+} /* end DEF_INST(load_logical_halfword_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C4x6 LLGHRL - Load Logical Halfword Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_logical_halfword_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U16 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch2) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Zero-extend operand value and load into R1 register */ >+ regs->GR_G(r1) = n; >+ >+} /* end DEF_INST(load_logical_halfword_relative_long_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C4xE LLGFRL - Load Logical Relative Long Long Fullword [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_logical_relative_long_long_fullword) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Zero-extend operand value and load into R1 register */ >+ regs->GR_G(r1) = n; >+ >+} /* end DEF_INST(load_logical_relative_long_long_fullword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C4xD LRL - Load Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Load operand value into R1 register */ >+ regs->GR_L(r1) = n; >+ >+} /* end DEF_INST(load_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C4x8 LGRL - Load Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U64 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on doubleword boundary */ >+ DW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch8) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Load operand value into R1 register */ >+ regs->GR_G(r1) = n; >+ >+} /* end DEF_INST(load_relative_long_long) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C4xC LGFRL - Load Relative Long Long Fullword [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(load_relative_long_long_fullword) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+U32 n; /* Relative operand value */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Load relative operand from instruction address space */ >+ n = ARCH_DEP(vfetch4) ( addr2, USE_INST_SPACE, regs ); >+ >+ /* Sign-extend operand value and load into R1 register */ >+ regs->GR_G(r1) = (S64)(S32)n; >+ >+} /* end DEF_INST(load_relative_long_long_fullword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E54C MVHI - Move Fullword from Halfword Immediate [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(move_fullword_from_halfword_immediate) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+S16 i2; /* 16-bit immediate value */ >+S32 n; /* Sign-extended value of i2 */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Sign-extend 16-bit immediate value to 32 bits */ >+ n = i2; >+ >+ /* Store 4-byte value at operand address */ >+ ARCH_DEP(vstore4) ( n, effective_addr1, b1, regs ); >+ >+} /* end DEF_INST(move_fullword_from_halfword_immediate) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E544 MVHHI - Move Halfword from Halfword Immediate [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(move_halfword_from_halfword_immediate) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+S16 i2; /* 16-bit immediate value */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Store 16-bit immediate value at operand address */ >+ ARCH_DEP(vstore2) ( i2, effective_addr1, b1, regs ); >+ >+} /* end DEF_INST(move_halfword_from_halfword_immediate) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E548 MVGHI - Move Long from Halfword Immediate [SIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(move_long_from_halfword_immediate) >+{ >+int b1; /* Base of effective addr */ >+VADR effective_addr1; /* Effective address */ >+S16 i2; /* 16-bit immediate value */ >+S64 n; /* Sign-extended value of i2 */ >+ >+ SIL(inst, regs, i2, b1, effective_addr1); >+ >+ /* Sign-extend 16-bit immediate value to 64 bits */ >+ n = i2; >+ >+ /* Store 8-byte value at operand address */ >+ ARCH_DEP(vstore8) ( n, effective_addr1, b1, regs ); >+ >+} /* end DEF_INST(move_long_from_halfword_immediate) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E37C MHY - Multiply Halfword (Long Displacement) [RXY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(multiply_halfword_y) >+{ >+int r1; /* Value of R field */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+S32 n; /* 32-bit operand values */ >+ >+ RXY(inst, regs, r1, b2, effective_addr2); >+ >+ /* Load 2 bytes from operand address */ >+ n = (S16)ARCH_DEP(vfetch2) ( effective_addr2, b2, regs ); >+ >+ /* Multiply R1 register by n, ignore leftmost 32 bits of >+ result, and place rightmost 32 bits in R1 register */ >+ mul_signed ((U32 *)&n, &(regs->GR_L(r1)), regs->GR_L(r1), n); >+ >+} /* end DEF_INST(multiply_halfword_y) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C2x1 MSFI - Multiply Single Immediate Fullword [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(multiply_single_immediate_fullword) >+{ >+int r1; /* Register number */ >+int opcd; /* Opcode */ >+U32 i2; /* 32-bit operand value */ >+ >+ RIL(inst, regs, r1, opcd, i2); >+ >+ /* Multiply signed operands ignoring overflow */ >+ regs->GR_L(r1) = (S32)regs->GR_L(r1) * (S32)i2; >+ >+} /* end DEF_INST(multiply_single_immediate_fullword) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* C2x0 MSGFI - Multiply Single Immediate Long Fullword [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(multiply_single_immediate_long_fullword) >+{ >+int r1; /* Register number */ >+int opcd; /* Opcode */ >+U32 i2; /* 32-bit operand value */ >+ >+ RIL(inst, regs, r1, opcd, i2); >+ >+ /* Multiply signed operands ignoring overflow */ >+ regs->GR_G(r1) = (S64)regs->GR_G(r1) * (S32)i2; >+ >+} /* end DEF_INST(multiply_single_immediate_long_fullword) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E35C MFY - Multiply (Long Displacement) [RXY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(multiply_y) >+{ >+int r1; /* Value of R field */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+U32 n; /* 32-bit operand values */ >+ >+ RXY(inst, regs, r1, b2, effective_addr2); >+ >+ ODD_CHECK(r1, regs); >+ >+ /* Load second operand from operand address */ >+ n = ARCH_DEP(vfetch4) ( effective_addr2, b2, regs ); >+ >+ /* Multiply r1+1 by n and place result in r1 and r1+1 */ >+ mul_signed (&(regs->GR_L(r1)), &(regs->GR_L(r1+1)), >+ regs->GR_L(r1+1), >+ n); >+ >+} /* end DEF_INST(multiply_y) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* E336 PFD - Prefetch Data [RXY] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(prefetch_data) >+{ >+int m1; /* Mask value */ >+int b2; /* Base of effective addr */ >+VADR effective_addr2; /* Effective address */ >+ >+ RXY(inst, regs, m1, b2, effective_addr2); >+ >+ /* The Prefetch Data instruction acts as a no-op */ >+ >+} /* end DEF_INST(prefetch_data) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C6x2 PFDRL - Prefetch Data Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(prefetch_data_relative_long) >+{ >+int m1; /* Mask value */ >+VADR addr2; /* Relative operand address */ >+ >+ RIL_A(inst, regs, m1, addr2); >+ >+ /* The Prefetch Data instruction acts as a no-op */ >+ >+} /* end DEF_INST(prefetch_data_relative_long) */ >+ >+ >+#if defined(FEATURE_ESAME) >+/*-------------------------------------------------------------------*/ >+/* Rotate Then Perform Operation On Selected Bits Long Register */ >+/* Subroutine is called by RNSBG,RISBG,ROSBG,RXSBG instructions */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(rotate_then_xxx_selected_bits_long_reg) >+{ >+int r1, r2; /* Register numbers */ >+int start, end; /* Start and end bit number */ >+U64 mask, rota, resu; /* 64-bit work areas */ >+int n; /* Number of bits to shift */ >+int t_bit = 0; /* Test-results indicator */ >+int z_bit = 0; /* Zero-remaining indicator */ >+int i; /* Loop counter */ >+BYTE i3, i4, i5; /* Immediate values */ >+BYTE opcode; /* 2nd byte of opcode */ >+ >+ RIE_RRIII(inst, regs, r1, r2, i3, i4, i5); >+ >+ /* Extract second byte of instruction opcode */ >+ opcode = inst[5]; >+ >+ /* Extract parameters from immediate fields */ >+ start = i3 & 0x3F; >+ end = i4 & 0x3F; >+ n = i5 & 0x3F; >+ if (opcode == 0x55) >+ z_bit = i4 >> 7; >+ else >+ t_bit = i3 >> 7; >+ >+ /* Copy value from R2 register and rotate left n bits */ >+ rota = (regs->GR_G(r2) << n) >+ | ((n == 0) ? 0 : (regs->GR_G(r2) >> (64 - n))); >+ >+ /* Construct mask for selected bits */ >+ for (i=0, mask=0; i < 64; i++) >+ { >+ mask <<= 1; >+ if (start <= end) { >+ if (i >= start && i <= end) mask |= 1; >+ } else { >+ if (i <= end || i >= start) mask |= 1; >+ } >+ } /* end for(i) */ >+ >+ /* Isolate selected bits of rotated second operand */ >+ rota &= mask; >+ >+ /* Isolate selected bits of first operand */ >+ resu = regs->GR_G(r1) & mask; >+ >+ /* Perform operation on selected bits */ >+ switch (opcode) { >+ case 0x54: /* And */ >+ resu &= rota; >+ break; >+ case 0x55: /* Insert */ >+ resu = rota; >+ break; >+ case 0x56: /* Or */ >+ resu |= rota; >+ break; >+ case 0x57: /* Exclusive Or */ >+ resu ^= rota; >+ break; >+ } /* end switch(opcode) */ >+ >+ /* Except RISBG set condition code according to result bits */ >+ if (opcode != 0x55) >+ regs->psw.cc = (resu == 0) ? 0 : 1; >+ >+ /* Insert result bits into R1 register */ >+ if (t_bit == 0) >+ { >+ if (z_bit == 0) >+ regs->GR_G(r1) = (regs->GR_G(r1) & ~mask) | resu; >+ else >+ regs->GR_G(r1) = resu; >+ } /* end if(t_bit==0) */ >+ >+ /* For RISBG set condition code according to signed result */ >+ if (opcode == 0x55) >+ regs->psw.cc = >+ (S64)regs->GR_G(r1) < 0 ? 1 : >+ (S64)regs->GR_G(r1) > 0 ? 2 : 0; >+ >+} /* end DEF_INST(rotate_then_xxx_selected_bits_long_reg) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC54 RNSBG - Rotate Then And Selected Bits [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(rotate_then_and_selected_bits_long_reg) >+{ >+ ARCH_DEP(rotate_then_xxx_selected_bits_long_reg) (inst, regs); >+} /* end DEF_INST(rotate_then_and_selected_bits_long_reg) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC55 RISBG - Rotate Then Insert Selected Bits [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(rotate_then_insert_selected_bits_long_reg) >+{ >+ ARCH_DEP(rotate_then_xxx_selected_bits_long_reg) (inst, regs); >+} /* end DEF_INST(rotate_then_insert_selected_bits_long_reg) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC56 ROSBG - Rotate Then Or Selected Bits [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(rotate_then_or_selected_bits_long_reg) >+{ >+ ARCH_DEP(rotate_then_xxx_selected_bits_long_reg) (inst, regs); >+} /* end DEF_INST(rotate_then_or_selected_bits_long_reg) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* EC57 RXSBG - Rotate Then Exclusive Or Selected Bits [RIE] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(rotate_then_exclusive_or_selected_bits_long_reg) >+{ >+ ARCH_DEP(rotate_then_xxx_selected_bits_long_reg) (inst, regs); >+} /* end DEF_INST(rotate_then_exclusive_or_selected_bits_long_reg) */ >+#endif /*defined(FEATURE_ESAME)*/ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C4x7 STHRL - Store Halfword Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(store_halfword_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Store low 2 bytes of R1 register in instruction address space */ >+ ARCH_DEP(vstore2) ( regs->GR_LHL(r1), addr2, USE_INST_SPACE, regs ); >+ >+} /* end DEF_INST(store_halfword_relative_long) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C4xF STRL - Store Relative Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(store_relative_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on fullword boundary */ >+ FW_CHECK(addr2, regs); >+ >+ /* Store low 4 bytes of R1 register in instruction address space */ >+ ARCH_DEP(vstore4) ( regs->GR_L(r1), addr2, USE_INST_SPACE, regs ); >+ >+} /* end DEF_INST(store_relative_long) */ >+ >+ >+/*-------------------------------------------------------------------*/ >+/* C4xB STGRL - Store Relative Long Long [RIL] */ >+/*-------------------------------------------------------------------*/ >+DEF_INST(store_relative_long_long) >+{ >+int r1; /* Register number */ >+VADR addr2; /* Relative operand address */ >+ >+ RIL_A(inst, regs, r1, addr2); >+ >+ /* Program check if operand not on doubleword boundary */ >+ DW_CHECK(addr2, regs); >+ >+ /* Store R1 register in instruction address space */ >+ ARCH_DEP(vstore8) ( regs->GR_G(r1), addr2, USE_INST_SPACE, regs ); >+ >+} /* end DEF_INST(store_relative_long_long) */ >+ >+ >+#endif /*defined(FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY)*/ >+ >+ >+#if !defined(_GEN_ARCH) >+ >+#if defined(_ARCHMODE2) >+ #define _GEN_ARCH _ARCHMODE2 >+ #include "general3.c" >+#endif >+ >+#if defined(_ARCHMODE3) >+ #undef _GEN_ARCH >+ #define _GEN_ARCH _ARCHMODE3 >+ #include "general3.c" >+#endif >+ >+#endif /*!defined(_GEN_ARCH)*/ >diff -Naupr hercules-3.05/hchan.c hercules-20070717/hchan.c >--- hercules-3.05/hchan.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/hchan.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > /* Based on work (c)Roger Bowler, Jan Jaeger & Others 1999-2006 */ > /* Generic channel device handler */ > >-// $Id: hchan.c,v 1.10 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hchan.c,v 1.11 2007/11/21 22:54:14 fish Exp $ > > /* This code is covered by the QPL Licence */ > /**CAUTION*CAUTION*CAUTION*CAUTION*CAUTION*CAUTION*CAUTION*CAUTION****/ >@@ -17,6 +17,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: hchan.c,v $ >+// Revision 1.11 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.10 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -118,9 +121,9 @@ static int hchan_init_int(DEVBLK *d > static void hchan_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- UNREFERENCED(dev); >- *class="CHAN"; >- snprintf(buffer,buflen,"** CONTROL UNIT OFFLINE **"); >+ BEGIN_DEVICE_CLASS_QUERY( "CHAN", dev, class, buflen, buffer ); >+ >+ snprintf(buffer,buflen,"** CONTROL UNIT OFFLINE **"); > } > > /*-------------------------------------------------------------------*/ >diff -Naupr hercules-3.05/hconsole.c hercules-20070717/hconsole.c >--- hercules-3.05/hconsole.c 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/hconsole.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,22 @@ > // hconsole.c Hercules hardware console (panel) support functions > ////////////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > ////////////////////////////////////////////////////////////////////////////////////////// > >-// $Id: hconsole.c,v 1.10 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hconsole.c,v 1.13 2008/07/10 18:31:33 fish Exp $ > // > // $Log: hconsole.c,v $ >+// Revision 1.13 2008/07/10 18:31:33 fish >+// 1) Add support for Ctrl+Home and Ctrl+End extended control sequences, and >+// 2) ignore other unsupported extended control sequences. >+// >+// Revision 1.12 2008/07/08 13:48:40 fish >+// Ctrl + uparrow / downarrow ==> scroll up/down one line >+// >+// Revision 1.11 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.10 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -312,12 +322,23 @@ void translate_keystroke( char kbbuf[], > case 0x50: strcpy( kbbuf, KBD_DOWN_ARROW ); break; > case 0x4D: strcpy( kbbuf, KBD_RIGHT_ARROW ); break; > case 0x4B: strcpy( kbbuf, KBD_LEFT_ARROW ); break; >+ case 0x77: strcpy( kbbuf, KBD_CTRL_HOME ); break; >+ case 0x75: strcpy( kbbuf, KBD_CTRL_END ); break; >+ case 0x8D: strcpy( kbbuf, KBD_CTRL_UP_ARROW ); break; >+ case 0x91: strcpy( kbbuf, KBD_CTRL_DOWN_ARROW ); break; > > default: > { >+#if 0 > kbbuf[0] = '\x1B'; > kbbuf[1] = ch2; > kbbuf[2] = 0; >+#else >+ /* EAT IT */ >+ kbbuf[0] = 0; >+ kbbuf[1] = 0; >+ kbbuf[2] = 0; >+#endif > break; > } > } >diff -Naupr hercules-3.05/hconsole.h hercules-20070717/hconsole.h >--- hercules-3.05/hconsole.h 2007-06-23 14:58:05.000000000 +0200 >+++ hercules-20070717/hconsole.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,22 @@ > // hconsole.h Hercules hardware console (panel) support functions > ////////////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > ////////////////////////////////////////////////////////////////////////////////////////// > >-// $Id: hconsole.h,v 1.8 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hconsole.h,v 1.11 2008/07/10 18:31:33 fish Exp $ > // > // $Log: hconsole.h,v $ >+// Revision 1.11 2008/07/10 18:31:33 fish >+// 1) Add support for Ctrl+Home and Ctrl+End extended control sequences, and >+// 2) ignore other unsupported extended control sequences. >+// >+// Revision 1.10 2008/07/08 13:48:40 fish >+// Ctrl + uparrow / downarrow ==> scroll up/down one line >+// >+// Revision 1.9 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.8 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -30,6 +40,10 @@ > #define KBD_DOWN_ARROW "\x1B[B" > #define KBD_RIGHT_ARROW "\x1B[C" > #define KBD_LEFT_ARROW "\x1B[D" >+#define KBD_CTRL_UP_ARROW "\x1B""D" >+#define KBD_CTRL_DOWN_ARROW "\x1B""M" >+#define KBD_CTRL_HOME "\x1B""w" >+#define KBD_CTRL_END "\x1B""u" > > // Hercules console color codes... > >diff -Naupr hercules-3.05/hconsts.h hercules-20070717/hconsts.h >--- hercules-3.05/hconsts.h 2007-06-22 18:35:00.000000000 +0200 >+++ hercules-20070717/hconsts.h 2008-09-03 13:07:48.000000000 +0200 >@@ -7,9 +7,15 @@ > // The <config.h> header and other required headers are > // presumed to have already been #included ahead of it... > >-// $Id: hconsts.h,v 1.8 2007/03/20 22:23:33 gsmith Exp $ >+// $Id: hconsts.h,v 1.10 2008/05/28 16:36:17 fish Exp $ > // > // $Log: hconsts.h,v $ >+// Revision 1.10 2008/05/28 16:36:17 fish >+// #define PATH_SEP constant >+// >+// Revision 1.9 2008/03/16 00:04:37 rbowler >+// Replace ACC_ARMODE by USE_ARMODE for LPTEA >+// > // Revision 1.8 2007/03/20 22:23:33 gsmith > // Redefine ACC_ and ACCTYPE_ macros > // >@@ -29,8 +35,16 @@ > /* Miscellaneous system related constants we could be missing... */ > /*-------------------------------------------------------------------*/ > >-#ifndef MAX_PATH >- #define MAX_PATH PATH_MAX >+#ifndef MAX_PATH >+ #define MAX_PATH PATH_MAX >+#endif >+ >+#ifndef PATH_SEP >+ #ifdef _MSVC_ >+ #define PATH_SEP "\\" >+ #else >+ #define PATH_SEP "/" >+ #endif > #endif > > #if defined( _MSVC_ ) >@@ -250,7 +264,6 @@ > #define ACC_PTE 0x0200 /* Return page table entry*/ > #define ACC_LPTEA 0x0400 /* Esame page table entry */ > #define ACC_SPECIAL_ART 0x0800 /* Used by BSG */ >-#define ACC_ARMODE 0x1000 /* Used by LPTEA */ > > #define ACCTYPE_HW 0 /* Hardware access */ > #define ACCTYPE_INSTFETCH ACC_READ /* Instruction fetch */ >@@ -273,6 +286,8 @@ > #define USE_PRIMARY_SPACE (-3) /* Primary space virtual */ > #define USE_SECONDARY_SPACE (-4) /* Secondary space virtual */ > #define USE_HOME_SPACE (-5) /* Home space virtual */ >+#define USE_ARMODE 16 /* OR with access register >+ number to force AR mode */ > > /* Interception codes used by longjmp/SIE */ > #define SIE_NO_INTERCEPT (-1) /* Continue (after pgmint) */ >diff -Naupr hercules-3.05/hdlmain.c hercules-20070717/hdlmain.c >--- hercules-3.05/hdlmain.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hdlmain.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,12 @@ > /* HDLMAIN.C (c) Copyright Jan Jaeger, 2003-2007 */ > /* Hercules Dynamic Loader */ > >-// $Id: hdlmain.c,v 1.48 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hdlmain.c,v 1.49 2008/02/12 08:42:15 fish Exp $ > // > // $Log: hdlmain.c,v $ >+// Revision 1.49 2008/02/12 08:42:15 fish >+// dyngui tweaks: new def devlist fmt, new debug_cd_cmd hook >+// > // Revision 1.48 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -78,6 +81,7 @@ HDL_REGISTER_SECTION; > HDL_REGISTER( system_command, UNRESOLVED ); > HDL_REGISTER( daemon_task, UNRESOLVED ); > HDL_REGISTER( debug_cpu_state, UNRESOLVED ); >+ HDL_REGISTER( debug_cd_cmd, UNRESOLVED ); > HDL_REGISTER( debug_device_state, UNRESOLVED ); > HDL_REGISTER( debug_program_interrupt, UNRESOLVED ); > HDL_REGISTER( debug_diagnose, UNRESOLVED ); >@@ -121,6 +125,7 @@ HDL_RESOLVER_SECTION; > HDL_RESOLVE( system_command ); > HDL_RESOLVE( daemon_task ); > HDL_RESOLVE( debug_cpu_state ); >+ HDL_RESOLVE( debug_cd_cmd ); > HDL_RESOLVE( debug_device_state ); > HDL_RESOLVE( debug_program_interrupt ); > HDL_RESOLVE( debug_diagnose ); >diff -Naupr hercules-3.05/hercifc.c hercules-20070717/hercifc.c >--- hercules-3.05/hercifc.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hercifc.c 2008-09-03 13:07:48.000000000 +0200 >@@ -19,9 +19,21 @@ > // The exit status is zero if successful, non-zero if error. > // > >-// $Id: hercifc.c,v 1.28 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hercifc.c,v 1.31 2008/06/22 05:54:30 fish Exp $ > // > // $Log: hercifc.c,v $ >+// Revision 1.31 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.30 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// >+// Revision 1.29 2007/08/28 20:14:23 gsmith >+// Fix many TUNSETIFF-EINVAL error messages >+// > // Revision 1.28 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -57,6 +69,8 @@ int main( int argc, char **argv ) > > UNREFERENCED( argc ); > >+ DROP_PRIVILEGES(CAP_NET_ADMIN); >+ > pszProgName = strdup( argv[0] ); > > // Must not be run from the commandline >@@ -207,7 +221,7 @@ int main( int argc, char **argv ) > > default: > snprintf( szMsgBuffer,sizeof(szMsgBuffer), >- _("HHCIF004W %s: Unknown request: %8.8lX.\n"), >+ _("HHCIF004W %s: Unknown request: "I32_FMTX".\n"), > pszProgName, ctlreq.iCtlOp ); > write( STDERR_FILENO, szMsgBuffer, strlen( szMsgBuffer ) ); > continue; >@@ -233,6 +247,10 @@ int main( int argc, char **argv ) > /* Suppress spurious error message */ > && !(ctlreq.iCtlOp == SIOCDIFADDR && errno == EINVAL) > #endif >+ #if defined(TUNSETIFF) && defined(EINVAL) >+ /* Suppress spurious error message */ >+ && !(ctlreq.iCtlOp == TUNSETIFF && errno == EINVAL) >+ #endif > ) > { > snprintf( szMsgBuffer,sizeof(szMsgBuffer), >diff -Naupr hercules-3.05/hercifc.h hercules-20070717/hercifc.h >--- hercules-3.05/hercifc.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hercifc.h 2008-09-03 13:07:48.000000000 +0200 >@@ -6,9 +6,12 @@ > // (C) Copyright James A. Pierson, 2002-2007 > // > >-// $Id: hercifc.h,v 1.13 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hercifc.h,v 1.14 2008/02/07 00:29:04 rbowler Exp $ > // > // $Log: hercifc.h,v $ >+// Revision 1.14 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// > // Revision 1.13 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -98,7 +101,7 @@ typedef struct _CTLREQ > union > { > struct ifreq ifreq; >-#if !defined(__APPLE__) && !defined(__FreeBSD__) >+#if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__SOLARIS__) > struct rtentry rtentry; > #endif > } >diff -Naupr hercules-3.05/Hercules.dsp hercules-20070717/Hercules.dsp >--- hercules-3.05/Hercules.dsp 2007-06-22 18:34:59.000000000 +0200 >+++ hercules-20070717/Hercules.dsp 2008-09-03 13:07:48.000000000 +0200 >@@ -651,6 +651,10 @@ SOURCE=.\general2.c > # End Source File > # Begin Source File > >+SOURCE=.\general3.c >+# End Source File >+# Begin Source File >+ > SOURCE=.\getopt.c > # End Source File > # Begin Source File >diff -Naupr hercules-3.05/hercules.h hercules-20070717/hercules.h >--- hercules-3.05/hercules.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hercules.h 2008-09-03 13:07:48.000000000 +0200 >@@ -4,9 +4,15 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: hercules.h,v 1.300 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hercules.h,v 1.302 2008/05/22 21:34:22 fish Exp $ > // > // $Log: hercules.h,v $ >+// Revision 1.302 2008/05/22 21:34:22 fish >+// Attempt to fix my *nix SCSI tape BSR over tapemark bug identified by Bob Schneider [bschneider@pingdata.net] >+// >+// Revision 1.301 2007/12/11 15:01:06 rbowler >+// Fix undefined gettimeofday in clock.h rev 1.27 (MSVC) >+// > // Revision 1.300 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -109,9 +115,9 @@ > #include "version.h" > > #include "esa390.h" // (ESA/390 structure definitions) >-#include "clock.h" // (TOD definitions) > #include "hscutl.h" // (utility functions) > #include "w32util.h" // (win32 porting functions) >+#include "clock.h" // (TOD definitions) > > #include "codepage.h" > #include "logger.h" // (logmsg, etc) >@@ -127,6 +133,9 @@ > #include "w32ctca.h" > > #include "hsocket.h" >+#ifdef _MSVC_ >+ #include "w32mtio.h" // 'mtio.h' needed by hstructs.h >+#endif // _MSVC_ > #include "hstructs.h" // (Hercules-wide structures) > #include "hexterns.h" // (Hercules-wide extern function prototypes) > >diff -Naupr hercules-3.05/Hercules.sln hercules-20070717/Hercules.sln >--- hercules-3.05/Hercules.sln 2005-11-28 04:22:30.000000000 +0100 >+++ hercules-20070717/Hercules.sln 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,6 @@ >  > Microsoft Visual Studio Solution File, Format Version 9.00 >-# Visual C++ Express 2005 >+# Visual Studio 2005 > Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Hercules", "Hercules.vcproj", "{F17348EA-9067-49DC-9497-5D4BF1E6635B}" > EndProject > Global >diff -Naupr hercules-3.05/Hercules.vcproj hercules-20070717/Hercules.vcproj >--- hercules-3.05/Hercules.vcproj 2007-06-22 18:34:59.000000000 +0200 >+++ hercules-20070717/Hercules.vcproj 2008-09-03 13:07:48.000000000 +0200 >@@ -27,7 +27,7 @@ > ReBuildCommandLine="makefile.bat DEBUG makefile-dllmod.msvc 32 -a" > CleanCommandLine="makefile.bat DEBUG makefile-dllmod.msvc 32 clean" > Output="$(OutDir)" >- PreprocessorDefinitions="WIN32;_DEBUG;" >+ PreprocessorDefinitions="WIN32;_DEBUG;_MSVC_" > IncludeSearchPath="" > ForcedIncludes="" > AssemblySearchPath="" >@@ -47,7 +47,7 @@ > ReBuildCommandLine="makefile.bat RETAIL makefile-dllmod.msvc 32 -a" > CleanCommandLine="makefile.bat RETAIL makefile-dllmod.msvc 32 clean" > Output="$(OutDir)" >- PreprocessorDefinitions="WIN32;NDEBUG;" >+ PreprocessorDefinitions="WIN32;NDEBUG;_MSVC_" > IncludeSearchPath="" > ForcedIncludes="" > AssemblySearchPath="" >@@ -170,6 +170,10 @@ > <Filter > Name="Crypto" > > >+ <File >+ RelativePath=".\crypto\Makefile.am" >+ > >+ </File> > <Filter > Name="Header Files" > > >@@ -218,6 +222,23 @@ > <Filter > Name="decNumber" > > >+ <File >+ RelativePath=".\decNumber\decnumber.pdf" >+ SubType="Code" >+ > >+ </File> >+ <File >+ RelativePath=".\decNumber\ICU-license.html" >+ > >+ </File> >+ <File >+ RelativePath=".\decNumber\Makefile.am" >+ > >+ </File> >+ <File >+ RelativePath=".\decNumber\readme.txt" >+ > >+ </File> > <Filter > Name="Header Files" > > >@@ -469,10 +490,26 @@ > Name="Source Files" > > > <File >+ RelativePath=".\awstape.c" >+ > >+ </File> >+ <File >+ RelativePath=".\faketape.c" >+ > >+ </File> >+ <File > RelativePath=".\hetlib.c" > > > </File> > <File >+ RelativePath=".\hettape.c" >+ > >+ </File> >+ <File >+ RelativePath=".\omatape.c" >+ > >+ </File> >+ <File > RelativePath=".\scsitape.c" > > > </File> >@@ -481,6 +518,10 @@ > > > </File> > <File >+ RelativePath=".\tapeccws.c" >+ > >+ </File> >+ <File > RelativePath=".\tapedev.c" > > > </File> >@@ -654,6 +695,10 @@ > > > </File> > <File >+ RelativePath=".\general3.c" >+ > >+ </File> >+ <File > RelativePath=".\getopt.c" > > > </File> >@@ -1014,6 +1059,10 @@ > > > </File> > <File >+ RelativePath=".\ieee-sol.h" >+ > >+ </File> >+ <File > RelativePath=".\ieee-w32.h" > > > </File> >@@ -1102,14 +1151,6 @@ > <Filter > Name="Other Files" > > >- <File >- RelativePath=".\herclogo.txt" >- > >- </File> >- <File >- RelativePath=".\hercules.cnf" >- > >- </File> > <Filter > Name="DOC" > > >@@ -1169,83 +1210,99 @@ > > > </File> > <File >- RelativePath=".\README.TAPE" >- > >- </File> >- </Filter> >- <Filter >- Name="html" >- > >- <File >- RelativePath=".\html\cckddasd.html" >- > >- </File> >- <File >- RelativePath=".\html\fishgui.html" >- > >- </File> >- <File >- RelativePath=".\html\hercconf.html" >- > >- </File> >- <File >- RelativePath=".\html\hercfaq.html" >- > >- </File> >- <File >- RelativePath=".\html\hercinst.html" >+ RelativePath=".\README.SETUID" > > > </File> > <File >- RelativePath=".\html\herclic.html" >+ RelativePath=".\README.SUN" > > > </File> > <File >- RelativePath=".\html\hercload.html" >- > >- </File> >- <File >- RelativePath=".\html\hercnew.html" >- > >- </File> >- <File >- RelativePath=".\html\hercrdr.html" >- > >- </File> >- <File >- RelativePath=".\html\hercrnot.html" >- > >- </File> >- <File >- RelativePath=".\html\hercsupp.html" >- > >- </File> >- <File >- RelativePath=".\html\herctcp.html" >+ RelativePath=".\README.TAPE" > > > </File> >+ </Filter> >+ <Filter >+ Name="html" >+ > > <File > RelativePath=".\html\hercules.css" > > > </File> > <File >- RelativePath=".\html\hercules.html" >+ RelativePath=".\html\Makefile.am" > > > </File> >- <File >- RelativePath=".\html\index.html" >- > >- </File> >- <File >- RelativePath=".\html\shared.html" >- > >- </File> >- <File >- RelativePath=".\html\tasks.html" >+ <Filter >+ Name="herc" > > >- </File> >+ <File >+ RelativePath=".\html\cckddasd.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\fishgui.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercconf.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercfaq.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercinst.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\herclic.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercload.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercnew.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercrdr.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercrnot.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercsupp.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\herctcp.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\hercules.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\index.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\shared.html" >+ > >+ </File> >+ <File >+ RelativePath=".\html\tasks.html" >+ > >+ </File> >+ </Filter> > <Filter >- Name="hercms..." >+ Name="msgs" > > > <File > RelativePath=".\html\hercmsca.html" >@@ -1554,6 +1611,10 @@ > > > </File> > <File >+ RelativePath=".\util\Makefile.am" >+ > >+ </File> >+ <File > RelativePath=".\util\rawstape.jcl" > > > </File> >@@ -1561,6 +1622,10 @@ > RelativePath=".\util\tapeconv.jcl" > > > </File> >+ <File >+ RelativePath=".\util\TMOUNT.txt" >+ > >+ </File> > </Filter> > <Filter > Name="tests" >@@ -1617,18 +1682,58 @@ > Name="scripts" > > > <File >+ RelativePath=".\tests\alsi.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\axtr.txt" > > > </File> > <File >+ RelativePath=".\tests\brc.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\cdfr.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\cdgr.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\cgdr.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\cgdtr.txt" > > > </File> > <File >+ RelativePath=".\tests\cger.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\cgfrl.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\cgxr.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\cgxtr.txt" > > > </File> > <File >+ RelativePath=".\tests\cpsdr.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\csst.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\cxgbr.txt" > > > </File> >@@ -1641,6 +1746,18 @@ > > > </File> > <File >+ RelativePath=".\tests\epsw.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\exrl.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\fiebr.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\fixtr.txt" > > > </File> >@@ -1649,6 +1766,114 @@ > > > </File> > <File >+ RelativePath=".\tests\kimd0.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kimd1.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kimd2.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kimd3.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\klmd0.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\klmd1.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\klmd2.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\klmd3.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km0.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km1.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km18.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km19.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km2.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km20.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\km3.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmac0.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmac1.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmac2.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmac3.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc0.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc1.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc18.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc19.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc2.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc20.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc3.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\kmc67.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\ldetr.txt" > > > </File> >@@ -1661,10 +1886,30 @@ > > > </File> > <File >+ RelativePath=".\tests\lfpc.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\llhrl.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\loop.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\lxdtr.txt" > > > </File> > <File >+ RelativePath=".\tests\maer.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\mvcos.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\mxtr.txt" > > > </File> >@@ -1673,6 +1918,10 @@ > > > </File> > <File >+ RelativePath=".\tests\rnsbg.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\rrdtr.txt" > > > </File> >@@ -1689,6 +1938,10 @@ > > > </File> > <File >+ RelativePath=".\tests\tbedr.txt" >+ > >+ </File> >+ <File > RelativePath=".\tests\tdcdt.txt" > > > </File> >@@ -1696,8 +1949,28 @@ > RelativePath=".\tests\tdgdt.txt" > > > </File> >+ <File >+ RelativePath=".\tests\thder.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\tests\trte.txt" >+ > >+ </File> > </Filter> > </Filter> >+ <Filter >+ Name="misc" >+ > >+ <File >+ RelativePath=".\herclogo.txt" >+ > >+ </File> >+ <File >+ RelativePath=".\hercules.cnf" >+ > >+ </File> >+ </Filter> > </Filter> > </Files> > <Globals> >diff -Naupr hercules-3.05/hercver.rc hercules-20070717/hercver.rc >--- hercules-3.05/hercver.rc 2006-12-30 16:18:28.000000000 +0100 >+++ hercules-20070717/hercver.rc 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,18 @@ > // HercVer.rc -- defines the Windows resources to be linked into the product > // (c) Copyright "Fish" (David B. Trout), 2005 > // Released under the Q Public License as modifications to Hercules. >-// (http://www.conmicro.cx/hercules/herclic.html) >+// (http://www.hercules-390.org/herclic.html) > ///////////////////////////////////////////////////////////////////////////////////////// > >-// $Id: hercver.rc,v 1.5 2006/12/08 09:55:11 jj Exp $ >+// $Id: hercver.rc,v 1.7 2008/05/17 13:45:07 ivan Exp $ > // > // $Log: hercver.rc,v $ >+// Revision 1.7 2008/05/17 13:45:07 ivan >+// Update (c) info in hercver.rc >+// >+// Revision 1.6 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.5 2006/12/08 09:55:11 jj > // Add CVS message log > // >@@ -29,7 +35,7 @@ > #endif > > #define HERCULES_PRODUCT "The Hercules System/370, ESA/390, and z/Architecture Emulator" >-#define HERCULES_COPYRIGHT "(c)Copyright 1999-2005" >+#define HERCULES_COPYRIGHT "(c)Copyright 1999-2008" > #define HERCULES_COMPANY "by Roger Bowler, Jan Jaeger, and others" > #define HERCULES_PRODUCT_URL "http://www.hercules-390.org" > #define HERCULES_PRODUCT_EMAIL "hercules-390@yahoogroups.com" >diff -Naupr hercules-3.05/hercwind.h hercules-20070717/hercwind.h >--- hercules-3.05/hercwind.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hercwind.h 2008-09-03 13:07:48.000000000 +0200 >@@ -6,9 +6,27 @@ > /* prototypes required by Hercules in the MSVC environment */ > /*-------------------------------------------------------------------*/ > >-// $Id: hercwind.h,v 1.15 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hercwind.h,v 1.19 2008/06/22 05:54:30 fish Exp $ > // > // $Log: hercwind.h,v $ >+// Revision 1.19 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.18 2008/05/28 16:37:48 fish >+// #define PATH_MAX from _MAX_PATH if available >+// >+// Revision 1.17 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.16 2008/02/19 17:18:36 rbowler >+// Missing u_int8_t causes crypto compile errors on Solaris >+// > // Revision 1.15 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -19,6 +37,9 @@ > #if !defined(_HERCWIND_H) > #define _HERCWIND_H > >+// (just a handy macro to have around) >+#define IsEventSet(h) (WaitForSingleObject(h,0) == WAIT_OBJECT_0) >+ > // PROGRAMMING NOTE: Cygwin has a bug in setvbuf requiring us > // to do an 'fflush()' after each stdout/err write, and it doesn't > // hurt doing it for the MSVC build either... >@@ -70,7 +91,15 @@ > > /////////////////////////////////////////////////////////////////////// > >-#define PATH_MAX FILENAME_MAX >+#ifdef _MAX_PATH >+ #define PATH_MAX _MAX_PATH >+#else >+ #ifdef FILENAME_MAX >+ #define PATH_MAX FILENAME_MAX >+ #else >+ #define PATH_MAX 260 >+ #endif >+#endif > > struct dirent { > long d_ino; >@@ -129,6 +158,7 @@ typedef int mode_t; > > #define HAVE_STRUCT_IN_ADDR_S_ADDR > #define HAVE_U_INT >+#define HAVE_U_INT8_T > #define HAVE_LIBMSVCRT > #define HAVE_SYS_MTIO_H // (ours is called 'w32mtio.h') > >@@ -167,6 +197,11 @@ typedef int mode_t; > #define HAVE_DECL_SIOCDELRT 0 // (unsupported by CTCI-W32) > #define HAVE_DECL_SIOCDIFADDR 0 // (unsupported by CTCI-W32) > >+// SCSI tape handling transparency/portability >+ >+#define HAVE_DECL_MTEOTWARN 1 // (always true since I made it up!) >+#define HAVE_DECL_MTEWARN 1 // (same as HAVE_DECL_MTEOTWARN) >+ > // GNUWin32 PCRE (Perl-Compatible Regular Expressions) support... > > #if defined(HAVE_PCRE) >@@ -176,4 +211,34 @@ typedef int mode_t; > #define OPTION_HAO // Hercules Automatic Operator > #endif > >+#if defined( _WIN64 ) >+ #define SIZEOF_SIZE_T 8 >+#else >+ #define SIZEOF_SIZE_T 4 >+#endif >+ >+#define DBGTRACE DebugTrace >+ >+inline void DebugTrace(char* fmt, ...) >+{ >+ const int chunksize = 512; >+ int buffsize = 0; >+ char* buffer = NULL; >+ int rc = -1; >+ va_list args; >+ va_start( args, fmt ); >+ do >+ { >+ if (buffer) free( buffer ); >+ buffsize += chunksize; >+ buffer = malloc( buffsize ); >+ if (!buffer) __debugbreak(); >+ rc = vsnprintf( buffer, buffsize, fmt, args); >+ } >+ while (rc < 0 || rc >= buffsize); >+ OutputDebugStringA( buffer ); >+ free( buffer ); >+ va_end( args ); >+} >+ > #endif /*!defined(_HERCWIND_H)*/ >diff -Naupr hercules-3.05/hetlib.c hercules-20070717/hetlib.c >--- hercules-3.05/hetlib.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hetlib.c 2008-09-03 13:07:48.000000000 +0200 >@@ -9,9 +9,15 @@ > || ---------------------------------------------------------------------------- > */ > >-// $Id: hetlib.c,v 1.32 2007/06/23 00:04:10 ivan Exp $ >+// $Id: hetlib.c,v 1.34 2007/11/21 23:30:41 fish Exp $ > // > // $Log: hetlib.c,v $ >+// Revision 1.34 2007/11/21 23:30:41 fish >+// (comment change only) >+// >+// Revision 1.33 2007/07/24 22:36:32 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// > // Revision 1.32 2007/06/23 00:04:10 ivan > // Update copyright notices to include current year (2007) > // >@@ -382,7 +388,7 @@ het_close( HETB **hetb ) > Default: HETDFLT_COMPRESS (TRUE) > > HETCNTL_DECOMPRESS val=TRUE to enable read decompression >- Values: FALSE (diable) >+ Values: FALSE (disable) > TRUE (enable) > Default: HETDFLT_DECOMPRESS (TRUE) > >@@ -1461,6 +1467,108 @@ het_tapemark( HETB *hetb ) > /*==DOC== > > NAME >+ het_sync - commit/flush a HET file's buffers to disk >+ >+ SYNOPSIS >+ #include "hetlib.h" >+ >+ int het_sync( HETB *hetb ) >+ >+ DESCRIPTION >+ Calls the file system's "fdatasync" (or fsync) function to cause >+ all data for the HET file to be transferred to disk by forcing a >+ physical write of all data from the file's buffers or the file- >+ system's cache, to the disk, thereby assuring that after a system >+ crash or other failure, that all data up to the time of the call >+ is thus recorded on the disk. >+ >+ RETURN VALUE >+ If no errors are detected then the return value will be >= 0. >+ >+ If an error occurs, then the return value will be < 0 and will be >+ one of the following: >+ >+ HETE_PROTECTED File is write protected >+ >+ HETE_ERROR File system error - check errno(3) >+ >+ EXAMPLE >+ // >+ // Flush a HET file's buffers to disk >+ // >+ >+ #include "hetlib.h" >+ >+ char data[] = "This is a test"; >+ >+ int main( int argc, char *argv[] ) >+ { >+ HETB *hetb; >+ int rc; >+ >+ rc = het_open( &hetb, argv[ 1 ], HETOPEN_CREATE ); >+ if( rc >= 0 ) >+ { >+ rc = het_write( hetb, data, sizeof( data ) ); >+ if( rc >= 0 ) >+ { >+ printf( "Block successfully written\n" ); >+ >+ rc = het_sync( &hetb ); >+ if( rc >= 0 ) >+ { >+ printf( "Block successfully committed\n" ); >+ } >+ } >+ } >+ >+ if( rc < 0 ) >+ { >+ printf( "HETLIB error: %d\n", rc ); >+ } >+ >+ het_close( &hetb ); >+ >+ return( 0 ); >+ } >+ >+ SEE ALSO >+ het_open(), het_write(), het_close() >+ >+==DOC==*/ >+ >+DLL_EXPORT int >+het_sync( HETB *hetb ) >+{ >+ int rc; >+ >+ /* >+ || Can't sync to readonly media >+ */ >+ if( hetb->writeprotect ) >+ { >+ return( HETE_PROTECTED ); >+ } >+ >+ /* >+ || Perform the sync >+ */ >+ do rc = fdatasync( fileno( hetb->fd ) ); >+ while (EINTR == rc); >+ if (rc != 0) >+ { >+ return( HETE_ERROR ); >+ } >+ >+ /* >+ || Success >+ */ >+ return( 0 ); >+} >+ >+/*==DOC== >+ >+ NAME > het_locate - Locate a block within an HET file > > SYNOPSIS >diff -Naupr hercules-3.05/hetlib.h hercules-20070717/hetlib.h >--- hercules-3.05/hetlib.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hetlib.h 2008-09-03 13:07:48.000000000 +0200 >@@ -12,9 +12,12 @@ > || ---------------------------------------------------------------------------- > */ > >-// $Id: hetlib.h,v 1.17 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hetlib.h,v 1.18 2007/07/24 22:36:33 fish Exp $ > // > // $Log: hetlib.h,v $ >+// Revision 1.18 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// > // Revision 1.17 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >@@ -185,6 +188,7 @@ HET_DLL_IMPORT int het_read( HETB *hetb, > HET_DLL_IMPORT int het_write_header( HETB *hetb, int len, int flags1, int flags2 ); > HET_DLL_IMPORT int het_write( HETB *hetb, void *sbuf, int slen ); > HET_DLL_IMPORT int het_tapemark( HETB *hetb ); >+HET_DLL_IMPORT int het_sync( HETB *hetb ); > HET_DLL_IMPORT int het_cntl( HETB *hetb, int func, unsigned long val ); > HET_DLL_IMPORT int het_locate( HETB *hetb, int block ); > HET_DLL_IMPORT int het_bsb( HETB *hetb ); >diff -Naupr hercules-3.05/hettape.c hercules-20070717/hettape.c >--- hercules-3.05/hettape.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/hettape.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,730 @@ >+/* HETTAPE.C (c) Copyright Roger Bowler, 1999-2007 */ >+/* ESA/390 Tape Device Handler */ >+ >+/* Original Author: Roger Bowler */ >+/* Prime Maintainer: Ivan Warren */ >+/* Secondary Maintainer: "Fish" (David B. Trout) */ >+ >+// $Id: hettape.c,v 1.7 2008/06/22 05:54:30 fish Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This module contains the HET emulated tape format support. */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Five emulated tape formats are supported: */ >+/* */ >+/* 1. AWSTAPE This is the format used by the P/390. */ >+/* The entire tape is contained in a single flat file. */ >+/* A tape block consists of one or more block segments. */ >+/* Each block segment is preceded by a 6-byte header. */ >+/* Files are separated by tapemarks, which consist */ >+/* of headers with zero block length. */ >+/* AWSTAPE files are readable and writable. */ >+/* */ >+/* Support for AWSTAPE is in the "AWSTAPE.C" member. */ >+/* */ >+/* */ >+/* 2. OMATAPE This is the Optical Media Attach device format. */ >+/* Each physical file on the tape is represented by */ >+/* a separate flat file. The collection of files that */ >+/* make up the physical tape is obtained from an ASCII */ >+/* text file called the "tape description file", whose */ >+/* file name is always tapes/xxxxxx.tdf (where xxxxxx */ >+/* is the volume serial number of the tape). */ >+/* Three formats of tape files are supported: */ >+/* * FIXED files contain fixed length EBCDIC blocks */ >+/* with no headers or delimiters. The block length */ >+/* is specified in the TDF file. */ >+/* * TEXT files contain variable length ASCII blocks */ >+/* delimited by carriage return line feed sequences. */ >+/* The data is translated to EBCDIC by this module. */ >+/* * HEADER files contain variable length blocks of */ >+/* EBCDIC data prefixed by a 16-byte header. */ >+/* The TDF file and all of the tape files must reside */ >+/* reside under the same directory which is normally */ >+/* on CDROM but can be on disk. */ >+/* OMATAPE files are supported as read-only media. */ >+/* */ >+/* OMATAPE tape Support is in the "OMATAPE.C" member. */ >+/* */ >+/* */ >+/* 3. SCSITAPE This format allows reading and writing of 4mm or */ >+/* 8mm DAT tape, 9-track open-reel tape, or 3480-type */ >+/* cartridge on an appropriate SCSI-attached drive. */ >+/* All SCSI tapes are processed using the generalized */ >+/* SCSI tape driver (st.c) which is controlled using */ >+/* the MTIOCxxx set of IOCTL commands. */ >+/* PROGRAMMING NOTE: the 'tape' portability macros for */ >+/* physical (SCSI) tapes MUST be used for all tape i/o! */ >+/* */ >+/* SCSI tape Support is in the "SCSITAPE.C" member. */ >+/* */ >+/* */ >+/* 4. HET This format is based on the AWSTAPE format but has */ >+/* been extended to support compression. Since the */ >+/* basic file format has remained the same, AWSTAPEs */ >+/* can be read/written using the HET routines. */ >+/* */ >+/* Support for HET is in the "HETTAPE.C" member. */ >+/* */ >+/* */ >+/* 5. FAKETAPE This is the format used by Fundamental Software */ >+/* on their FLEX-ES systems. It it similar to the AWS */ >+/* format. The entire tape is contained in a single */ >+/* flat file. A tape block is preceded by a 12-ASCII- */ >+/* hex-characters header which indicate the size of */ >+/* the previous and next blocks. Files are separated */ >+/* by tapemarks which consist of headers with a zero */ >+/* current block length. FakeTapes are both readable */ >+/* and writable. */ >+/* */ >+/* Support for FAKETAPE is in the "FAKETAPE.C" member. */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Additional credits: */ >+/* 3480 commands contributed by Jan Jaeger */ >+/* Sense byte improvements by Jan Jaeger */ >+/* 3480 Read Block ID and Locate CCWs by Brandon Hill */ >+/* Unloaded tape support by Brandon Hill v209*/ >+/* HET format support by Leland Lucius v209*/ >+/* JCS - minor changes by John Summerfield 2003*/ >+/* PERFORM SUBSYSTEM FUNCTION / CONTROL ACCESS support by */ >+/* Adrian Trenkwalder (with futher enhancements by Fish) */ >+/* **INCOMPLETE** 3590 support by Fish (David B. Trout) */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Reference information: */ >+/* SC53-1200 S/370 and S/390 Optical Media Attach/2 User's Guide */ >+/* SC53-1201 S/370 and S/390 Optical Media Attach/2 Technical Ref */ >+/* SG24-2506 IBM 3590 Tape Subsystem Technical Guide */ >+/* GA32-0331 IBM 3590 Hardware Reference */ >+/* GA32-0329 IBM 3590 Introduction and Planning Guide */ >+/* SG24-2594 IBM 3590 Multiplatform Implementation */ >+/* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference */ >+/* GA32-0127 IBM 3490E Hardware Reference */ >+/* GC35-0152 EREP Release 3.5.0 Reference */ >+/* SA22-7204 ESA/390 Common I/O-Device Commands */ >+/* Flex FakeTape format (http://preview.tinyurl.com/67rgnp) */ >+/*-------------------------------------------------------------------*/ >+ >+// $Log: hettape.c,v $ >+// Revision 1.7 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.6 2008/05/22 19:25:58 fish >+// Flex FakeTape support >+// >+// Revision 1.5 2008/03/30 02:51:33 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.4 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.3 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.2 2008/03/26 07:23:51 fish >+// SCSI MODS part 2: split tapedev.c: aws, het, oma processing moved >+// to separate modules, CCW processing moved to separate module. >+// >+// Revision 1.1 2008/03/25 18:42:36 fish >+// AWS, HET and OMA processing logic moved to separate modules. >+// Tape device CCW processing logic also moved to separate module. >+// (tapedev.c was becoming too large and unwieldy) >+// >+// Revision 1.133 2008/03/13 01:44:17 kleonard >+// Fix residual read-only setting for tape device >+// >+// Revision 1.132 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.131 2008/03/04 00:25:25 ivan >+// Ooops.. finger check on 8809 case for numdevid.. Thanks Roger ! >+// >+// Revision 1.130 2008/03/02 12:00:04 ivan >+// Re-disable Sense ID on 3410, 3420, 8809 : report came in that it breaks MTS >+// >+// Revision 1.129 2007/12/14 17:48:52 rbowler >+// Enable SENSE ID CCW for 2703,3410,3420 >+// >+// Revision 1.128 2007/11/29 03:36:40 fish >+// Re-sequence CCW opcode 'case' statements to be in ascending order. >+// COSMETIC CHANGE ONLY. NO ACTUAL LOGIC WAS CHANGED. >+// >+// Revision 1.127 2007/11/13 15:10:52 rbowler >+// fsb_awstape support for segmented blocks >+// >+// Revision 1.126 2007/11/11 20:46:50 rbowler >+// read_awstape support for segmented blocks >+// >+// Revision 1.125 2007/11/09 14:59:34 rbowler >+// Move misplaced comment and restore original programming style >+// >+// Revision 1.124 2007/11/02 16:04:15 jmaynard >+// Removing redundant #if !(defined OPTION_SCSI_TAPE). >+// >+// Revision 1.123 2007/09/01 06:32:24 fish >+// Surround 3590 SCSI test w/#ifdef (OPTION_SCSI_TAPE) >+// >+// Revision 1.122 2007/08/26 14:37:17 fish >+// Fix missed unfixed 31 Aug 2006 non-SCSI tape Locate bug >+// >+// Revision 1.121 2007/07/24 23:06:32 fish >+// Force command-reject for 3590 Medium Sense and Mode Sense >+// >+// Revision 1.120 2007/07/24 22:54:49 fish >+// (comment changes only) >+// >+// Revision 1.119 2007/07/24 22:46:09 fish >+// Default to --blkid-32 and --no-erg for 3590 SCSI >+// >+// Revision 1.118 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// >+// Revision 1.117 2007/07/24 21:57:29 fish >+// Fix Win32 SCSI tape "Locate" and "ReadBlockId" SNAFU >+// >+// Revision 1.116 2007/06/23 00:04:18 ivan >+// Update copyright notices to include current year (2007) >+// >+// Revision 1.115 2007/04/06 15:40:25 fish >+// Fix Locate Block & Read BlockId for SCSI tape broken by 31 Aug 2006 preliminary-3590-support change >+// >+// Revision 1.114 2007/02/25 21:10:44 fish >+// Fix het_locate to continue on tapemark >+// >+// Revision 1.113 2007/02/03 18:58:06 gsmith >+// Fix MVT tape CMDREJ error >+// >+// Revision 1.112 2006/12/28 03:04:17 fish >+// PR# tape/100: Fix crash in "open_omatape()" in tapedev.c if bad filespec entered in OMA (TDF) file >+// >+// Revision 1.111 2006/12/11 17:25:59 rbowler >+// Change locblock from long to U32 to correspond with dev->blockid >+// >+// Revision 1.110 2006/12/08 09:43:30 jj >+// Add CVS message log >+// >+/*-------------------------------------------------------------------*/ >+ >+#include "hstdinc.h" >+#include "hercules.h" /* need Hercules control blocks */ >+#include "tapedev.h" /* Main tape handler header file */ >+ >+/*-------------------------------------------------------------------*/ >+//#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) >+ >+#ifdef ENABLE_TRACING_STMTS >+ #if !defined(DEBUG) >+ #warning DEBUG required for ENABLE_TRACING_STMTS >+ #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) >+#else >+ #undef TRACE >+ #undef ASSERT >+ #undef VERIFY >+ #define TRACE 1 ? ((void)0) : logmsg >+ #define ASSERT(a) >+ #define VERIFY(a) ((void)(a)) >+#endif >+ >+/*-------------------------------------------------------------------*/ >+/* Open an HET format file */ >+/* */ >+/* If successful, the het control blk is stored in the device block */ >+/* and the return value is zero. Otherwise the return value is -1. */ >+/*-------------------------------------------------------------------*/ >+int open_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Check for no tape in drive */ >+ if (!strcmp (dev->filename, TAPE_UNLOADED)) >+ { >+ build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Open the HET file */ >+ rc = het_open (&dev->hetb, dev->filename, dev->tdparms.logical_readonly ? HETOPEN_READONLY : HETOPEN_CREATE ); >+ if (rc >= 0) >+ { >+ if(dev->hetb->writeprotect) >+ { >+ dev->readonly=1; >+ } >+ rc = het_cntl (dev->hetb, >+ HETCNTL_SET | HETCNTL_COMPRESS, >+ dev->tdparms.compress); >+ if (rc >= 0) >+ { >+ rc = het_cntl (dev->hetb, >+ HETCNTL_SET | HETCNTL_METHOD, >+ dev->tdparms.method); >+ if (rc >= 0) >+ { >+ rc = het_cntl (dev->hetb, >+ HETCNTL_SET | HETCNTL_LEVEL, >+ dev->tdparms.level); >+ if (rc >= 0) >+ { >+ rc = het_cntl (dev->hetb, >+ HETCNTL_SET | HETCNTL_CHUNKSIZE, >+ dev->tdparms.chksize); >+ } >+ } >+ } >+ } >+ >+ /* Check for successful open */ >+ if (rc < 0) >+ { >+ int save_errno = errno; >+ het_close (&dev->hetb); >+ errno = save_errno; >+ >+ logmsg (_("HHCTA013E Error opening %s: %s(%s)\n"), >+ dev->filename, het_error(rc), strerror(errno)); >+ >+ strcpy(dev->filename, TAPE_UNLOADED); >+ build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Indicate file opened */ >+ dev->fd = 1; >+ >+ return 0; >+ >+} /* end function open_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Close an HET format file */ >+/* */ >+/* The HET file is close and all device block fields reinitialized. */ >+/*-------------------------------------------------------------------*/ >+void close_het (DEVBLK *dev) >+{ >+ >+ /* Close the HET file */ >+ het_close (&dev->hetb); >+ >+ /* Reinitialize the DEV fields */ >+ dev->fd = -1; >+ strcpy (dev->filename, TAPE_UNLOADED); >+ dev->blockid = 0; >+ dev->fenced = 0; >+ >+ return; >+ >+} /* end function close_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Rewind HET format file */ >+/* */ >+/* The HET file is close and all device block fields reinitialized. */ >+/*-------------------------------------------------------------------*/ >+int rewind_het(DEVBLK *dev,BYTE *unitstat,BYTE code) >+{ >+int rc; >+ rc = het_rewind (dev->hetb); >+ if (rc < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA075E Error seeking to start of %s: %s(%s)\n"), >+ dev->filename, het_error(rc), strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_REWINDFAILED,dev,unitstat,code); >+ return -1; >+ } >+ dev->nxtblkpos=0; >+ dev->prvblkpos=-1; >+ dev->curfilen=1; >+ dev->blockid=0; >+ dev->fenced = 0; >+ return 0; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from an HET format file */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the return value is zero, and the */ >+/* current file number in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int read_het (DEVBLK *dev, BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ rc = het_read (dev->hetb, buf); >+ if (rc < 0) >+ { >+ /* Increment file number and return zero if tapemark was read */ >+ if (rc == HETE_TAPEMARK) >+ { >+ dev->curfilen++; >+ dev->blockid++; >+ return 0; >+ } >+ >+ /* Handle end of file (uninitialized tape) condition */ >+ if (rc == HETE_EOT) >+ { >+ logmsg (_("HHCTA014E End of file (end of tape) " >+ "at block %8.8X in file %s\n"), >+ dev->hetb->cblk, dev->filename); >+ >+ /* Set unit exception with tape indicate (end of tape) */ >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ >+ logmsg (_("HHCTA015E Error reading data block " >+ "at block %8.8X in file %s: %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ dev->blockid++; >+ /* Return block length */ >+ return rc; >+ >+} /* end function read_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a block to an HET format file */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_het (DEVBLK *dev, BYTE *buf, U16 blklen, >+ BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t cursize; /* Current size for size chk */ >+ >+ /* Check if we have already violated the size limit */ >+ if(dev->tdparms.maxsize>0) >+ { >+ cursize=het_tell(dev->hetb); >+ if(cursize>=dev->tdparms.maxsize) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ } >+ /* Write the data block */ >+ rc = het_write (dev->hetb, buf, blklen); >+ if (rc < 0) >+ { >+ /* Handle write error condition */ >+ logmsg (_("HHCTA016E Error writing data block " >+ "at block %8.8X in file %s: %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ /* Check if we have violated the maxsize limit */ >+ /* Also check if we are passed EOT marker */ >+ if(dev->tdparms.maxsize>0) >+ { >+ cursize=het_tell(dev->hetb); >+ if(cursize>dev->tdparms.maxsize) >+ { >+ logmsg(_("TAPE EOT Handling: max capacity exceeded\n")); >+ if(dev->tdparms.strictsize) >+ { >+ logmsg(_("TAPE EOT Handling: max capacity enforced\n")); >+ het_bsb(dev->hetb); >+ cursize=het_tell(dev->hetb); >+ ftruncate( fileno(dev->hetb->fd),cursize); >+ dev->hetb->truncated=TRUE; /* SHOULD BE IN HETLIB */ >+ } >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+ } >+ >+ /* Return normal status */ >+ dev->blockid++; >+ >+ return 0; >+ >+} /* end function write_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a tapemark to an HET format file */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_hetmark (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Write the tape mark */ >+ rc = het_tapemark (dev->hetb); >+ if (rc < 0) >+ { >+ /* Handle error condition */ >+ logmsg (_("HHCTA017E Error writing tape mark " >+ "at block %8.8X in file %s: %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return normal status */ >+ dev->blockid++; >+ >+ return 0; >+ >+} /* end function write_hetmark */ >+ >+/*-------------------------------------------------------------------*/ >+/* Synchronize a HET format file (i.e. flush its buffers to disk) */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int sync_het(DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Perform the flush */ >+ rc = het_sync (dev->hetb); >+ if (rc < 0) >+ { >+ /* Handle error condition */ >+ if (HETE_PROTECTED == rc) >+ build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >+ else >+ { >+ logmsg (_("HHCTA088E Sync error on " >+ "device %4.4X = %s: %s\n"), >+ dev->devnum, dev->filename, strerror(errno)); >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ } >+ return -1; >+ } >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function sync_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space over next block of an HET format file */ >+/* */ >+/* If successful, return value +1. */ >+/* If the block skipped was a tapemark, the return value is zero, */ >+/* and the current file number in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsb_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Forward space one block */ >+ rc = het_fsb (dev->hetb); >+ >+ if (rc < 0) >+ { >+ /* Increment file number and return zero if tapemark was read */ >+ if (rc == HETE_TAPEMARK) >+ { >+ dev->blockid++; >+ dev->curfilen++; >+ return 0; >+ } >+ >+ logmsg (_("HHCTA018E Error forward spacing " >+ "at block %8.8X in file %s: %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ if(rc==HETE_EOT) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ } >+ else >+ { >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ } >+ return -1; >+ } >+ >+ dev->blockid++; >+ >+ /* Return +1 to indicate forward space successful */ >+ return +1; >+ >+} /* end function fsb_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous block of an HET format file */ >+/* */ >+/* If successful, return value will be +1. */ >+/* If the block is a tapemark, the return value is zero, */ >+/* and the current file number in the device block is decremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsb_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Back space one block */ >+ rc = het_bsb (dev->hetb); >+ if (rc < 0) >+ { >+ /* Increment file number and return zero if tapemark was read */ >+ if (rc == HETE_TAPEMARK) >+ { >+ dev->blockid--; >+ dev->curfilen--; >+ return 0; >+ } >+ >+ /* Unit check if already at start of tape */ >+ if (rc == HETE_BOT) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ logmsg (_("HHCTA019E Error reading data block " >+ "at block %8.8X in file %s: %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ dev->blockid--; >+ >+ /* Return +1 to indicate back space successful */ >+ return +1; >+ >+} /* end function bsb_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space to next logical file of HET format file */ >+/* */ >+/* If successful, return value is zero, and the current file number */ >+/* in the device block is incremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsf_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Forward space to start of next file */ >+ rc = het_fsf (dev->hetb); >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA020E Error forward spacing to next file " >+ "at block %8.8X in file %s: %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ if(rc==HETE_EOT) >+ { >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ } >+ else >+ { >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ } >+ return -1; >+ } >+ >+ /* Maintain position */ >+ dev->blockid = rc; >+ dev->curfilen++; >+ >+ /* Return success */ >+ return 0; >+ >+} /* end function fsf_het */ >+ >+/*-------------------------------------------------------------------*/ >+/* Check HET file is passed the allowed EOT margin */ >+/*-------------------------------------------------------------------*/ >+int passedeot_het (DEVBLK *dev) >+{ >+off_t cursize; >+ if(dev->fd>0) >+ { >+ if(dev->tdparms.maxsize>0) >+ { >+ cursize=het_tell(dev->hetb); >+ if(cursize+dev->eotmargin>dev->tdparms.maxsize) >+ { >+ dev->eotwarning = 1; >+ return 1; >+ } >+ } >+ } >+ dev->eotwarning = 0; >+ return 0; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous logical file of HET format file */ >+/* */ >+/* If successful, return value is zero, and the current file number */ >+/* in the device block is decremented. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsf_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+ >+ /* Exit if already at BOT */ >+ if (dev->curfilen==1 && dev->nxtblkpos == 0) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ rc = het_bsf (dev->hetb); >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA021E Error back spacing to previous file " >+ "at block %8.8X in file %s:\n %s(%s)\n"), >+ dev->hetb->cblk, dev->filename, >+ het_error(rc), strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Maintain position */ >+ dev->blockid = rc; >+ dev->curfilen--; >+ >+ /* Return success */ >+ return 0; >+ >+} /* end function bsf_het */ >diff -Naupr hercules-3.05/hexterns.h hercules-20070717/hexterns.h >--- hercules-3.05/hexterns.h 2007-03-06 17:40:30.000000000 +0100 >+++ hercules-20070717/hexterns.h 2008-09-03 13:07:48.000000000 +0200 >@@ -7,9 +7,23 @@ > // The <config.h> header and other required headers are > // presumed to have already been #included ahead of it... > >-// $Id: hexterns.h,v 1.15 2007/01/11 19:54:33 fish Exp $ >+// $Id: hexterns.h,v 1.19 2008/07/08 05:35:49 fish Exp $ > // > // $Log: hexterns.h,v $ >+// Revision 1.19 2008/07/08 05:35:49 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.18 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// >+// Revision 1.17 2008/02/12 08:42:15 fish >+// dyngui tweaks: new def devlist fmt, new debug_cd_cmd hook >+// >+// Revision 1.16 2008/01/04 02:28:51 gsmith >+// sf commands update >+// > // Revision 1.15 2007/01/11 19:54:33 fish > // Addt'l keep-alive mods: create associated supporting config-file stmt and panel command where individual customer-preferred values can be specified and/or dynamically modified. > // >@@ -110,6 +124,16 @@ > #define CONF_DLL_IMPORT DLL_EXPORT > #endif > >+#ifndef _BLDCFG_C_ >+#ifndef _HENGINE_DLL_ >+#define BLDC_DLL_IMPORT DLL_IMPORT >+#else /* _HDASD_DLL_ */ >+#define BLDC_DLL_IMPORT extern >+#endif /* _HDASD_DLL_ */ >+#else >+#define BLDC_DLL_IMPORT DLL_EXPORT >+#endif >+ > #if defined( _MSC_VER ) && (_MSC_VER >= 1300) && (_MSC_VER < 1400) > // '_ftol' is defined in MSVCRT.DLL > // '_ftol2' we define ourselves in "w32ftol2.c" >@@ -147,7 +171,7 @@ HSYS_DLL_IMPORT int extgui; > HDC(debug_cpu_state, regs) interface */ > #endif /*EXTERNALGUI*/ > >-/* Functions in module config.c */ >+/* Functions in module config.c or bldcfg.c */ > void build_config (char *fname); > void release_config (); > CONF_DLL_IMPORT DEVBLK *find_device_by_devnum (U16 lcss, U16 devnum); >@@ -159,10 +183,10 @@ int attach_device (U16 lcss, U16 devnum > int detach_subchan (U16 lcss, U16 subchan); > int detach_device (U16 lcss, U16 devnum); > int define_device (U16 lcss, U16 olddev, U16 newdev); >-DLL_EXPORT int group_device(DEVBLK *dev, int members); >+CONF_DLL_IMPORT int group_device(DEVBLK *dev, int members); > int configure_cpu (int cpu); > int deconfigure_cpu (int cpu); >-DLL_EXPORT int parse_args (char* p, int maxargc, char** pargv, int* pargc); >+BLDC_DLL_IMPORT int parse_args (char* p, int maxargc, char** pargv, int* pargc); > #define MAX_ARGS 12 /* Max argv[] array size */ > int parse_and_attach_devices(const char *devnums,const char *devtype,int ac,char **av); > CONF_DLL_IMPORT int parse_single_devnum(const char *spec, U16 *lcss, U16 *devnum); >@@ -170,7 +194,9 @@ int parse_single_devnum_silent(const cha > int readlogo(char *fn); > void clearlogo(void); > CONF_DLL_IMPORT int parse_conkpalv(char* s, int* idle, int* intv, int* cnt ); >- >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+BLDC_DLL_IMPORT int add_tamdir( char *tamdir, TAMDIR **ppTAMDIR ); >+#endif /* OPTION_TAPE_AUTOMOUNT */ > > /* Global data areas and functions in module cpu.c */ > extern const char* arch_name[]; >@@ -213,6 +239,7 @@ HSYS_DLL_IMPORT void *(*panel_command) > > HSYS_DLL_IMPORT void *(*debug_device_state) (DEVBLK *); > HSYS_DLL_IMPORT void *(*debug_cpu_state) (REGS *); >+HSYS_DLL_IMPORT void (*debug_cd_cmd) (char *); > HSYS_DLL_IMPORT void *(*debug_watchdog_signal) (REGS *); > HSYS_DLL_IMPORT void *(*debug_program_interrupt) (REGS *, int); > HSYS_DLL_IMPORT void *(*debug_diagnose) (U32, int, int, REGS *); >@@ -226,6 +253,7 @@ HSYS_DLL_IMPORT void *(*debug_sclp_event > void *panel_command (void *cmdline); > void panel_display (void); > #define debug_cpu_state NULL >+#define debug_cd_cmd NULL > #define debug_device_state NULL > #define debug_program_interrupt NULL > #define debug_diagnose NULL >@@ -306,11 +334,11 @@ int cckd_read_track (DEVBLK *, int, > int cckd_update_track (DEVBLK *, int, int, BYTE *, int, BYTE *); > int cfba_read_block (DEVBLK *, int, BYTE *); > int cfba_write_block (DEVBLK *, int, int, BYTE *, int, BYTE *); >-CCKD_DLL_IMPORT void cckd_sf_add (DEVBLK *); >-CCKD_DLL_IMPORT void cckd_sf_remove (DEVBLK *, int); >-CCKD_DLL_IMPORT void cckd_sf_newname (DEVBLK *, char *); >-CCKD_DLL_IMPORT void cckd_sf_stats (DEVBLK *); >-CCKD_DLL_IMPORT void cckd_sf_comp (DEVBLK *); >+CCKD_DLL_IMPORT void *cckd_sf_add (void *); >+CCKD_DLL_IMPORT void *cckd_sf_remove (void *); >+CCKD_DLL_IMPORT void *cckd_sf_stats (void *); >+CCKD_DLL_IMPORT void *cckd_sf_comp (void *); >+CCKD_DLL_IMPORT void *cckd_sf_chk (void *); > CCKD_DLL_IMPORT int cckd_command(char *, int); > CCKD_DLL_IMPORT void cckd_print_itrace (); > >@@ -339,6 +367,7 @@ void get_connected_client (DEVBLK* dev, > void alter_display_real (char *opnd, REGS *regs); > void alter_display_virt (char *opnd, REGS *regs); > void disasm_stor(REGS *regs, char *opnd); >+int drop_privileges(int capa); > > /* Functions in module sr.c */ > int suspend_cmd(int argc, char *argv[],char *cmdline); >diff -Naupr hercules-3.05/hmacros.h hercules-20070717/hmacros.h >--- hercules-3.05/hmacros.h 2007-06-22 18:35:00.000000000 +0200 >+++ hercules-20070717/hmacros.h 2008-09-03 13:07:48.000000000 +0200 >@@ -7,9 +7,28 @@ > // The <config.h> header and other required headers are > // presumed to have already been #included ahead of it... > >-// $Id: hmacros.h,v 1.17 2007/06/06 22:14:57 gsmith Exp $ >+// $Id: hmacros.h,v 1.23 2008/07/16 11:01:41 fish Exp $ > // > // $Log: hmacros.h,v $ >+// Revision 1.23 2008/07/16 11:01:41 fish >+// Create "sizeof_member" macro >+// >+// Revision 1.22 2008/06/26 14:00:06 rbowler >+// CAP_SYS_NICE undeclared when -DNO_SETUID >+// >+// Revision 1.21 2008/05/22 21:17:29 fish >+// Tape file extension neutrality support >+// >+// Revision 1.20 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// >+// Revision 1.19 2008/01/23 00:47:40 rbowler >+// Modifications for VS9 C++ 2008 Express by Charlie Brint >+// >+// Revision 1.18 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// > // Revision 1.17 2007/06/06 22:14:57 gsmith > // Fix SYNCHRONIZE_CPUS when numcpu > number of host processors - Greg > // >@@ -116,6 +135,20 @@ > #endif > > /*-------------------------------------------------------------------*/ >+/* some handy array/struct macros... */ >+/*-------------------------------------------------------------------*/ >+ >+#ifndef _countof >+ #define _countof(x) ( sizeof(x) / sizeof(x[0]) ) >+#endif >+#ifndef arraysize >+ #define arraysize(x) _countof(x) >+#endif >+#ifndef sizeof_member >+ #define sizeof_member(_struct,_member) sizeof(((_struct*)0)->_member) >+#endif >+ >+/*-------------------------------------------------------------------*/ > /* Large File Support portability... */ > /*-------------------------------------------------------------------*/ > >@@ -208,6 +241,7 @@ > > #ifdef _MSVC_ > >+ #undef ASSERT /* For VS9 2008 */ > #define ASSERT(a) \ > do \ > { \ >@@ -240,6 +274,7 @@ > #ifdef _MSVC_ > > #define TRACE __noop >+ #undef ASSERT /* For VS9 2008 */ > #define ASSERT(a) __noop > #define VERIFY(a) ((void)(a)) > >@@ -310,6 +345,10 @@ typedef U64 (*z900_trace_br_func) (int > #define MAX_REPORTED_MIPSRATE (250000000) /* instructions / second */ > #define MAX_REPORTED_SIOSRATE (10000) /* SIOs per second */ > >+/* Instruction count for a CPU */ >+#define INSTCOUNT(_regs) \ >+ ((_regs)->hostregs->prevcount + (_regs)->hostregs->instcount) >+ > /*-------------------------------------------------------------------*/ > /* Obtain/Release mainlock. */ > /* mainlock is only obtained by a CPU thread */ >@@ -541,4 +580,119 @@ typedef U64 (*z900_trace_br_func) (int > #define SET_THREAD_NAME(n) > #endif > >+#if !defined(NO_SETUID) >+ >+/* SETMODE(INIT) >+ * sets the saved uid to the effective uid, and >+ * sets the effective uid to the real uid, such >+ * that the program is running with normal user >+ * attributes, other then that it may switch to >+ * the saved uid by SETMODE(ROOT). This call is >+ * usually made upon entry to the setuid program. >+ * >+ * SETMODE(ROOT) >+ * sets the saved uid to the real uid, and >+ * sets the real and effective uid to the saved uid. >+ * A setuid root program will enter 'root mode' and >+ * will have all the appropriate access. >+ * >+ * SETMODE(USER) >+ * sets the real and effective uid to the uid of the >+ * caller. The saved uid will be the effective uid >+ * upon entry to the program (as before SETMODE(INIT)) >+ * >+ * SETMODE(TERM) >+ * sets real, effective and saved uid to the real uid >+ * upon entry to the program. This call will revoke >+ * any setuid access that the thread/process has. It >+ * is important to issue this call before an exec to a >+ * shell or other program that could introduce integrity >+ * exposures when running with root access. >+ */ >+ >+#if defined(HAVE_SYS_CAPABILITY_H) && defined(HAVE_SYS_PRCTL_H) && defined(OPTION_CAPABILITIES) >+ >+#define SETMODE(_x) >+#define DROP_PRIVILEGES(_capa) drop_privileges(_capa) >+#define DROP_ALL_CAPS() drop_all_caps() >+ >+#else >+ >+#define DROP_PRIVILEGES(_capa) >+#define DROP_ALL_CAPS() >+ >+#if defined(HAVE_SETRESUID) >+ >+#define _SETMODE_INIT \ >+do { \ >+ getresuid(&sysblk.ruid,&sysblk.euid,&sysblk.suid); \ >+ getresgid(&sysblk.rgid,&sysblk.egid,&sysblk.sgid); \ >+ setresuid(sysblk.ruid,sysblk.ruid,sysblk.euid); \ >+ setresgid(sysblk.rgid,sysblk.rgid,sysblk.egid); \ >+} while(0) >+ >+#define _SETMODE_ROOT \ >+do { \ >+ setresuid(sysblk.suid,sysblk.suid,sysblk.ruid); \ >+} while(0) >+ >+#define _SETMODE_USER \ >+do { \ >+ setresuid(sysblk.ruid,sysblk.ruid,sysblk.suid); \ >+} while(0) >+ >+#define _SETMODE_TERM \ >+do { \ >+ setresuid(sysblk.ruid,sysblk.ruid,sysblk.ruid); \ >+ setresgid(sysblk.rgid,sysblk.rgid,sysblk.rgid); \ >+} while(0) >+ >+#elif defined(HAVE_SETREUID) >+ >+#define _SETMODE_INIT \ >+do { \ >+ sysblk.ruid = getuid(); \ >+ sysblk.euid = geteuid(); \ >+ sysblk.rgid = getgid(); \ >+ sysblk.egid = getegid(); \ >+ setreuid(sysblk.euid, sysblk.ruid); \ >+ setregid(sysblk.egid, sysblk.rgid); \ >+} while (0) >+ >+#define _SETMODE_ROOT \ >+do { \ >+ setreuid(sysblk.ruid, sysblk.euid); \ >+ setregid(sysblk.rgid, sysblk.egid); \ >+} while (0) >+ >+#define _SETMODE_USER \ >+do { \ >+ setregid(sysblk.egid, sysblk.rgid); \ >+ setreuid(sysblk.euid, sysblk.ruid); \ >+} while (0) >+ >+#define _SETMODE_TERM \ >+do { \ >+ setuid(sysblk.ruid); \ >+ setgid(sysblk.rgid); \ >+} while (0) >+ >+#else /* defined(HAVE_SETRESUID) || defined(HAVE_SETEREUID) */ >+ >+#error Cannot figure out how to swap effective UID/GID, maybe you should define NO_SETUID? >+ >+#endif /* defined(HAVE_SETREUID) || defined(HAVE_SETRESUID) */ >+ >+#define SETMODE(_func) _SETMODE_ ## _func >+ >+#endif /* !defined(HAVE_SYS_CAPABILITY_H) */ >+ >+#else /* !defined(NO_SETUID) */ >+ >+#define SETMODE(_func) >+#define DROP_PRIVILEGES(_capa) >+#define DROP_ALL_CAPS() >+ >+#endif /* !defined(NO_SETUID) */ >+ > #endif // _HMACROS_H >diff -Naupr hercules-3.05/hostinfo.c hercules-20070717/hostinfo.c >--- hercules-3.05/hostinfo.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hostinfo.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,9 @@ > /* HOSTINFO.C (c) Copyright "Fish" (David B. Trout), 2002-2007 */ > >-// $Id: hostinfo.c,v 1.16 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hostinfo.c,v 1.17 2007/11/30 14:54:32 jmaynard Exp $ > > /* Released under the Q Public License */ >-/* (http://www.conmicro.cx/hercules/herclic.html) */ >+/* (http://www.hercules-390.org/herclic.html) */ > /* as modifications to Hercules. */ > > /*-------------------------------------------------------------------*/ >@@ -11,6 +11,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: hostinfo.c,v $ >+// Revision 1.17 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.16 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/hostinfo.h hercules-20070717/hostinfo.h >--- hercules-3.05/hostinfo.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hostinfo.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,16 +1,19 @@ > /* HOSTINFO.H (c) Copyright "Fish" (David B. Trout), 2002-2007 */ > > /* Released under the Q Public License */ >-/* (http://www.conmicro.cx/hercules/herclic.html) */ >+/* (http://www.hercules-390.org/herclic.html) */ > /* as modifications to Hercules. */ > >-// $Id: hostinfo.h,v 1.12 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hostinfo.h,v 1.13 2007/11/30 14:54:32 jmaynard Exp $ > > /*-------------------------------------------------------------------*/ > /* Header file contains host system information */ > /*-------------------------------------------------------------------*/ > > // $Log: hostinfo.h,v $ >+// Revision 1.13 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.12 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/hostopts.h hercules-20070717/hostopts.h >--- hercules-3.05/hostopts.h 2007-03-06 17:40:30.000000000 +0100 >+++ hercules-20070717/hostopts.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > /* HOSTOPTS.H -- HOST-specific features and options */ > /*-------------------------------------------------------------------*/ > >-// $Id: hostopts.h,v 1.15 2007/02/26 15:34:46 fish Exp $ >+// $Id: hostopts.h,v 1.17 2008/02/15 22:51:39 rbowler Exp $ > > // This header file #included by 'featall.h' and 'hercules.h' > >@@ -38,6 +38,12 @@ > */ > > // $Log: hostopts.h,v $ >+// Revision 1.17 2008/02/15 22:51:39 rbowler >+// Move Solaris specific definition of INADDR_NONE to hostopts.h >+// >+// Revision 1.16 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// > // Revision 1.15 2007/02/26 15:34:46 fish > // remove stupid fish prt spooler crap > // >@@ -223,6 +229,36 @@ > #define HOW_TO_IMPLEMENT_SH_COMMAND USE_FORK_API_FOR_SH_COMMAND > #endif > >+/*-------------------------------------------------------------------*/ >+/* Hard-coded Solaris-specific features and options... */ >+/*-------------------------------------------------------------------*/ >+#elif defined(__sun__) && defined(__svr4__) >+ >+#define __SOLARIS__ 1 >+ >+/* jbs 10/15/2003 need to define INADDR_NONE if using Solaris 10 >+ and not Solaris Nevada aka OpenSolaris */ >+#if !defined(INADDR_NONE) >+ #define INADDR_NONE 0xffffffffU >+#endif >+ >+#undef OPTION_SCSI_TAPE /* No SCSI tape support */ >+#undef OPTION_SCSI_ERASE_TAPE /* (NOT supported) */ >+#undef OPTION_SCSI_ERASE_GAP /* (NOT supported) */ >+#define DLL_IMPORT extern >+#define DLL_EXPORT >+/* #undef OPTION_PTTRACE maybe not, after all */ >+ >+#define MAX_DEVICE_THREADS 0 /* (0 == unlimited) */ >+#define MIXEDCASE_FILENAMES_ARE_UNIQUE /* ("Foo" and "fOo" unique) */ >+ >+#define DEFAULT_HERCPRIO 0 >+#define DEFAULT_TOD_PRIO -20 >+#define DEFAULT_CPU_PRIO 15 >+#define DEFAULT_DEV_PRIO 8 >+ >+#define HOW_TO_IMPLEMENT_SH_COMMAND USE_ANSI_SYSTEM_API_FOR_SH_COMMAND >+#define SET_CONSOLE_CURSOR_SHAPE_METHOD CURSOR_SHAPE_NOT_SUPPORTED > > /*-------------------------------------------------------------------*/ > /* Hard-coded Apple-specific features and options... */ >diff -Naupr hercules-3.05/hsccmd.c hercules-20070717/hsccmd.c >--- hercules-3.05/hsccmd.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hsccmd.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,10 +2,11 @@ > /* (c) Copyright "Fish" (David B. Trout), 2002-2007 */ > /* Execute Hercules System Commands */ > /* */ >-/* Released under the Q Public License (http://www.conmicro.cx/ */ >-/* hercules/herclic.html) as modifications to Hercules. */ >+/* Released under the Q Public License */ >+/* (http://www.hercules-390.org/herclic.html) as modifications to */ >+/* Hercules. */ > >-// $Id: hsccmd.c,v 1.219 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hsccmd.c,v 1.245 2008/07/16 11:05:10 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the various Hercules System Console */ >@@ -17,6 +18,93 @@ > /*-------------------------------------------------------------------*/ > > // $Log: hsccmd.c,v $ >+// Revision 1.245 2008/07/16 11:05:10 fish >+// automount delete command: fix MINOR memory leak >+// and add support for optional relative path resolution. >+// >+// Revision 1.244 2008/07/08 05:35:49 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.243 2008/05/28 16:38:34 fish >+// (fix typo in comment; no code was changed) >+// >+// Revision 1.242 2008/05/23 20:38:13 fish >+// Change device query calls to not ask for what they don't need >+// >+// Revision 1.241 2008/04/14 21:09:58 rbowler >+// Include C4xx,C6xx,C8xx instructions in icount display >+// >+// Revision 1.240 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.239 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.238 2008/03/07 17:46:17 ptl00 >+// Add pri, sec, home options to v command >+// >+// Revision 1.237 2008/02/12 08:42:15 fish >+// dyngui tweaks: new def devlist fmt, new debug_cd_cmd hook >+// >+// Revision 1.236 2008/01/25 00:50:18 gsmith >+// Fix invalidate_tlbe processing - Paul Leisy >+// >+// Revision 1.235 2008/01/18 16:19:07 rbowler >+// Help text for sfk command >+// >+// Revision 1.234 2008/01/11 21:33:21 fish >+// new 'ctc' command to enable/disable debug option on demand >+// >+// Revision 1.233 2008/01/04 02:28:51 gsmith >+// sf commands update >+// >+// Revision 1.232 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.231 2007/11/30 14:54:32 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// >+// Revision 1.230 2007/11/21 23:33:46 fish >+// remove dead #if 0 code >+// >+// Revision 1.229 2007/11/11 17:14:22 rbowler >+// Add help panrate command >+// >+// Revision 1.228 2007/08/27 20:21:03 rbowler >+// PSW command logmsg format correction >+// >+// Revision 1.227 2007/08/27 11:13:04 rbowler >+// Modify PSW fields by psw command (part 3) >+// >+// Revision 1.226 2007/08/26 21:04:45 rbowler >+// Modify PSW fields by psw command (part 2) >+// >+// Revision 1.225 2007/08/24 16:31:26 rbowler >+// Modify PSW fields by psw command (part 1) >+// >+// Revision 1.224 2007/08/24 12:05:10 rbowler >+// Help for SSD command, sundry punctuation and spelling corrections. >+// >+// Revision 1.223 2007/08/24 11:21:54 rbowler >+// Modify control registers by cr command >+// >+// Revision 1.222 2007/08/07 11:18:30 ivan >+// Remove #if statement within macro parameter that MSVC doesn't seem to like >+// >+// Revision 1.221 2007/08/06 16:48:20 ivan >+// Implement "PARM" option for IPL command (same as VM IPL PARM XXX) >+// Also add command helps for ipl, iplc, sysclear, sysreset >+// >+// Revision 1.220 2007/07/29 10:05:05 fish >+// Fix PR# 34/tape bug causing crash if non-tape devinit >+// > // Revision 1.219 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >@@ -120,6 +208,7 @@ > > #include "tapedev.h" > #include "dasdtab.h" >+#include "ctcadpt.h" > > /////////////////////////////////////////////////////////////////////// > // (forward references, etc) >@@ -440,7 +529,6 @@ int start_cmd(int argc, char *argv[], ch > int stopprt; > DEVBLK* dev; > char* devclass; >- char devnam[256]; > int rc; > > rc=parse_single_devnum(argv[1],&lcss,&devnum); >@@ -455,7 +543,7 @@ int start_cmd(int argc, char *argv[], ch > return -1; > } > >- (dev->hnd->query)(dev, &devclass, sizeof(devnam), devnam); >+ (dev->hnd->query)(dev, &devclass, 0, NULL); > > if (strcasecmp(devclass,"PRT")) > { >@@ -543,7 +631,6 @@ int stop_cmd(int argc, char *argv[], cha > U16 lcss; > DEVBLK* dev; > char* devclass; >- char devnam[256]; > int rc; > > rc=parse_single_devnum(argv[1],&lcss,&devnum); >@@ -558,7 +645,7 @@ int stop_cmd(int argc, char *argv[], cha > return -1; > } > >- (dev->hnd->query)(dev, &devclass, sizeof(devnam), devnam); >+ (dev->hnd->query)(dev, &devclass, 0, NULL); > > if (strcasecmp(devclass,"PRT")) > { >@@ -990,6 +1077,314 @@ int iodelay_cmd(int argc, char *argv[], > > #endif /*OPTION_IODELAY_KLUDGE*/ > >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+/////////////////////////////////////////////////////////////////////////////// >+/* automount_cmd -- show or update the tape AUTOMOUNT directories list */ >+ >+int automount_cmd(int argc, char *argv[], char *cmdline) >+{ >+ int rc; >+ >+ if (argc < 2) >+ { >+ logmsg(_("HHCPN200E Missing operand; enter 'HELP AUTOMOUNT' for syntax.\n")); >+ return -1; >+ } >+ >+ if (strcasecmp(argv[1],"list") == 0) >+ { >+ TAMDIR* pTAMDIR = sysblk.tamdir; >+ >+ if (argc != 2) >+ { >+ logmsg(_("HHCPN201E Invalid syntax; enter 'HELP AUTOMOUNT' for help.\n")); >+ return -1; >+ } >+ >+ if (!pTAMDIR) >+ { >+ logmsg(_("HHCPN202E Empty list.\n")); >+ return -1; >+ } >+ >+ // List all entries... >+ >+ for (; pTAMDIR; pTAMDIR = pTAMDIR->next) >+ logmsg(_("HHCPN203I \"%c%s\"\n") >+ ,pTAMDIR->rej ? '-' : '+' >+ ,pTAMDIR->dir >+ ); >+ return 0; >+ } >+ >+ if (strcasecmp(argv[1],"add") == 0) >+ { >+ char tamdir[MAX_PATH+1]; /* +1 for optional '+' or '-' prefix */ >+ TAMDIR* pTAMDIR = NULL; >+ int was_empty = (sysblk.tamdir == NULL); >+ >+ if (argc != 3) >+ { >+ logmsg(_("HHCPN204E Invalid syntax; enter 'HELP AUTOMOUNT' for help.\n")); >+ return -1; >+ } >+ >+ // Add the requested entry... >+ >+ strlcpy (tamdir, argv[2], sizeof(tamdir)); >+ rc = add_tamdir( tamdir, &pTAMDIR ); >+ >+ // Did that work? >+ >+ switch (rc) >+ { >+ default: /* (oops!) */ >+ { >+ logmsg( _("HHCPN205E **LOGIC ERROR** file \"%s\", line %d\n"), >+ __FILE__, __LINE__); >+ return -1; >+ } >+ >+ case 5: /* ("out of memory") */ >+ { >+ logmsg( _("HHCPN206E Out of memory!\n")); >+ return -1; >+ } >+ >+ case 1: /* ("unresolvable path") */ >+ case 2: /* ("path inaccessible") */ >+ { >+ logmsg( _("HHCPN207E Invalid AUTOMOUNT directory: \"%s\": %s\n"), >+ tamdir, strerror(errno)); >+ return -1; >+ } >+ >+ case 3: /* ("conflict w/previous") */ >+ { >+ logmsg( _("HHCPN208E AUTOMOUNT directory \"%s\"" >+ " conflicts with previous specification\n"), >+ tamdir); >+ return -1; >+ } >+ >+ case 4: /* ("duplicates previous") */ >+ { >+ logmsg( _("HHCPN209E AUTOMOUNT directory \"%s\"" >+ " duplicates previous specification\n"), >+ tamdir); >+ return -1; >+ } >+ >+ case 0: /* ("success") */ >+ { >+ logmsg(_("HHCPN210I %s%s AUTOMOUNT directory = \"%s\"\n"), >+ pTAMDIR->dir == sysblk.defdir ? "Default " : "", >+ pTAMDIR->rej ? "Disallowed" : "Allowed", >+ pTAMDIR->dir); >+ >+ /* Define default AUTOMOUNT directory if needed */ >+ >+ if (sysblk.defdir == NULL) >+ { >+ static char cwd[ MAX_PATH ]; >+ >+ VERIFY( getcwd( cwd, sizeof(cwd) ) != NULL ); >+ rc = strlen( cwd ); >+ if (cwd[rc-1] != *PATH_SEP) >+ strlcat (cwd, PATH_SEP, sizeof(cwd)); >+ >+ if (!(pTAMDIR = malloc( sizeof(TAMDIR) ))) >+ { >+ logmsg( _("HHCPN211E Out of memory!\n")); >+ sysblk.defdir = cwd; /* EMERGENCY! */ >+ } >+ else >+ { >+ pTAMDIR->dir = strdup (cwd); >+ pTAMDIR->len = strlen (cwd); >+ pTAMDIR->rej = 0; >+ pTAMDIR->next = sysblk.tamdir; >+ sysblk.tamdir = pTAMDIR; >+ sysblk.defdir = pTAMDIR->dir; >+ } >+ >+ logmsg(_("HHCPN212I Default Allowed AUTOMOUNT directory = \"%s\"\n"), >+ sysblk.defdir); >+ } >+ >+ return 0; >+ } >+ } >+ } >+ >+ if (strcasecmp(argv[1],"del") == 0) >+ { >+ char tamdir1[MAX_PATH+1] = {0}; // (resolved path) >+ char tamdir2[MAX_PATH+1] = {0}; // (expanded but unresolved path) >+ char workdir[MAX_PATH+1] = {0}; // (work) >+ char *tamdir = tamdir1; // (-> tamdir2 on retry) >+ >+ TAMDIR* pPrevTAMDIR = NULL; >+ TAMDIR* pCurrTAMDIR = sysblk.tamdir; >+ >+ int was_empty = (sysblk.tamdir == NULL); >+ >+ if (argc != 3) >+ { >+ logmsg(_("HHCPN213E Invalid syntax; enter 'HELP AUTOMOUNT' for help.\n")); >+ return -1; >+ } >+ >+ // Convert argument to absolute path ending with a slash >+ >+ strlcpy( tamdir2, argv[2], sizeof(tamdir2) ); >+ if (tamdir2[0] == '-') memmove (&tamdir2[0], &tamdir2[1], MAX_PATH); >+ else if (tamdir2[0] == '+') memmove (&tamdir2[0], &tamdir2[1], MAX_PATH); >+ >+#if defined(_MSVC_) >+ // (expand any embedded %var% environment variables) >+ rc = expand_environ_vars( tamdir2, workdir, MAX_PATH ); >+ if (rc == 0) >+ strlcpy (tamdir2, workdir, MAX_PATH); >+#endif // _MSVC_ >+ >+ if (0 >+#if defined(_MSVC_) >+ || tamdir2[1] == ':' // (fullpath given?) >+#else // !_MSVC_ >+ || tamdir2[0] == '/' // (fullpath given?) >+#endif // _MSVC_ >+ || tamdir2[0] == '.' // (relative path given?) >+ ) >+ tamdir1[0] = 0; // (then use just given spec) >+ else // (else prepend with default) >+ strlcpy( tamdir1, sysblk.defdir, sizeof(tamdir1) ); >+ >+ // (finish building path to be resolved) >+ strlcat( tamdir1, tamdir2, sizeof(tamdir1) ); >+ >+ // (try resolving it to an absolute path and >+ // append trailing path separator if needed) >+ >+ if (realpath(tamdir1, workdir) != NULL) >+ { >+ strlcpy (tamdir1, workdir, MAX_PATH); >+ rc = strlen( tamdir1 ); >+ if (tamdir1[rc-1] != *PATH_SEP) >+ strlcat (tamdir1, PATH_SEP, MAX_PATH); >+ tamdir = tamdir1; // (try tamdir1 first) >+ } >+ else >+ tamdir = tamdir2; // (try only tamdir2) >+ >+ rc = strlen( tamdir2 ); >+ if (tamdir2[rc-1] != *PATH_SEP) >+ strlcat (tamdir2, PATH_SEP, MAX_PATH); >+ >+ // Find entry to be deleted... >+ >+ for (;;) >+ { >+ for (pCurrTAMDIR = sysblk.tamdir, pPrevTAMDIR = NULL; >+ pCurrTAMDIR; >+ pPrevTAMDIR = pCurrTAMDIR, pCurrTAMDIR = pCurrTAMDIR->next) >+ { >+ if (strfilenamecmp( pCurrTAMDIR->dir, tamdir ) == 0) >+ { >+ int def = (sysblk.defdir == pCurrTAMDIR->dir); >+ >+ // Delete the found entry... >+ >+ if (pPrevTAMDIR) >+ pPrevTAMDIR->next = pCurrTAMDIR->next; >+ else >+ sysblk.tamdir = pCurrTAMDIR->next; >+ >+ free( pCurrTAMDIR->dir ); >+ free( pCurrTAMDIR ); >+ >+ // (point back to list begin) >+ pCurrTAMDIR = sysblk.tamdir; >+ >+ logmsg(_("HHCPN214I Ok.%s\n"), >+ pCurrTAMDIR ? "" : " (list now empty)"); >+ >+ // Default entry just deleted? >+ >+ if (def) >+ { >+ if (!pCurrTAMDIR) >+ sysblk.defdir = NULL; // (no default) >+ else >+ { >+ // Set new default entry... >+ >+ for (; pCurrTAMDIR; pCurrTAMDIR = pCurrTAMDIR->next) >+ { >+ if (pCurrTAMDIR->rej == 0) >+ { >+ sysblk.defdir = pCurrTAMDIR->dir; >+ break; >+ } >+ } >+ >+ // If we couldn't find an existing allowable >+ // directory entry to use as the new default, >+ // then add the current directory and use it. >+ >+ if (!pCurrTAMDIR) >+ { >+ static char cwd[ MAX_PATH ] = {0}; >+ >+ VERIFY( getcwd( cwd, sizeof(cwd) ) != NULL ); >+ rc = strlen( cwd ); >+ if (cwd[rc-1] != *PATH_SEP) >+ strlcat (cwd, PATH_SEP, sizeof(cwd)); >+ >+ if (!(pCurrTAMDIR = malloc( sizeof(TAMDIR) ))) >+ { >+ logmsg( _("HHCPN215E Out of memory!\n")); >+ sysblk.defdir = cwd; /* EMERGENCY! */ >+ } >+ else >+ { >+ pCurrTAMDIR->dir = strdup (cwd); >+ pCurrTAMDIR->len = strlen (cwd); >+ pCurrTAMDIR->rej = 0; >+ pCurrTAMDIR->next = sysblk.tamdir; >+ sysblk.tamdir = pCurrTAMDIR; >+ sysblk.defdir = pCurrTAMDIR->dir; >+ } >+ } >+ >+ logmsg(_("HHCPN216I Default Allowed AUTOMOUNT directory = \"%s\"\n"), >+ sysblk.defdir); >+ } >+ } >+ >+ return 0; // (success) >+ } >+ } >+ >+ // (not found; try tamdir2 if we haven't yet) >+ >+ if (tamdir == tamdir2) break; >+ tamdir = tamdir2; >+ } >+ >+ if (sysblk.tamdir == NULL) >+ logmsg(_("HHCPN217E Empty list.\n")); >+ else >+ logmsg(_("HHCPN218E Entry not found.\n")); >+ return -1; >+ } >+ >+ logmsg(_("HHCPN219E Unsupported function; enter 'HELP AUTOMOUNT' for syntax.\n")); >+ return 0; >+} >+ >+#endif /* OPTION_TAPE_AUTOMOUNT */ >+ > #if defined( OPTION_SCSI_TAPE ) > > /////////////////////////////////////////////////////////////////////// >@@ -1007,8 +1402,8 @@ static void try_scsi_refresh( DEVBLK* de > // once mounted has now been manually unmounted for example). > > // The reasons for why this is not possible is clearly explained >- // in the 'force_status_update' function in 'scsitape.c'. All we >- // can ever hope to do here is either cause an already-running >+ // in the 'update_status_scsitape' function in 'scsitape.c'. All >+ // we can ever hope to do here is either cause an already-running > // auto-mount thread to exit (if the user has just now disabled > // auto-mounts) or else cause one to automatically start (if they > // just enabled auto-mounts and there's no tape already mounted). >@@ -1019,10 +1414,15 @@ static void try_scsi_refresh( DEVBLK* de > // manually issue the 'devinit' command themselves, because, as > // explained, we unfortunately cannot refresh a mounted status > // for them (due to the inherent danger of doing so as explained >- // by the comments in 'force_status_update' in member scsitape.c). >+ // by comments in 'update_status_scsitape' in member scsitape.c). >+ >+ GENTMH_PARMS gen_parms; >+ >+ gen_parms.action = GENTMH_SCSI_ACTION_UPDATE_STATUS; >+ gen_parms.dev = dev; > > broadcast_condition( &dev->stape_exit_cond ); // (force exit if needed) >- dev->tmh->passedeot( dev ); // (maybe update status) >+ VERIFY( dev->tmh->generic( &gen_parms ) == 0 ); // (maybe update status) > usleep(10*1000); // (let thread start/end) > } > >@@ -1201,22 +1601,125 @@ int cckd_cmd(int argc, char *argv[], cha > return cckd_command(p,1); > } > >-#if defined(OPTION_W32_CTCI) > > /////////////////////////////////////////////////////////////////////// >-/* tt32stats command - display CTCI-W32 statistics */ >+/* ctc command - enable/disable CTC debugging */ > >-int tt32stats_cmd(int argc, char *argv[], char *cmdline) >+int ctc_cmd( int argc, char *argv[], char *cmdline ) > { >- UNREFERENCED(argc); >- UNREFERENCED(argv); >- UNREFERENCED(cmdline); >+ DEVBLK* dev; >+ CTCBLK* pCTCBLK; >+ LCSDEV* pLCSDEV; >+ LCSBLK* pLCSBLK; >+ U16 lcss; >+ U16 devnum; >+ BYTE onoff; > >- logmsg( _("HHCPN186E cmd deprecated; try 'tt32' instead\n") ); >- return -1; >+ UNREFERENCED( cmdline ); >+ >+ // Format: "ctc debug { on | off } [ <devnum> | ALL ]" >+ >+ if (0 >+ || argc < 3 >+ || strcasecmp( argv[1], "debug" ) != 0 >+ || (1 >+ && strcasecmp( argv[2], "on" ) != 0 >+ && strcasecmp( argv[2], "off" ) != 0 >+ ) >+ || argc > 4 >+ || (1 >+ && argc == 4 >+ && strcasecmp( argv[3], "ALL" ) != 0 >+ && parse_single_devnum( argv[3], &lcss, &devnum) < 0 >+ ) >+ ) >+ { >+ panel_command ("help ctc"); >+ return -1; >+ } >+ >+ onoff = (strcasecmp( argv[2], "on" ) == 0); >+ >+ if (argc < 4 || strcasecmp( argv[3], "ALL" ) == 0) >+ { >+ for ( dev = sysblk.firstdev; dev; dev = dev->nextdev ) >+ { >+ if (0 >+ || !dev->allocated >+ || 0x3088 != dev->devtype >+ || (CTC_CTCI != dev->ctctype && CTC_LCS != dev->ctctype) >+ ) >+ continue; >+ >+ if (CTC_CTCI == dev->ctctype) >+ { >+ pCTCBLK = dev->dev_data; >+ pCTCBLK->fDebug = onoff; >+ } >+ else // (CTC_LCS == dev->ctctype) >+ { >+ pLCSDEV = dev->dev_data; >+ pLCSBLK = pLCSDEV->pLCSBLK; >+ pLCSBLK->fDebug = onoff; >+ } >+ } >+ >+ logmsg( _("HHCPNXXXI CTC debugging now %s for all CTCI/LCS device groups.\n"), >+ onoff ? _("ON") : _("OFF") ); >+ } >+ else >+ { >+ int i; >+ DEVGRP* pDEVGRP; >+ DEVBLK* pDEVBLK; >+ >+ if (!(dev = find_device_by_devnum ( lcss, devnum ))) >+ { >+ devnotfound_msg( lcss, devnum ); >+ return -1; >+ } >+ >+ pDEVGRP = dev->group; >+ >+ if (CTC_CTCI == dev->ctctype) >+ { >+ for (i=0; i < pDEVGRP->acount; i++) >+ { >+ pDEVBLK = pDEVGRP->memdev[i]; >+ pCTCBLK = pDEVBLK->dev_data; >+ pCTCBLK->fDebug = onoff; >+ } >+ } >+ else if (CTC_LCS == dev->ctctype) >+ { >+ for (i=0; i < pDEVGRP->acount; i++) >+ { >+ pDEVBLK = pDEVGRP->memdev[i]; >+ pLCSDEV = pDEVBLK->dev_data; >+ pLCSBLK = pLCSDEV->pLCSBLK; >+ pLCSBLK->fDebug = onoff; >+ } >+ } >+ else >+ { >+ logmsg( _("HHCPN034E Device %d:%4.4X is not a CTCI or LCS device\n"), >+ lcss, devnum ); >+ return -1; >+ } >+ >+ logmsg( _("HHCPNXXXI CTC debugging now %s for %s device %d:%4.4X group.\n"), >+ onoff ? _("ON") : _("OFF"), >+ CTC_LCS == dev->ctctype ? "LCS" : "CTCI", >+ lcss, devnum ); >+ } >+ >+ return 0; > } > >-/* tt32stats command - display CTCI-W32 statistics */ >+#if defined(OPTION_W32_CTCI) >+ >+/////////////////////////////////////////////////////////////////////// >+/* tt32 command - control/query CTCI-W32 functionality */ > > int tt32_cmd( int argc, char *argv[], char *cmdline ) > { >@@ -1444,6 +1947,8 @@ int cd_cmd(int argc, char *argv[], char > chdir(path); > getcwd( cwd, sizeof(cwd) ); > logmsg("%s\n",cwd); >+ if (debug_cd_cmd) >+ debug_cd_cmd( cwd ); > return 0; > } > >@@ -1471,7 +1976,7 @@ int pwd_cmd(int argc, char *argv[], char > } > > /////////////////////////////////////////////////////////////////////// >-/* gpr command - display general purpose registers */ >+/* gpr command - display or alter general purpose registers */ > > int gpr_cmd(int argc, char *argv[], char *cmdline) > { >@@ -1585,15 +2090,16 @@ REGS *regs; > } > > /////////////////////////////////////////////////////////////////////// >-/* cr command - display control registers */ >+/* cr command - display or alter control registers */ > > int cr_cmd(int argc, char *argv[], char *cmdline) > { > REGS *regs; >+int cr_num; >+BYTE equal_sign, c; >+U64 cr_value; > > UNREFERENCED(cmdline); >- UNREFERENCED(argc); >- UNREFERENCED(argv); > > obtain_lock(&sysblk.cpulock[sysblk.pcpu]); > >@@ -1605,6 +2111,22 @@ REGS *regs; > } > regs = sysblk.regs[sysblk.pcpu]; > >+ if (argc > 1) >+ { >+ if (argc > 2 >+ || sscanf( argv[1], "%d%c%"I64_FMT"x%c", &cr_num, &equal_sign, &cr_value, &c ) != 3 >+ || '=' != equal_sign || cr_num < 0 || cr_num > 15) >+ { >+ release_lock(&sysblk.cpulock[sysblk.pcpu]); >+ logmsg( _("HHCPN164E Invalid format. .Enter \"help cr\" for help.\n")); >+ return 0; >+ } >+ if ( ARCH_900 == regs->arch_mode ) >+ regs->CR_G(cr_num) = (U64)cr_value; >+ else >+ regs->CR_G(cr_num) = (U32)cr_value; >+ } >+ > display_cregs (regs); > > release_lock(&sysblk.cpulock[sysblk.pcpu]); >@@ -1672,15 +2194,18 @@ REGS *regs; > } > > /////////////////////////////////////////////////////////////////////// >-/* psw command - display program status word */ >+/* psw command - display or alter program status word */ > > int psw_cmd(int argc, char *argv[], char *cmdline) > { > REGS *regs; >+BYTE c; >+U64 newia=0; >+int newam=0, newas=0, newcc=0, newcmwp=0, newpk=0, newpm=0, newsm=0; >+int updia=0, updas=0, updcc=0, updcmwp=0, updpk=0, updpm=0, updsm=0; >+int n, errflag, stopflag=0, modflag=0; > > UNREFERENCED(cmdline); >- UNREFERENCED(argc); >- UNREFERENCED(argv); > > obtain_lock(&sysblk.cpulock[sysblk.pcpu]); > >@@ -1692,6 +2217,199 @@ REGS *regs; > } > regs = sysblk.regs[sysblk.pcpu]; > >+ /* Process optional operands */ >+ for (n = 1; n < argc; n++) >+ { >+ modflag = 1; >+ errflag = 0; >+ if (strncasecmp(argv[n],"sm=",3) == 0) >+ { >+ /* PSW system mask operand */ >+ if (sscanf(argv[n]+3, "%x%c", &newsm, &c) == 1 >+ && newsm >= 0 && newsm <= 255) >+ updsm = 1; >+ else >+ errflag = 1; >+ } >+ else if (strncasecmp(argv[n],"pk=",3) == 0) >+ { >+ /* PSW protection key operand */ >+ if (sscanf(argv[n]+3, "%d%c", &newpk, &c) == 1 >+ && newpk >= 0 && newpk <= 15) >+ updpk = 1; >+ else >+ errflag = 1; >+ } >+ else if (strncasecmp(argv[n],"cmwp=",5) == 0) >+ { >+ /* PSW CMWP bits operand */ >+ if (sscanf(argv[n]+5, "%x%c", &newcmwp, &c) == 1 >+ && newcmwp >= 0 && newcmwp <= 15) >+ updcmwp = 1; >+ else >+ errflag = 1; >+ } >+ else if (strncasecmp(argv[n],"as=",3) == 0) >+ { >+ /* PSW address-space control operand */ >+ if (strcasecmp(argv[n]+3,"pri") == 0) >+ newas = PSW_PRIMARY_SPACE_MODE; >+ else if (strcmp(argv[n]+3,"ar") == 0) >+ newas = PSW_ACCESS_REGISTER_MODE; >+ else if (strcmp(argv[n]+3,"sec") == 0) >+ newas = PSW_SECONDARY_SPACE_MODE; >+ else if (strcmp(argv[n]+3,"home") == 0) >+ newas = PSW_HOME_SPACE_MODE; >+ else >+ errflag = 1; >+ if (errflag == 0) updas = 1; >+ } >+ else if (strncasecmp(argv[n],"cc=",3) == 0) >+ { >+ /* PSW condition code operand */ >+ if (sscanf(argv[n]+3, "%d%c", &newcc, &c) == 1 >+ && newcc >= 0 && newcc <= 3) >+ updcc = 1; >+ else >+ errflag = 1; >+ } >+ else if (strncasecmp(argv[n],"pm=",3) == 0) >+ { >+ /* PSW program mask operand */ >+ if (sscanf(argv[n]+3, "%x%c", &newpm, &c) == 1 >+ && newpm >= 0 && newpm <= 15) >+ updpm = 1; >+ else >+ errflag = 1; >+ } >+ else if (strncasecmp(argv[n],"am=",3) == 0) >+ { >+ /* PSW addressing mode operand */ >+ if (strcmp(argv[n]+3,"24") == 0) >+ newam = 24; >+ else if (strcmp(argv[n]+3,"31") == 0 >+ && (sysblk.arch_mode == ARCH_390 >+ || sysblk.arch_mode == ARCH_900)) >+ newam = 31; >+ else if (strcmp(argv[n]+3,"64") == 0 >+ && sysblk.arch_mode == ARCH_900) >+ newam = 64; >+ else >+ errflag = 1; >+ } >+ else if (strncasecmp(argv[n],"ia=",3) == 0) >+ { >+ /* PSW instruction address operand */ >+ if (sscanf(argv[n]+3, "%"I64_FMT"x%c", &newia, &c) == 1) >+ updia = 1; >+ else >+ errflag = 1; >+ } >+ else /* unknown operand keyword */ >+ errflag = 1; >+ >+ /* Error message if this operand was invalid */ >+ if (errflag) >+ { >+ logmsg( _("HHCPN165E Invalid operand %s\n"), argv[n]); >+ stopflag = 1; >+ } >+ } /* end for(n) */ >+ >+ /* Finish now if any errors occurred */ >+ if (stopflag) >+ { >+ release_lock(&sysblk.cpulock[sysblk.pcpu]); >+ return 0; >+ } >+ >+ /* Update the PSW system mask, if specified */ >+ if (updsm) >+ { >+ regs->psw.sysmask = newsm; >+ } >+ >+ /* Update the PSW protection key, if specified */ >+ if (updpk) >+ { >+ regs->psw.pkey = newpk << 4; >+ } >+ >+ /* Update the PSW CMWP bits, if specified */ >+ if (updcmwp) >+ { >+ regs->psw.states = newcmwp; >+ } >+ >+ /* Update the PSW address-space control mode, if specified */ >+ if (updas >+ && (ECMODE(®s->psw) >+ || sysblk.arch_mode == ARCH_390 >+ || sysblk.arch_mode == ARCH_900)) >+ { >+ regs->psw.asc = newas; >+ } >+ >+ /* Update the PSW condition code, if specified */ >+ if (updcc) >+ { >+ regs->psw.cc = newcc; >+ } >+ >+ /* Update the PSW program mask, if specified */ >+ if (updpm) >+ { >+ regs->psw.progmask = newpm; >+ } >+ >+ /* Update the PSW addressing mode, if specified */ >+ switch(newam) { >+ case 64: >+ regs->psw.amode = regs->psw.amode64 = 1; >+ regs->psw.AMASK_G = AMASK64; >+ break; >+ case 31: >+ regs->psw.amode = 1; >+ regs->psw.amode64 = 0; >+ regs->psw.AMASK_G = AMASK31; >+ break; >+ case 24: >+ regs->psw.amode = regs->psw.amode64 = 0; >+ regs->psw.AMASK_G = AMASK24; >+ break; >+ } /* end switch(newam) */ >+ >+ /* Update the PSW instruction address, if specified */ >+ if (updia) >+ { >+ regs->psw.IA_G = newia; >+ } >+ >+ /* If any modifications were made, reapply the addressing mode mask >+ to the instruction address and invalidate the instruction pointer */ >+ if (modflag) >+ { >+ regs->psw.IA_G &= regs->psw.AMASK_G; >+ regs->aie = NULL; >+ } >+ >+ /* Display the PSW field by field */ >+ logmsg("psw sm=%2.2X pk=%d cmwp=%X as=%s cc=%d pm=%X am=%s ia=%"I64_FMT"X\n", >+ regs->psw.sysmask, >+ regs->psw.pkey >> 4, >+ regs->psw.states, >+ (regs->psw.asc == PSW_PRIMARY_SPACE_MODE ? "pri" : >+ regs->psw.asc == PSW_ACCESS_REGISTER_MODE ? "ar" : >+ regs->psw.asc == PSW_SECONDARY_SPACE_MODE ? "sec" : >+ regs->psw.asc == PSW_HOME_SPACE_MODE ? "home" : "???"), >+ regs->psw.cc, >+ regs->psw.progmask, >+ (regs->psw.amode == 0 && regs->psw.amode64 == 0 ? "24" : >+ regs->psw.amode == 1 && regs->psw.amode64 == 0 ? "31" : >+ regs->psw.amode == 1 && regs->psw.amode64 == 1 ? "64" : "???"), >+ regs->psw.IA_G); >+ >+ /* Display the PSW */ > display_psw (regs); > > release_lock(&sysblk.cpulock[sysblk.pcpu]); >@@ -2057,6 +2775,12 @@ BYTE c; > int rc; /* Return code */ > > int i; >+ >+#if defined(OPTION_IPLPARM) >+int j; >+size_t maxb; >+#endif >+ > U16 lcss; > U16 devnum; > char *cdev, *clcss; >@@ -2067,6 +2791,35 @@ char *cdev, *clcss; > missing_devnum(); > return -1; > } >+#if defined(OPTION_IPLPARM) >+#define MAXPARMSTRING sizeof(sysblk.iplparmstring) >+ sysblk.haveiplparm=0; >+ maxb=0; >+ if(argc>2) >+ { >+ if(strcasecmp(argv[2],"parm")==0) >+ { >+ memset(sysblk.iplparmstring,0,MAXPARMSTRING); >+ sysblk.haveiplparm=1; >+ for(i=3;i<argc && maxb<MAXPARMSTRING;i++) >+ { >+ if(i!=3) >+ { >+ sysblk.iplparmstring[maxb++]=0x40; >+ } >+ for(j=0;j<(int)strlen(argv[i]) && maxb<MAXPARMSTRING;j++) >+ { >+ if(islower(argv[i][j])) >+ { >+ argv[i][j]=toupper(argv[i][j]); >+ } >+ sysblk.iplparmstring[maxb]=host_to_guest(argv[i][j]); >+ maxb++; >+ } >+ } >+ } >+ } >+#endif > > OBTAIN_INTLOCK(NULL); > >@@ -2612,10 +3365,6 @@ BYTE c; > > if (argc < 2) > { >-#if 0 >- logmsg( _("HHCPN065E Missing argument(s)\n") ); >- return -1; >-#else // fishtest > if (sysblk.pgminttr == 0xFFFFFFFFFFFFFFFFULL) > logmsg("pgmtrace == all\n"); > else if (sysblk.pgminttr == 0) >@@ -2636,7 +3385,6 @@ BYTE c; > ); > } > return 0; >-#endif > } > > if (sscanf(argv[1], "%x%c", &rupt_num, &c) != 1) >@@ -2958,16 +3706,17 @@ char *devascii; > DEVBLK *dev; /* -> Device block */ > U16 devnum; /* Device number */ > U16 lcss; /* Logical CSS */ >-int scan = 0; /* 1=Device name is `*' */ >-int n = 0; /* Number devices scanned */ > int flag = 1; /* sf- flag (default merge) */ >+int level = 2; /* sfk level (default 2) */ >+TID tid; /* sf command thread id */ >+char c; /* work for sscan */ > > UNREFERENCED(cmdline); > >- if (strlen(argv[0]) < 3 || strchr ("+-cd", argv[0][2]) == NULL) >+ if (strlen(argv[0]) < 3 || strchr ("+-cdk", argv[0][2]) == NULL) > { > logmsg( _("HHCPN091E Command must be 'sf+', 'sf-', " >- "'sfc', or 'sfd'\n") ); >+ "'sfc', 'sfk' or 'sfd'\n") ); > return -1; > } > >@@ -2998,7 +3747,7 @@ int flag = 1; > logmsg( _("HHCPN081E No cckd devices found\n") ); > return -1; > } >- scan = 1; >+ dev = NULL; > } > else > { >@@ -3032,6 +3781,17 @@ int flag = 1; > argv++; argc--; > } > >+ /* For `sfk' the operand is an integer -1 .. 4 */ >+ if (action == 'k' && argc > 1) >+ { >+ if (sscanf(argv[1], "%d%c", &level, &c) != 1 || level < -1 || level > 4) >+ { >+ logmsg( _("HHCPN087E Operand must be a number -1 .. 4\n")); >+ return -1; >+ } >+ argv++; argc--; >+ } >+ > /* No other operands allowed */ > if (argc > 1) > { >@@ -3039,32 +3799,51 @@ int flag = 1; > return -1; > } > >- /* Perform the action */ >- while (dev) >+ /* Set sf- flags in either cckdblk or the cckd extension */ >+ if (action == '-') > { >- if (scan) logmsg( _("HHCPN085I Processing device %d:%4.4X\n"), >- SSID_TO_LCSS(dev->ssid), dev->devnum ); >- >- switch (action) { >- case '+': cckd_sf_add (dev); >+ if (dev) >+ { >+ CCKDDASD_EXT *cckd = dev->cckd_ext; >+ cckd->sfmerge = flag == 1; >+ cckd->sfforce = flag == 2; >+ } >+ else >+ { >+ cckdblk.sfmerge = flag == 1; >+ cckdblk.sfforce = flag == 2; >+ } >+ } >+ /* Set sfk level in either cckdblk or the cckd extension */ >+ else if (action == 'k') >+ { >+ if (dev) >+ { >+ CCKDDASD_EXT *cckd = dev->cckd_ext; >+ cckd->sflevel = level; >+ } >+ else >+ cckdblk.sflevel = level; >+ } >+ >+ /* Process the command */ >+ switch (action) { >+ case '+': if (create_thread(&tid, &sysblk.detattr, cckd_sf_add, dev, "sf+ command")) >+ cckd_sf_add(dev); > break; >- case '-': cckd_sf_remove (dev, flag); >+ case '-': if (create_thread(&tid, &sysblk.detattr, cckd_sf_remove, dev, "sf- command")) >+ cckd_sf_remove(dev); > break; >- case 'c': cckd_sf_comp (dev); >+ case 'c': if (create_thread(&tid, &sysblk.detattr, cckd_sf_comp, dev, "sfc command")) >+ cckd_sf_comp(dev); > break; >- case 'd': cckd_sf_stats (dev); >+ case 'd': if (create_thread(&tid, &sysblk.detattr, cckd_sf_stats, dev, "sfd command")) >+ cckd_sf_stats(dev); > break; >- } >- n++; >- >- /* Next cckd device if scanning */ >- if (scan) >- for (dev=dev->nextdev; dev && !dev->cckd_ext; dev=dev->nextdev); >- else dev = NULL; >- >- } /* while (dev) */ >- >- if (scan) logmsg( _("HHCPN092I %d devices processed\n"), n ); >+ case 'k': if (create_thread(&tid, &sysblk.detattr, cckd_sf_chk, dev, "sfk command")) >+ cckd_sf_chk(dev); >+ break; >+ } > > return 0; > } >@@ -3119,11 +3898,20 @@ char **init_argv; > /* Prevent accidental re-init'ing of already loaded tape drives */ > if (nomountedtapereinit) > { >- if (0 >- || TAPEDEVT_SCSITAPE == dev->tapedevt >- || (argc >= 3 && strcmp(argv[2], TAPE_UNLOADED) != 0) >+ char* devclass; >+ >+ ASSERT( dev->hnd && dev->hnd->query ); >+ dev->hnd->query( dev, &devclass, 0, NULL ); >+ >+ if (1 >+ && strcmp(devclass,"TAPE") == 0 >+ && (0 >+ || TAPEDEVT_SCSITAPE == dev->tapedevt >+ || (argc >= 3 && strcmp(argv[2], TAPE_UNLOADED) != 0) >+ ) > ) > { >+ ASSERT( dev->tmh && dev->tmh->tapeloaded ); > if (dev->tmh->tapeloaded( dev, NULL, 0 )) > { > release_lock (&dev->lock); >@@ -3624,7 +4412,7 @@ int ipending_cmd(int argc, char *argv[], > logmsg( _(" CPU%4.4X: state %s\n"), > sysblk.regs[i]->cpuad,states[sysblk.regs[i]->cpustate]); > logmsg( _(" CPU%4.4X: instcount %" I64_FMT "d\n"), >- sysblk.regs[i]->cpuad,(long long)sysblk.regs[i]->instcount); >+ sysblk.regs[i]->cpuad,(long long)INSTCOUNT(sysblk.regs[i])); > logmsg( _(" CPU%4.4X: siocount %" I64_FMT "d\n"), > sysblk.regs[i]->cpuad,(long long)sysblk.regs[i]->siototal); > copy_psw(sysblk.regs[i], curpsw); >@@ -4068,6 +4856,72 @@ int icount_cmd(int argc, char *argv[], c > } > break; > } >+ case 0xC4: >+ { >+ for(i2 = 0; i2 < 16; i2++) >+ { >+ if(sysblk.imapc4[i2]) >+ { >+ opcode1[i] = i1; >+ opcode2[i] = i2; >+ count[i++] = sysblk.imapc4[i2]; >+ total += sysblk.imapc4[i2]; >+ if(i == 499) >+ { >+ logmsg("Sorry, too many instructions\n"); >+ free(opcode1); >+ free(opcode2); >+ free(count); >+ return 0; >+ } >+ } >+ } >+ break; >+ } >+ case 0xC6: >+ { >+ for(i2 = 0; i2 < 16; i2++) >+ { >+ if(sysblk.imapc6[i2]) >+ { >+ opcode1[i] = i1; >+ opcode2[i] = i2; >+ count[i++] = sysblk.imapc6[i2]; >+ total += sysblk.imapc6[i2]; >+ if(i == 499) >+ { >+ logmsg("Sorry, too many instructions\n"); >+ free(opcode1); >+ free(opcode2); >+ free(count); >+ return 0; >+ } >+ } >+ } >+ break; >+ } >+ case 0xC8: >+ { >+ for(i2 = 0; i2 < 16; i2++) >+ { >+ if(sysblk.imapc8[i2]) >+ { >+ opcode1[i] = i1; >+ opcode2[i] = i2; >+ count[i++] = sysblk.imapc8[i2]; >+ total += sysblk.imapc8[i2]; >+ if(i == 499) >+ { >+ logmsg("Sorry, too many instructions\n"); >+ free(opcode1); >+ free(opcode2); >+ free(count); >+ return 0; >+ } >+ } >+ } >+ break; >+ } > case 0xE3: > { > for(i2 = 0; i2 < 256; i2++) >@@ -4299,6 +5153,21 @@ int icount_cmd(int argc, char *argv[], c > logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%10" I64_FMT "u\t(%2d%)\n", opcode1[i1], opcode2[i1], count[i1], (int) (count[i1] * 100 / total)); > break; > } >+ case 0xC4: >+ { >+ logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%10" I64_FMT "u\t(%2d%)\n", opcode1[i1], opcode2[i1], count[i1], (int) (count[i1] * 100 / total)); >+ break; >+ } >+ case 0xC6: >+ { >+ logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%10" I64_FMT "u\t(%2d%)\n", opcode1[i1], opcode2[i1], count[i1], (int) (count[i1] * 100 / total)); >+ break; >+ } >+ case 0xC8: >+ { >+ logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%10" I64_FMT "u\t(%2d%)\n", opcode1[i1], opcode2[i1], count[i1], (int) (count[i1] * 100 / total)); >+ break; >+ } > case 0xE3: > { > logmsg(" INST=%2.2X%2.2X\tCOUNT=%10" I64_FMT "u\t(%2d%)\n", opcode1[i1], opcode2[i1], count[i1], (int) (count[i1] * 100 / total)); >@@ -4407,6 +5276,24 @@ int icount_cmd(int argc, char *argv[], c > logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%" I64_FMT "u\n", /*@Z9*/ > i1, i2, sysblk.imapc2[i2]); /*@Z9*/ > break; /*@Z9*/ >+ case 0xC4: >+ for(i2 = 0; i2 < 16; i2++) >+ if(sysblk.imapc4[i2]) >+ logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%" I64_FMT "u\n", >+ i1, i2, sysblk.imapc4[i2]); >+ break; >+ case 0xC6: >+ for(i2 = 0; i2 < 16; i2++) >+ if(sysblk.imapc6[i2]) >+ logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%" I64_FMT "u\n", >+ i1, i2, sysblk.imapc6[i2]); >+ break; >+ case 0xC8: >+ for(i2 = 0; i2 < 16; i2++) >+ if(sysblk.imapc8[i2]) >+ logmsg(" INST=%2.2Xx%1.1X\tCOUNT=%" I64_FMT "u\n", >+ i1, i2, sysblk.imapc8[i2]); >+ break; > case 0xE3: > for(i2 = 0; i2 < 256; i2++) > if(sysblk.imape3[i2]) >@@ -5067,7 +5954,15 @@ DLL_EXPORT int aia_cmd(int argc, char *a > } > > /////////////////////////////////////////////////////////////////////// >-/* tlb - display tlb table */ >+/* tlb - display tlb table */ >+/* */ >+/* NOTES: */ >+/* The "tlbid" field is part of TLB_VADDR so it must be extracted */ >+/* whenever it's used or displayed. The TLB_VADDR does not contain */ >+/* all of the effective address bits so they are created on-the-fly*/ >+/* with (i << shift) The "main" field of the tlb contains an XOR */ >+/* hash of effective address. So MAINADDR() macro is used to remove*/ >+/* the hash before it's displayed. */ > > int tlb_cmd(int argc, char *argv[], char *cmdline) > { >@@ -5108,7 +6003,10 @@ int tlb_cmd(int argc, char *argv[], char > regs->tlb.TLB_PTE_G(i),(int)(regs->tlb.TLB_VADDR_G(i) & bytemask), > regs->tlb.common[i],regs->tlb.protect[i], > (regs->tlb.acc[i] & ACC_READ) != 0,(regs->tlb.acc[i] & ACC_WRITE) != 0, >- regs->tlb.skey[i],regs->tlb.main[i] - regs->mainstor); >+ regs->tlb.skey[i], >+ MAINADDR(regs->tlb.main[i], >+ ((regs->tlb.TLB_VADDR_G(i) & pagemask) | (i << shift))) >+ - regs->mainstor); > matches += ((regs->tlb.TLB_VADDR(i) & bytemask) == regs->tlbID); > } > logmsg("%d tlbID matches\n", matches); >@@ -5133,7 +6031,10 @@ int tlb_cmd(int argc, char *argv[], char > regs->tlb.TLB_PTE_G(i),(int)(regs->tlb.TLB_VADDR_G(i) & bytemask), > regs->tlb.common[i],regs->tlb.protect[i], > (regs->tlb.acc[i] & ACC_READ) != 0,(regs->tlb.acc[i] & ACC_WRITE) != 0, >- regs->tlb.skey[i],regs->tlb.main[i]); >+ regs->tlb.skey[i], >+ MAINADDR(regs->tlb.main[i], >+ ((regs->tlb.TLB_VADDR_G(i) & pagemask) | (i << shift))) >+ - regs->mainstor); > matches += ((regs->tlb.TLB_VADDR(i) & bytemask) == regs->tlbID); > } > logmsg("SIE: %d tlbID matches\n", matches); >@@ -5193,13 +6094,13 @@ int count_cmd(int argc, char *argv[], ch > { > for (i = 0; i < MAX_CPU; i++) > if (IS_CPU_ONLINE(i)) >- sysblk.regs[i]->instcount = 0; >+ sysblk.regs[i]->instcount = sysblk.regs[i]->prevcount = 0; > for (i = 0; i < OPTION_COUNTING; i++) > sysblk.count[i] = 0; > } > for (i = 0; i < MAX_CPU; i++) > if (IS_CPU_ONLINE(i)) >- instcount += sysblk.regs[i]->instcount; >+ instcount += INSTCOUNT(sysblk.regs[i]); > logmsg (" i: %12" I64_FMT "d\n", instcount); > > for (i = 0; i < OPTION_COUNTING; i++) >@@ -5461,7 +6362,7 @@ CMDTAB; > /////////////////////////////////////////////////////////////////////// > /////////////////////////////////////////////////////////////////////// > /////////////////////////////////////////////////////////////////////// >-// Define all panel command here... >+// Define all panel commands here... > > int ListAllCommands (int argc, char *argv[], char *cmdline); /*(forward reference)*/ > int HelpCommand (int argc, char *argv[], char *cmdline); /*(forward reference)*/ >@@ -5522,11 +6423,11 @@ COMMAND ( "sysreset", sysr_cmd, "I > COMMAND ( "sysclear", sysc_cmd, "Issue SYSTEM Clear Reset manual operation" ) > COMMAND ( "store", store_cmd, "store CPU status at absolute zero\n" ) > >-COMMAND ( "psw", psw_cmd, "display program status word" ) >+COMMAND ( "psw", psw_cmd, "display or alter program status word" ) > COMMAND ( "gpr", gpr_cmd, "display or alter general purpose registers" ) > COMMAND ( "fpr", fpr_cmd, "display floating point registers" ) > COMMAND ( "fpc", fpc_cmd, "display floating point control register" ) >-COMMAND ( "cr", cr_cmd, "display control registers" ) >+COMMAND ( "cr", cr_cmd, "display or alter control registers" ) > COMMAND ( "ar", ar_cmd, "display access registers" ) > COMMAND ( "pr", pr_cmd, "display prefix register" ) > COMMAND ( "timerint", timerint_cmd, "display or set timers update interval" ) >@@ -5546,6 +6447,9 @@ COMMAND ( "devinit", devinit_cmd, "r > COMMAND ( "devlist", devlist_cmd, "list device or all devices\n" ) > COMMAND ( "qd", qd_cmd, "query dasd\n" ) > >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+COMMAND ( "automount", automount_cmd, "show/update allowable tape automount directories\n" ) >+#endif /* OPTION_TAPE_AUTOMOUNT */ > #if defined( OPTION_SCSI_TAPE ) > COMMAND ( "scsimount", scsimount_cmd, "automatic SCSI tape mounts\n" ) > #endif /* defined( OPTION_SCSI_TAPE ) */ >@@ -5589,8 +6493,8 @@ COMMAND ( "lsdep", lsdep_cmd, "l > #ifdef OPTION_IODELAY_KLUDGE > COMMAND ( "iodelay", iodelay_cmd, "display or set I/O delay value" ) > #endif >+COMMAND ( "ctc", ctc_cmd, "enable/disable CTC debugging" ) > #if defined(OPTION_W32_CTCI) >-COMMAND ( "tt32stats", tt32stats_cmd, "(deprecated; use 'tt32' cmd instead)" ) > COMMAND ( "tt32", tt32_cmd, "control/query CTCI-W32 functionality" ) > #endif > COMMAND ( "toddrag", toddrag_cmd, "display or set TOD clock drag factor" ) >@@ -5713,9 +6617,9 @@ int ProcessPanelCommand (char* pszCmdLin > if (0 > || !strncasecmp(pszSaveCmdLine,"sf+",3) > || !strncasecmp(pszSaveCmdLine,"sf-",3) >- || !strncasecmp(pszSaveCmdLine,"sf=",3) > || !strncasecmp(pszSaveCmdLine,"sfc",3) > || !strncasecmp(pszSaveCmdLine,"sfd",3) >+ || !strncasecmp(pszSaveCmdLine,"sfk",3) > ) > { > rc = ShadowFile_cmd(cmd_argc,(char**)cmd_argv,pszSaveCmdLine); >@@ -5777,8 +6681,8 @@ int ListAllCommands(int argc, char *argv > > logmsg( " %-9.9s %s \n", "sf+dev", _("add shadow file") ); > logmsg( " %-9.9s %s \n", "sf-dev", _("delete shadow file") ); >- logmsg( " %-9.9s %s \n", "sf=dev ..", _("rename shadow file") ); > logmsg( " %-9.9s %s \n", "sfc", _("compress shadow files") ); >+ logmsg( " %-9.9s %s \n", "sfk", _("check shadow files") ); > logmsg( " %-9.9s %s \n", "sfd", _("display shadow file stats") ); > > logmsg("\n"); >@@ -5814,7 +6718,7 @@ HELPTAB; > > HELPTAB HelpTab[] = > { >-/* command additional hep text... >+/* command additional help text... > (max 9 chars) > */ > CMDHELP ( "*", "The '*' comment command simply provides a convenient means\n" >@@ -5830,6 +6734,13 @@ CMDHELP ( "help", "Enter \"help cmd > "parameters and is not meant to replace reading the documentation.\n" > ) > >+CMDHELP ( "ctc", "Format: \"ctc debug { on | off } [ <devnum> | ALL ]\".\n\n" >+ >+ "Enables/disables debug packet tracing for the specified CTCI/LCS\n" >+ "device group(s) identified by <devnum> or for all CTCI/LCS device\n" >+ "groups if <devnum> is not specified or specified as 'ALL'.\n" >+ ) >+ > #if defined( OPTION_W32_CTCI ) > CMDHELP ( "tt32", "Format: \"tt32 debug | nodebug | stats <devnum>\".\n\n" > >@@ -5838,6 +6749,23 @@ CMDHELP ( "tt32", "Format: \"tt32 > ) > #endif /* defined( OPTION_W32_CTCI ) */ > >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ >+CMDHELP ( "automount", "Format: \"automount { add <dir> | del <dir> | list }\".\n\n" >+ >+ "Adds or deletes entries from the list of allowable/unallowable tape\n" >+ "automount directories, or lists all currently defined list entries,\n" >+ "if any.\n" >+ "\n" >+ "The format of the <dir> directory operand for add/del operations is\n" >+ "identical to that as described in the documentation for the AUTOMOUNT\n" >+ "configuration file statement (i.e. prefix with '+' or '-' as needed).\n" >+ "\n" >+ "The automount feature is approriately enabled or disabled for all tape\n" >+ "devices as needed depending on the updated empty/non-empty list state.\n" >+ ) >+#endif /* OPTION_TAPE_AUTOMOUNT */ >+ > #if defined( OPTION_SCSI_TAPE ) > CMDHELP ( "scsimount", "Format: \"scsimount [ no | yes | 0-99 ]\".\n\n" > >@@ -5892,6 +6820,33 @@ CMDHELP ( "start", "Entering the 'st > "printer device <devn>.\n" > ) > >+#if defined(OPTION_IPLPARM) >+CMDHELP ( "ipl", "Format: \"ipl nnnn [parm xxxxxxxxxxxxxx]\"\n" >+ "Performs the Initial Program Load manual control function. The operand 'nnnn'\n" >+ "can either be a device address or the name of a .ins file to be loaded.\n" >+ "An optional 'parm' keyword followed by a string can also be passed to the IPL\n" >+ "command processor. The string will be loaded into the low-order 32 bits of the\n" >+ "general purpose registers (4 characters per register for up to 64 bytes).\n" >+ "The PARM option behaves similarly to the VM IPL command.\n" >+ ) >+#else >+CMDHELP ( "ipl", "Format: \"ipl nnnn\"\n" >+ "Performs the Initial Program Load manual control function. The operand 'nnnn'\n" >+ "can either be a device address or the name of a .ins file to be loaded.\n" >+ ) >+#endif >+CMDHELP ( "iplc", "Performs the Load Clear manual control function. See \"ipl\".\n") >+ >+CMDHELP ( "sysreset", "Performs the System Reset manual control function. A CPU and I/O\n" >+ "subsystem reset are performed.\n") >+ >+CMDHELP ( "sysclear", "Performs the System Reset Clear manual control function. Same as\n" >+ "the \"sysreset\" command but also clears main storage to 0. Also, registers\n" >+ "control registers, etc.. are reset to their initial value. At this\n" >+ "point, the system is essentially in the same state as it was just after\n" >+ "having been started\n") >+ >+ > CMDHELP ( "stop", "Entering the 'stop' command by itself simply stops a running\n" > "CPU, whereas 'stop <devn>' presses the virtual stop button on\n" > "printer device <devn>, usually causing an INTREQ.\n" >@@ -5907,20 +6862,47 @@ CMDHELP ( "!message", "To enter a syste > "priority command on the hercules console, simply prefix the command\n" > "with an exclamation point '!'.\n" > ) >+ >+CMDHELP ( "ssd", "The SSD (signal shutdown) command signals an imminent hypervisor shutdown to\n" >+ "the guest. Guests who support this are supposed to perform a shutdown upon\n" >+ "receiving this request.\n" >+ "An implicit ssd command is given on a hercules \"quit\" command if the guest\n" >+ "supports ssd. In that case hercules shutdown will be delayed until the guest\n" >+ "has shutdown or a 2nd quit command is given.\n" >+ ) > #endif > >-CMDHELP ( "gpr", "Format: gpr [nn=xxxxxxxxxxxxxxxx]\" where 'nn' is the optional register\n" >+CMDHELP ( "psw", "Format: \"psw [operand ...]\" where 'operand ...' is one or more optional\n" >+ "parameters which modify the contents of the Program Status Word.\n" >+ "sm=xx modifies the PSW system mask (xx is 2 hex digits)\n" >+ "pk=n modifies the PSW protection key (n is decimal 0 to 15)\n" >+ "cmwp=x modifies the EC/M/W/P bits of the PSW (x is one hex digit)\n" >+ "as=pri|sec|ar|home modifies the PSW address-space control bits\n" >+ "cc=n modifies the PSW condition code (n is decimal 0 to 3)\n" >+ "pm=x modifies the PSW program mask (x is one hex digit)\n" >+ "ia=xxx modifies the PSW instruction address (xxx is 1 to 16 hex digits)\n" >+ "as=24|31|64 modifies the addressing mode bits of the PSW\n" >+ "Enter \"psw\" by itself to display the current PSW without altering it.\n" >+ ) >+ >+CMDHELP ( "gpr", "Format: \"gpr [nn=xxxxxxxxxxxxxxxx]\" where 'nn' is the optional register\n" > "number (0 to 15) and 'xxxxxxxxxxxxxxxx' is the register value in hexadecimal\n" > "(1-8 hex digits for 32-bit registers or 1-16 hex digits for 64-bit registers).\n" > "Enter \"gpr\" by itself to display the register values without altering them.\n" > ) >+CMDHELP ( "cr", "Format: \"cr [nn=xxxxxxxxxxxxxxxx]\" where 'nn' is the optional control register\n" >+ "number (0 to 15) and 'xxxxxxxxxxxxxxxx' is the control register value in hex\n" >+ "(1-8 hex digits for 32-bit registers or 1-16 hex digits for 64-bit registers).\n" >+ "Enter \"cr\" by itself to display the control registers without altering them.\n" >+ ) > CMDHELP ( "r", "Format: \"r addr[.len]\" or \"r addr-addr\" to display real\n" > "storage, or \"r addr=value\" to alter real storage, where 'value'\n" > "is a hex string of up to 32 pairs of digits.\n" > ) >-CMDHELP ( "v", "Format: \"v addr[.len]\" or \"v addr-addr\" to display virtual\n" >- "storage, or \"v addr=value\" to alter virtual storage, where 'value'\n" >- "is a hex string of up to 32 pairs of digits.\n" >+CMDHELP ( "v", "Format: \"v [P|S|H] addr[.len]\" or \"v [P|S|H] addr-addr\" to display virtual\n" >+ "storage, or \"v [P|S|H] addr=value\" to alter virtual storage, where 'value'\n" >+ "is a hex string of up to 32 pairs of digits. The optional 'P' or 'S' or 'H'\n" >+ "will force Primary, Secondary, or Home translation instead of current PSW mode.\n" > ) > > CMDHELP ( "attach", "Format: \"attach devn type [arg...]\n" >@@ -6029,6 +7011,15 @@ CMDHELP ( "loadtext", "Format: \"loadte > "and \"END\" 80 byte records (i.e. an object deck).\n" > ) > >+#ifdef PANEL_REFRESH_RATE >+CMDHELP ( "panrate", "Format: \"panrate [nnn | fast | slow]\". Sets or displays the panel refresh rate.\n" >+ "panrate nnn sets the refresh rate to nnn milliseconds.\n" >+ "panrate fast sets the refresh rate to " MSTRING(PANEL_REFRESH_RATE_FAST) " milliseconds.\n" >+ "panrate slow sets the refresh rate to " MSTRING(PANEL_REFRESH_RATE_SLOW) " milliseconds.\n" >+ "If no operand is specified, panrate displays the current refresh rate.\n" >+ ) >+#endif >+ > #if defined(OPTION_CONFIG_SYMBOLS) > CMDHELP ( "defsym", "Format: \"defsym symbol [value]\". Defines symbol 'symbol' to contain value 'value'.\n" > "The symbol can then be the object of a substitution for later panel commands.\n" >@@ -6073,6 +7064,19 @@ CMDHELP ( "traceopt", "Format: \"traceo > "the command without any argument simply displays the current mode.\n" > ) > >+CMDHELP ( "sfk", "Format: \"sfk{*|xxxx} [n]\". Performs a chkdsk on the active shadow file\n" >+ "where xxxx is the device number (*=all cckd devices)\n" >+ "and n is the optional check level (default is 2):\n" >+ " -1 devhdr, cdevhdr, l1 table\n" >+ " 0 devhdr, cdevhdr, l1 table, l2 tables\n" >+ " 1 devhdr, cdevhdr, l1 table, l2 tables, free spaces\n" >+ " 2 devhdr, cdevhdr, l1 table, l2 tables, free spaces, trkhdrs\n" >+ " 3 devhdr, cdevhdr, l1 table, l2 tables, free spaces, trkimgs\n" >+ " 4 devhdr, cdevhdr. Build everything else from recovery\n" >+ "You probably don't want to use `4' unless you have a backup and are\n" >+ "prepared to wait a long time.\n" >+ ) >+ > CMDHELP ( "logopt", "Format: \"logopt [timestamp | notimestamp]\". Sets logging options.\n" > "\"timestamp\" inserts a time stamp in front of each log message.\n" > "\"notimestamp\" displays log messages with no time stamps. Entering\n" >diff -Naupr hercules-3.05/hscmisc.c hercules-20070717/hscmisc.c >--- hercules-3.05/hscmisc.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hscmisc.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,9 +2,25 @@ > /* (c) Copyright Jan Jaeger, 1999-2007 */ > /* Miscellaneous System Command Routines */ > >-// $Id: hscmisc.c,v 1.60 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hscmisc.c,v 1.65 2008/05/11 22:30:37 rbowler Exp $ > // > // $Log: hscmisc.c,v $ >+// Revision 1.65 2008/05/11 22:30:37 rbowler >+// V command should display "dat off" instead of "primary" if addr is real >+// >+// Revision 1.64 2008/04/09 13:53:45 rbowler >+// Operand disassembly for RIL instructions >+// >+// Revision 1.63 2008/04/09 09:09:22 bernard >+// EXRL instruction >+// >+// Revision 1.62 2008/03/07 17:46:42 ptl00 >+// Add pri, sec, home options to v command >+// >+// Revision 1.61 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// > // Revision 1.60 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >@@ -1012,6 +1028,26 @@ char buf[100]; > maxadr = 0x7FFFFFFF; > #endif /*!defined(FEATURE_ESAME)*/ > >+ while((opnd && *opnd != '\0') && >+ (*opnd == ' ' || *opnd == '\t')) >+ opnd++; >+ >+ switch(toupper(*opnd)) >+ { >+ case 'P': /* primary */ >+ arn = USE_PRIMARY_SPACE; >+ opnd++; >+ break; >+ case 'S': /* secondary */ >+ arn = USE_SECONDARY_SPACE; >+ opnd++; >+ break; >+ case 'H': /* home */ >+ arn = USE_HOME_SPACE; >+ opnd++; >+ break; >+ } >+ > /* Parse the range or alteration operand */ > len = parse_range (opnd, maxadr, &saddr, &eaddr, newval); > if (len < 0) return; >@@ -1042,7 +1078,9 @@ char buf[100]; > xcode = ARCH_DEP(virt_to_abs) (&raddr, &stid, vaddr, arn, > regs, ACCTYPE_LRA); > n = sprintf (buf, "V:"F_VADR" ", vaddr); >- if (stid == TEA_ST_PRIMARY) >+ if (REAL_MODE(®s->psw)) >+ n += sprintf (buf+n, "(dat off)"); >+ else if (stid == TEA_ST_PRIMARY) > n += sprintf (buf+n, "(primary)"); > else if (stid == TEA_ST_SECNDRY) > n += sprintf (buf+n, "(secondary)"); >@@ -1152,7 +1190,8 @@ REGS *regs; > && opcode != 0x84 && opcode != 0x85 > && opcode != 0xA5 && opcode != 0xA7 > && opcode != 0xB3 >- && opcode != 0xC0 && opcode != 0xEC) >+ && opcode != 0xC0 && opcode != 0xC4 && opcode != 0xC6 >+ && opcode != 0xEC) > { > /* Calculate the effective address of the first operand */ > b1 = inst[2] >> 4; >@@ -1178,7 +1217,8 @@ REGS *regs; > > /* Process the second storage operand */ > if (ilc > 4 >- && opcode != 0xC0 && opcode != 0xE3 && opcode != 0xEB >+ && opcode != 0xC0 && opcode != 0xC4 && opcode != 0xC6 >+ && opcode != 0xE3 && opcode != 0xEB > && opcode != 0xEC && opcode != 0xED) > { > /* Calculate the effective address of the second operand */ >@@ -1220,6 +1260,21 @@ REGS *regs; > addr2 = regs->GR(b2) & ADDRESS_MAXWRAP(regs); > } > >+ /* Calculate the operand address for RIL_A instructions */ >+ if ((opcode == 0xC0 && >+ ((inst[1] & 0x0F) == 0x00 >+ || (inst[1] & 0x0F) == 0x04 >+ || (inst[1] & 0x0F) == 0x05)) >+ || opcode == 0xC4 >+ || opcode == 0xC6) >+ { >+ S64 offset = 2LL*(S32)(fetch_fw(inst+2)); >+ addr1 = (likely(!regs->execflag)) ? >+ PSW_IA(regs, offset) : \ >+ (regs->ET + offset) & ADDRESS_MAXWRAP(regs); >+ b1 = 0; >+ } >+ > /* Display storage at first storage operand location */ > if (b1 >= 0) > { >@@ -1228,7 +1283,11 @@ REGS *regs; > ACCTYPE_READ); > else > n = ARCH_DEP(display_virt) (regs, addr1, buf, b1, >- (opcode == 0x44 ? ACCTYPE_INSTFETCH : >+ (opcode == 0x44 >+#if defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY) >+ || (opcode == 0xc6 && !(inst[1] & 0x0f)) >+#endif /*defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY)*/ >+ ? ACCTYPE_INSTFETCH : > opcode == 0xB1 ? ACCTYPE_LRA : > ACCTYPE_READ)); > if(sysblk.cpus>1) >@@ -1446,6 +1505,7 @@ int pid, status; > > /* Drop ROOT authority (saved uid) */ > SETMODE(TERM); >+ DROP_ALL_CAPS(); > > argv[0] = "sh"; > argv[1] = "-c"; >diff -Naupr hercules-3.05/hscutl2.c hercules-20070717/hscutl2.c >--- hercules-3.05/hscutl2.c 2006-12-30 16:18:29.000000000 +0100 >+++ hercules-20070717/hscutl2.c 2008-09-03 13:07:48.000000000 +0200 >@@ -13,7 +13,7 @@ > /* Hercules header files. */ > /* */ > /* Released under the Q Public License */ >-/* (http://www.conmicro.cx/hercules/herclic.html) */ >+/* (http://www.hercules-390.org/herclic.html) */ > /* as modifications to Hercules. */ > /* */ > /* This file is portion of the HERCULES S/370, S/390 and */ >@@ -21,9 +21,12 @@ > /* */ > /**********************************************************************/ > >-// $Id: hscutl2.c,v 1.10 2006/12/08 09:43:26 jj Exp $ >+// $Id: hscutl2.c,v 1.11 2007/11/30 14:54:33 jmaynard Exp $ > // > // $Log: hscutl2.c,v $ >+// Revision 1.11 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.10 2006/12/08 09:43:26 jj > // Add CVS message log > // >diff -Naupr hercules-3.05/hscutl.c hercules-20070717/hscutl.c >--- hercules-3.05/hscutl.c 2007-03-06 17:40:30.000000000 +0100 >+++ hercules-20070717/hscutl.c 2008-09-03 13:07:48.000000000 +0200 >@@ -8,9 +8,20 @@ > /* z/Architecture emulator */ > /*********************************************************************/ > >-// $Id: hscutl.c,v 1.25 2007/01/12 14:38:47 rbowler Exp $ >+// $Id: hscutl.c,v 1.28 2008/07/10 18:29:02 fish Exp $ > // > // $Log: hscutl.c,v $ >+// Revision 1.28 2008/07/10 18:29:02 fish >+// Fix crash in 'resolve_symbol_string' when incomplete symbol passed >+// (e.g. "$(x" for example) >+// >+// Revision 1.27 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// >+// Revision 1.26 2007/11/11 20:38:24 rbowler >+// Suppress msg HHCUT001I if keepalive successful >+// > // Revision 1.25 2007/01/12 14:38:47 rbowler > // Error checking for Unix keepalive > // >@@ -491,6 +502,12 @@ DLL_EXPORT char *resolve_symbol_string(c > } > buffer_addchar_and_alloc(&resstr,text[i],&curix,&maxix); > } >+ if(!resstr) >+ { >+ /* Malloc anyway - the caller will free() */ >+ resstr=malloc(strlen(text)+1); >+ strcpy(resstr,text); >+ } > return(resstr); > } > >@@ -696,7 +713,7 @@ void socket_keepalive( int sfd, int idle > { > int rc, optval = 1; > rc = setsockopt(sfd, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)); >- logmsg("HHCUT001I SO_KEEPALIVE rc=%d %s\n", rc, strerror(errno)); >+ if (rc) logmsg("HHCUT001I SO_KEEPALIVE rc=%d %s\n", rc, strerror(errno)); > > #if defined(TCP_KEEPALIVE) > optval = idle_time; >@@ -808,3 +825,91 @@ DLL_EXPORT int hprintf(int s,char *fmt,. > free(bfr); > return rc; > } >+ >+/* Posix 1003.1e capabilities support */ >+ >+#if defined(HAVE_SYS_CAPABILITY_H) && defined(HAVE_SYS_PRCTL_H) && defined(OPTION_CAPABILITIES) >+/*-------------------------------------------------------------------*/ >+/* DROP root privileges but retain a capability */ >+/*-------------------------------------------------------------------*/ >+DLL_EXPORT int drop_privileges(int capa) >+{ >+ uid_t uid; >+ gid_t gid; >+ cap_t c; >+ int rc; >+ int failed; >+ cap_value_t v; >+ int have_capt; >+ >+ /* If *real* userid is root, no need to do all this */ >+ uid=getuid(); >+ if(!uid) return 0; >+ >+ failed=1; >+ have_capt=0; >+ do >+ { >+ c=cap_init(); >+ if(!c) break; >+ have_capt=1; >+ v=capa; >+ rc=cap_set_flag(c,CAP_EFFECTIVE,1,&v,CAP_SET); >+ if(rc<0) break; >+ rc=cap_set_flag(c,CAP_INHERITABLE,1,&v,CAP_SET); >+ if(rc<0) break; >+ rc=cap_set_flag(c,CAP_PERMITTED,1,&v,CAP_SET); >+ if(rc<0) break; >+ rc=cap_set_proc(c); >+ if(rc<0) break; >+ rc=prctl(PR_SET_KEEPCAPS,1); >+ if(rc<0) break; >+ failed=0; >+ } while(0); >+ gid=getgid(); >+ setregid(gid,gid); >+ setreuid(uid,uid); >+ if(!failed) >+ { >+ rc=cap_set_proc(c); >+ if(rc<0) failed=1; >+ } >+ >+ if(have_capt) >+ cap_free(c); >+ >+ return failed; >+} >+/*-------------------------------------------------------------------*/ >+/* DROP all capabilities */ >+/*-------------------------------------------------------------------*/ >+DLL_EXPORT int drop_all_caps(void) >+{ >+ uid_t uid; >+ cap_t c; >+ int rc; >+ int failed; >+ int have_capt; >+ >+ /* If *real* userid is root, no need to do all this */ >+ uid=getuid(); >+ if(!uid) return 0; >+ >+ failed=1; >+ have_capt=0; >+ do >+ { >+ c=cap_from_text("all-eip"); >+ if(!c) break; >+ have_capt=1; >+ rc=cap_set_proc(c); >+ if(rc<0) break; >+ failed=0; >+ } while(0); >+ >+ if(have_capt) >+ cap_free(c); >+ >+ return failed; >+} >+#endif >diff -Naupr hercules-3.05/hscutl.h hercules-20070717/hscutl.h >--- hercules-3.05/hscutl.h 2007-03-06 17:40:30.000000000 +0100 >+++ hercules-20070717/hscutl.h 2008-09-03 13:07:48.000000000 +0200 >@@ -4,9 +4,13 @@ > /* laneous global utility functions. */ > /*********************************************************************/ > >-// $Id: hscutl.h,v 1.21 2007/01/10 15:12:11 rbowler Exp $ >+// $Id: hscutl.h,v 1.22 2008/02/19 11:49:19 ivan Exp $ > // > // $Log: hscutl.h,v $ >+// Revision 1.22 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// > // Revision 1.21 2007/01/10 15:12:11 rbowler > // Console keepalive for Unix > // >@@ -206,4 +210,10 @@ HUT_DLL_IMPORT int hwrite(int s,const ch > HUT_DLL_IMPORT int hgetc(int s); > HUT_DLL_IMPORT char *hgets(char *b,size_t c,int s); > >+/* Posix 1003.e capabilities */ >+#if defined(OPTION_CAPABILITIES) >+HUT_DLL_IMPORT int drop_privileges(int c); >+HUT_DLL_IMPORT int drop_all_caps(void); >+#endif >+ > #endif /* __HSCUTL_H__ */ >diff -Naupr hercules-3.05/hstdinc.h hercules-20070717/hstdinc.h >--- hercules-3.05/hstdinc.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hstdinc.h 2008-09-03 13:07:48.000000000 +0200 >@@ -5,9 +5,13 @@ > /* files which are not dependent on the mainframe architectural */ > /* features selected and thus are eligible for precompilation */ > >-// $Id: hstdinc.h,v 1.15 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hstdinc.h,v 1.16 2008/02/19 11:49:19 ivan Exp $ > // > // $Log: hstdinc.h,v $ >+// Revision 1.16 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// > // Revision 1.15 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >@@ -232,6 +236,12 @@ > #ifdef HAVE_ZLIB_H > #include <zlib.h> > #endif >+#ifdef HAVE_SYS_CAPABILITY_H >+ #include <sys/capability.h> >+#endif >+#ifdef HAVE_SYS_PRCTL_H >+ #include <sys/prctl.h> >+#endif > > // Some Hercules specific files, NOT guest arch dependent > #if defined(_MSVC_) >diff -Naupr hercules-3.05/hstructs.h hercules-20070717/hstructs.h >--- hercules-3.05/hstructs.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/hstructs.h 2008-09-03 13:07:48.000000000 +0200 >@@ -6,9 +6,71 @@ > // The <config.h> header and other required headers are > // presumed to have already been #included ahead of it... > >-// $Id: hstructs.h,v 1.69 2007/06/23 00:04:11 ivan Exp $ >+// $Id: hstructs.h,v 1.88 2008/07/08 05:35:51 fish Exp $ > // > // $Log: hstructs.h,v $ >+// Revision 1.88 2008/07/08 05:35:51 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.87 2008/05/28 16:46:29 fish >+// Misleading VTAPE support renamed to AUTOMOUNT instead and fixed and enhanced so that it actually WORKS now. >+// >+// Revision 1.86 2008/05/25 06:36:43 fish >+// VTAPE automount support (0x4B + 0xE4) >+// >+// Revision 1.85 2008/05/22 21:34:22 fish >+// Attempt to fix my *nix SCSI tape BSR over tapemark bug identified by Bob Schneider [bschneider@pingdata.net] >+// >+// Revision 1.84 2008/04/08 17:13:47 bernard >+// Added execute relative long instruction >+// >+// Revision 1.83 2008/03/30 02:51:33 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.82 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.81 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.80 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.79 2008/02/29 15:53:10 rbowler >+// Instruction decoder for C4xx and C6xx instructions >+// >+// Revision 1.78 2008/01/04 02:28:52 gsmith >+// sf commands update >+// >+// Revision 1.77 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.76 2007/12/02 16:22:09 rbowler >+// Enable B9xx,EBxx opcodes in S/370 mode for ETF2 >+// >+// Revision 1.75 2007/11/21 00:31:38 gsmith >+// LRE support (try #1) >+// >+// Revision 1.74 2007/11/18 22:18:51 rbowler >+// Permit FEATURE_IMMEDIATE_AND_RELATIVE to be activated in S/370 mode >+// >+// Revision 1.73 2007/09/05 00:24:18 gsmith >+// Use integer arithmetic calculating cpupct >+// >+// Revision 1.72 2007/08/06 22:12:49 gsmith >+// cpu thread exitjmp >+// >+// Revision 1.71 2007/08/06 16:48:20 ivan >+// Implement "PARM" option for IPL command (same as VM IPL PARM XXX) >+// Also add command helps for ipl, iplc, sysclear, sysreset >+// >+// Revision 1.70 2007/07/24 22:39:35 fish >+// (align a single comment; no code was changed) >+// > // Revision 1.69 2007/06/23 00:04:11 ivan > // Update copyright notices to include current year (2007) > // >@@ -112,6 +174,7 @@ struct REGS { > > unsigned int /* Flags (cpu thread only) */ > execflag:1, /* 1=EXecuted instruction */ >+ exrl:1, /* 1=EXRL, 0=EX instruction */ > permode:1, /* 1=PER active */ > instinvalid:1, /* 1=Inst field is invalid */ > opinterv:1, /* 1=Operator intervening */ >@@ -139,13 +202,13 @@ struct REGS { > S64 ecps_vtimer; /* ECPS Virtual Int. timer */ > S32 ecps_oldtmr; /* ECPS Virtual Int. tmr int */ > BYTE *ecps_vtmrpt; /* Pointer to VTMR or zero */ >- U64 instcount; /* Instruction counter */ >+ U32 instcount; /* Instruction counter */ > U64 prevcount; /* Previous instruction count*/ > U32 mipsrate; /* Instructions per second */ > U32 siocount; /* SIO/SSCH counter */ > U32 siosrate; /* IOs per second */ > U64 siototal; /* Total SIO/SSCH count */ >- double cpupct; /* Percent CPU busy */ >+ int cpupct; /* Percent CPU busy */ > U64 waittod; /* Time of day last wait (us)*/ > U64 waittime; /* Wait time (us) in interval*/ > DAT dat; /* Fields for DAT use */ >@@ -273,9 +336,10 @@ struct REGS { > > jmp_buf progjmp; /* longjmp destination for > program check return */ >- > jmp_buf archjmp; /* longjmp destination to > switch architecture mode */ >+ jmp_buf exitjmp; /* longjmp destination for >+ CPU thread exit */ > COND intcond; /* CPU interrupt condition */ > LOCK *cpulock; /* CPU lock for this CPU */ > >@@ -307,10 +371,19 @@ struct REGS { > *s370_opcode_a5xx, > *s370_opcode_a6xx, > #if defined(MULTI_BYTE_ASSIST) >+ s370_opcode_a7xx[256], > s370_opcode_b2xx[256], >+ s370_opcode_b9xx[256], >+ s370_opcode_ebxx[256], > #else >+ *s370_opcode_a7xx, > *s370_opcode_b2xx, >+ *s370_opcode_b9xx, >+ *s370_opcode_ebxx, > #endif >+ *s370_opcode_c2xx, /*208*/ >+ *s370_opcode_c4xx, /*208*/ >+ *s370_opcode_c6xx, /*208*/ > *s370_opcode_e4xx, > *s370_opcode_e5xx, > *s370_opcode_e6xx, >@@ -338,6 +411,8 @@ struct REGS { > #endif > *s390_opcode_b3xx, > *s390_opcode_c2xx, >+ *s390_opcode_c4xx, /*208*/ >+ *s390_opcode_c6xx, /*208*/ > *s390_opcode_e4xx, > *s390_opcode_e5xx, > *s390_opcode_ecxx, >@@ -363,6 +438,8 @@ struct REGS { > #endif > *z900_opcode_b3xx, > *z900_opcode_c2xx, >+ *z900_opcode_c4xx, /*208*/ >+ *z900_opcode_c6xx, /*208*/ > *z900_opcode_c8xx, > *z900_opcode_e5xx, > *z900_opcode_ecxx, >@@ -485,7 +562,6 @@ struct SYSBLK { > #define SHCMDOPT_NODIAG8 0x40 /* Disallow only for DIAG8 */ > int panrate; /* Panel refresh rate */ > int timerint; /* microsecs timer interval */ >- int npquiet; /* New Panel quiet indicator */ > char *pantitle; /* Alt console panel title */ > #if defined(OPTION_HAO) > TID haotid; /* Herc Auto-Oper thread-id */ >@@ -520,6 +596,7 @@ struct SYSBLK { > unsigned int /* Flags */ > daemon_mode:1, /* Daemon mode active */ > panel_init:1, /* Panel display initialized */ >+ npquiet:1, /* New Panel quiet indicator */ > sigintreq:1, /* 1 = SIGINT request pending*/ > insttrace:1, /* 1 = Instruction trace */ > inststep:1, /* 1 = Instruction step */ >@@ -531,6 +608,11 @@ struct SYSBLK { > showregsnone:1, /* 1 = show no registers */ > nomountedtapereinit:1, /* 1 = disallow tape devinit > if tape already mounted */ >+ legacysenseid:1, /* ena/disa senseid on */ >+ /* legacy devices */ >+#if defined(OPTION_IPLPARM) >+ haveiplparm:1, /* IPL PARM a la VM */ >+#endif > logoptnotime:1; /* 1 = don't timestamp log */ > U32 ints_state; /* Common Interrupts Status */ > U32 config_mask; /* Configured CPUs */ >@@ -538,6 +620,9 @@ struct SYSBLK { > U32 waiting_mask; /* Waiting CPUs */ > U64 traceaddr[2]; /* Tracing address range */ > U64 stepaddr[2]; /* Stepping address range */ >+#if defined(OPTION_IPLPARM) >+ BYTE iplparmstring[64]; /* 64 bytes loadable at IPL */ >+#endif > #ifdef FEATURE_ECPSVM > // > /* ECPS:VM */ >@@ -548,7 +633,6 @@ struct SYSBLK { > } ecpsvm; /* ECPS:VM structure */ > // > #endif >- > U64 pgminttr; /* Program int trace mask */ > int pcpu; /* Tgt CPU panel cmd & displ */ > int hercprio; /* Hercules process priority */ >@@ -562,6 +646,10 @@ struct SYSBLK { > char *httpuser; /* HTTP userid */ > char *httppass; /* HTTP password */ > char *httproot; /* HTTP root */ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ TAMDIR *tamdir; /* Acc/Rej AUTOMOUNT dir ctl */ >+ char *defdir; /* Default AUTOMOUNT dir */ >+#endif > /* Fields used by SYNCHRONIZE_CPUS */ > int syncing; /* 1=Sync in progress */ > U32 sync_mask; /* CPU mask for syncing CPUs */ >@@ -573,7 +661,6 @@ struct SYSBLK { > #if defined(OPTION_SHARED_DEVICES) > TID shrdtid; /* Shared device listener */ > U16 shrdport; /* Shared device server port */ >- U32 shrdrate; /* IOs per second */ > U32 shrdcount; /* IO count */ > SHRD_TRACE *shrdtrace; /* Internal trace table */ > SHRD_TRACE *shrdtracep; /* Current pointer */ >@@ -610,6 +697,8 @@ struct SYSBLK { > U64 imapb9[256]; > U64 imapc0[16]; > U64 imapc2[16]; /*@Z9*/ >+ U64 imapc4[16]; /*208*/ >+ U64 imapc6[16]; /*208*/ > U64 imapc8[16]; > U64 imape3[256]; > U64 imape4[256]; >@@ -629,6 +718,8 @@ struct SYSBLK { > + sizeof(sysblk.imapb9) \ > + sizeof(sysblk.imapc0) \ > + sizeof(sysblk.imapc2) /*@Z9*/ \ >+ + sizeof(sysblk.imapc4) /*208*/ \ >+ + sizeof(sysblk.imapc6) /*208*/ \ > + sizeof(sysblk.imapc8) \ > + sizeof(sysblk.imape3) \ > + sizeof(sysblk.imape4) \ >@@ -808,8 +899,7 @@ struct DEVBLK { > int ioactive; /* System Id active on device*/ > #define DEV_SYS_NONE 0 /* No active system on device*/ > #define DEV_SYS_LOCAL 0xffff /* Local system active on dev*/ >- /* By Adrian - Password for Tape drive (and 1 spare) */ >- BYTE drvpwd[11]; /* Password for drive */ >+ BYTE drvpwd[11]; /* Password for drive */ > BYTE reserved3; /* (pad/align/unused/avail) */ > > /* control flags... */ >@@ -957,6 +1047,8 @@ struct DEVBLK { > from current block */ > U16 curbufoff; /* Offset into buffer of data > for next data chained CCW */ >+ U16 tapssdlen; /* #of bytes of data prepared >+ for Read Subsystem Data */ > HETB *hetb; /* HET control block */ > > struct /* HET device parms */ >@@ -973,12 +1065,12 @@ struct DEVBLK { > U16 chksize; /* Chunk size */ > off_t maxsize; /* Maximum allowed TAPE file > size */ >- off_t eotmargin; /* Amount of space left >- before reporting EOT */ > } tdparms; /* HET device parms */ >- u_int poserror:1; /* Positioning error */ >+ >+ off_t eotmargin; /* Amount of space left before >+ reporting EOT (in bytes) */ >+ u_int fenced:1; /* 1=Pos err; volume fenced */ > u_int readonly:1; /* 1=Tape is write-protected */ >- u_int longfmt:1; /* 1=Long record format (DDR)*/ /*DDR*/ > u_int sns_pending:1; /* Contingency Allegiance */ > /* - means : don't build a */ > /* sense on X'04' : it's */ >@@ -986,8 +1078,17 @@ struct DEVBLK { > /* NOTE : flag cleared by */ > /* sense command only */ > /* or a device init */ >+ u_int SIC_supported:1; /* 1=Spec Intcpt Cond support*/ >+ u_int SIC_active:1; /* 1=SIC active */ >+ u_int forced_logging:1; /* 1=Forced Error Logging */ >+ u_int eotwarning:1; /* 1=EOT warning area reached*/ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ u_int noautomount:1; /* 1=AUTOMOUNT disabled */ >+#endif >+ U32 msgid; /* Message Id of async. i/o */ > #if defined(OPTION_SCSI_TAPE) >- U32 sstat; /* Generic SCSI tape device- >+ struct mtget mtget; /* SCSI tape status struct */ >+#define sstat mtget.mt_gstat /* Generic SCSI tape device- > independent status field; > (struct mtget->mt_gstat) */ > TID stape_mountmon_tid; /* Tape-mount monitor thread */ >@@ -1000,7 +1101,8 @@ struct DEVBLK { > LOCK stape_getstat_lock; /* LOCK for status wrkr thrd */ > COND stape_getstat_cond; /* COND for status wrkr thrd */ > COND stape_exit_cond; /* thread wait for exit COND */ >- U32 stape_getstat_sstat; /* status wrkr thrd status */ >+ struct mtget stape_getstat_mtget;/* status wrkr thrd status */ >+#define stape_getstat_sstat stape_getstat_mtget.mt_gstat /* (gstat) */ > struct timeval > stape_getstat_query_tod;/* TOD of actual drive query */ > #endif >@@ -1119,6 +1221,7 @@ struct DEVBLK { > BYTE ckdxgattr; /* Define extent global attr */ > U16 ckdltranlf; /* Locate record transfer > length factor */ >+ U16 ckdlmask; /* Locate record mask */ > BYTE ckdloper; /* Locate record operation */ > BYTE ckdlaux; /* Locate record aux byte */ > BYTE ckdlcount; /* Locate record count */ >@@ -1352,7 +1455,10 @@ typedef char CCKD_TRACE[128]; > struct CCKDBLK { /* Global cckd dasd block */ > BYTE id[8]; /* "CCKDBLK " */ > DEVBLK *dev1st; /* 1st device in cckd queue */ >- int batch:1; /* 1=called in batch mode */ >+ unsigned int batch:1, /* 1=called in batch mode */ >+ sfmerge:1, /* 1=sf-* merge */ >+ sfforce:1; /* 1=sf-* force */ >+ int sflevel; /* sfk xxxx level */ > > ATTR attr; /* Thread attributes */ > >@@ -1436,7 +1542,10 @@ struct CCKDDASD_EXT { > merging:1, /* 1=File merge in progress */ > stopping:1, /* 1=Device is closing */ > notnull:1, /* 1=Device has track images */ >- l2ok:1; /* 1=All l2s below bounds */ >+ l2ok:1, /* 1=All l2s below bounds */ >+ sfmerge:1, /* 1=sf-xxxx merge */ >+ sfforce:1; /* 1=sf-xxxx force */ >+ int sflevel; /* sfk xxxx level */ > LOCK filelock; /* File lock */ > LOCK iolock; /* I/O lock */ > COND iocond; /* I/O condition */ >diff -Naupr hercules-3.05/hsys.c hercules-20070717/hsys.c >--- hercules-3.05/hsys.c 2006-12-30 16:18:29.000000000 +0100 >+++ hercules-20070717/hsys.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,9 @@ >-// $Id: hsys.c,v 1.6 2006/12/08 09:43:28 jj Exp $ >+// $Id: hsys.c,v 1.7 2008/02/12 08:42:15 fish Exp $ > // > // $Log: hsys.c,v $ >+// Revision 1.7 2008/02/12 08:42:15 fish >+// dyngui tweaks: new def devlist fmt, new debug_cd_cmd hook >+// > // Revision 1.6 2006/12/08 09:43:28 jj > // Add CVS message log > // >@@ -29,6 +32,7 @@ DLL_EXPORT void (*daemon_task) (void); > DLL_EXPORT int (*config_command) (int argc, char *argv[], char *cmdline); > DLL_EXPORT int (*system_command) (int argc, char *argv[], char *cmdline); > DLL_EXPORT void *(*debug_cpu_state) (REGS *); >+DLL_EXPORT void (*debug_cd_cmd) (char *); > DLL_EXPORT void *(*debug_device_state) (DEVBLK *); > DLL_EXPORT void *(*debug_program_interrupt) (REGS *, int); > DLL_EXPORT void *(*debug_diagnose) (U32, int, int, REGS *); >diff -Naupr hercules-3.05/html/cckddasd.html hercules-20070717/html/cckddasd.html >--- hercules-3.05/html/cckddasd.html 2006-03-29 01:53:25.000000000 +0200 >+++ hercules-20070717/html/cckddasd.html 2008-09-03 13:07:48.000000000 +0200 >@@ -139,6 +139,18 @@ curent shadow file, and display the shad > <tr><td align="left"><b>sfc</b></td> > <td align="left" colspan="2"><font size=-1>unit</font></td> > <td align="left">Compress the current file</td> >+<tr><td align="left" valign="top"><b>sfk</b></td> >+ <td align="left" valign="top"><font size=-1>unit</font></td> >+ <td align="left" valign="top"<font size=-1><i>level</i></font></td> >+ <td align="left" valign="top">Perform the <b>chkdsk</b> function on the current file. >+ Level is a number -1 ... 4, the default is <b>2</b>. The levels are:<br> >+ -1     devhdr, cdevhdr, l1 table <br> >+   0     devhdr, cdevhdr, l1 table, l2 tables <br> >+   1     devhdr, cdevhdr, l1 table, l2 tables, free spaces <br> >+   2     devhdr, cdevhdr, l1 table, l2 tables, free spaces, trkhdrs <br> >+   3     devhdr, cdevhdr, l1 table, l2 tables, free spaces, trkimgs <br> >+   4     devhdr, cdevhdr. Build everything else from recovery >+ </td> > <tr><td align="left"><b>sfd</b></td> > <td align="left" colspan="2"><font size=-1>unit</font></td> > <td align="left">Display shadow file status and statistics</td> >@@ -728,6 +740,6 @@ Greg Smith > <p><center><hr width=15% noshade> > <a href="index.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<p class="lastupd">Last updated $Date: 2006/03/28 23:53:25 $ $Revision: 1.12 $</p> >+<p class="lastupd">Last updated $Date: 2008/01/04 02:45:25 $ $Revision: 1.13 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/.cvsignore hercules-20070717/html/.cvsignore >--- hercules-3.05/html/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/html/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,3 @@ >+Makefile.in >+Makefile >+.DS_Store >diff -Naupr hercules-3.05/html/hercconf.html hercules-20070717/html/hercconf.html >--- hercules-3.05/html/hercconf.html 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/html/hercconf.html 2008-09-03 13:07:48.000000000 +0200 >@@ -26,14 +26,14 @@ and how they are used. > <table border=1><tr><td> > <pre><code> > >- #################################################### >- # HERCULES EMULATOR CONFIGURATION FILE # >- # (Note: not all parameters are shown) # >- #################################################### >+ #################################################################### >+ # HERCULES EMULATOR CONTROL FILE # >+ # (Note: not all parameters are shown) # >+ #################################################################### > > > # >- # <a href="#system_parameters">System parameters</a> >+ # <a href="#system_parameters">System parameters</a> > # > > >@@ -68,6 +68,7 @@ and how they are used. > <a href="#CODEPAGE">CODEPAGE</a> default > <a href="#CNSLPORT">CNSLPORT</a> 3270 > <a href="#CONKPALV">CONKPALV</a> (3,1,10) >+ <a href="#LEGACYSENSEID">LEGACYSENSEID</a> OFF > > <a href="#HERCPRIO">HERCPRIO</a> 0 > <a href="#TODPRIO">TODPRIO</a> -20 >@@ -81,7 +82,11 @@ and how they are used. > <a href="#DIAG8CMD">DIAG8CMD</a> disable > <a href="#SHCMDOPT">SHCMDOPT</a> disable > >- <a href="#DEFSYM">DEFSYM</a> TAPEDIR "<a href="#subs">$(HOME)</a>/tapes" >+ <a href="#DEFSYM">DEFSYM</a> TAPEDIR "<a href="#subs">$(HOME)</a>/tapes" >+ <a href="#AUTOMOUNT">AUTOMOUNT</a> $(TAPEDIR) >+ <a href="#AUTOMOUNT">AUTOMOUNT</a> +/tapes >+ <a href="#AUTOMOUNT">AUTOMOUNT</a> -/tapes/vault >+ > <a href="#MODPATH">MODPATH</a> /usr/local/hercules > <a href="#LDMOD">LDMOD</a> dyncrypt > >@@ -96,10 +101,12 @@ and how they are used. > <a href="#IGNORE">IGNORE</a> INCLUDE_ERRORS > <a href="#INCLUDE">INCLUDE</a> optdevs.cfg > >+ > # >- # <a href="#device_definitions">Device definitions</a> >+ # <a href="#device_stmts">Device statements</a> > # > >+ > 0009 <a href="#consysc">3215-C</a> / > > 000A <a href="#1442">1442</a> adrdmprs.rdr >@@ -122,18 +129,21 @@ and how they are used. > 0141 <a href="#3370">3370</a> syswk1.141 > 0300 <a href="#3370">3370</a> sysres.300 > >- 0400 <a href="#device_types_table">CTCT</a> 30880 192.168.100.2 30880 2048 >- 0401 <a href="#device_types_table">CTCT</a> 30881 192.168.100.2 30881 2048 >- 0420.2 <a href="#device_types_table">CTCI</a> 192.168.200.1 192.168.200.2 >- 0440.2 <a href="#device_types_table">LCS</a> -n /dev/net/tun 192.168.200.2 >+ 0400 <a href="#CTCT">CTCT</a> 30880 192.168.100.2 30880 2048 >+ 0401 <a href="#CTCT">CTCT</a> 30881 192.168.100.2 30881 2048 >+ 0420.2 <a href="#CTCI">CTCI</a> 192.168.200.1 192.168.200.2 >+ 0440.2 <a href="#LCS">LCS</a> -n /dev/net/tun 192.168.200.2 > > 0580 <a href="#3420">3420</a> /dev/nst0 # SCSI (Linux or Windows) > 0581 <a href="#3420">3420</a> \\.\Tape0 # SCSI (Windows only) >- 0582 <a href="#3420">3420</a> ickdsf.ipl >+ 0582 <a href="#3420">3420</a> ickdsf.aws <a href="#noautomount">noautomount</a> > 0583 <a href="#3420">3420</a> /cdrom/tapes/uaa196.tdf > 0584-0587 <a href="#3420">3420</a> <a href="#subs">$(TAPEDIR)</a>/volumes.<a href="#subs">$(CUU)</a> maxsizeM=170 eotmargin=131072 > > 0590 <a href="#3420">3480</a> /dev/nst0 <a href="#Quantum">--no-erg</a> <a href="#Quantum">--blkid-32</a> # <a href="#Quantum">Quantum DLT SCSI</a> >+ >+ 0023 <a href="#comline">2703</a> lport=3780 rhost=localhost rport=3781 dial=no >+ > </pre></code> > </td></tr></table> > </center> >@@ -150,13 +160,13 @@ and how they are used. > <h3>System parameters</h3> > <p> > System parameters may appear in any order but they must precede all >- device records. Each system parameter must be on a separate line. >+ device statements. Each system parameter must be on a separate line. > The following system parameters may be specified: > > <dl> > > <a name="ARCHMODE"></a> >-<dt><code>ARCHMODE S/370 | ESA/390 | z/Arch | ESAME</code> >+<dt><code>ARCHMODE S/370 | ESA/390 | z/Arch | ESAME</code> > <dd><p> > specifies the initial architecture mode: > <ul compact> >@@ -178,9 +188,9 @@ and how they are used. > specifies that the ASN-and-LX-Reuse Facility (ALRF) is to be disabled > or enabled. The default is disabled. This is a z/Architecture-only > feature (it is always disabled for S/390 or ESA/390). Set this >- to <code>ENABLE</code>  if the operating system supports >+ to <code>ENABLE</code> if the operating system supports > this z/Architecture feature and the use of this feature is desired. >- Set it to <code>DISABLE</code>  or do not specify anything >+ Set it to <code>DISABLE</code> or do not specify anything > if the operating system doesn't support this feature, and it > inadvertently sets CR0 bit 44 to 1, usually leading to unexpected > program interrupt when instructions such as LASP are issued. >@@ -188,6 +198,53 @@ and how they are used. > <code>ASN_AND_LX_REUSE</code> may be abbreviated as <code>ALRF</code> > <p> > >+<a name="AUTOMOUNT"></a> >+<dt><code>AUTOMOUNT <em>[±]directory</em></code> >+<dd><p> >+ specifies the host system directory where the guest is allowed >+ or not allowed to automatically load virtual tape volumes from. >+ Prefix allowable directories with a '+' plus sign and unallowable >+ directories with a '-' minus sign. The default prefix if neither is >+ specified is the '+' plus sign (i.e. an allowable directory). >+ <p> >+ <i><b>Caution:</b> Enabling this feature may have security >+ consequences depending on which allowable host system directories you >+ specify as well as how your guest operating system enforces >+ authorized use of whatever automount functionality it happens to >+ utilize.</i> >+ <p> >+ All host system virtual tape volumes to be "automounted" by the guest >+ must reside within one of the specified allowable host system directories >+ or any of its subdirectories while not also being within any of the >+ specified unallowable directories or any of their subdirectories, >+ in order for the guest-invoked automount to be accepted. >+ <p> >+ Note: specifying a disallowed automount directory does not preclude the >+ Hercules operator from manually mounting any file s/he wishes via the >+ <code>devinit</code> panel command -- even one in a currently defined >+ "disallowed" automount directory. The AUTOMOUNT statement only controls >+ guest-invoked automatic tape mounts and not manual tape mounts performed >+ by the Hercules operator. >+ <p> >+ All directories must be specified on separate statements, but as many >+ statements as needed may be specified in order to describe the desired >+ allowable/unallowable directories layout. For convenience, an >+ <code>automount</code> panel command is also provided to dynamically >+ add/remove new/existing allowable/unallowable automount >+ directories at any time. >+ <p> >+ At least one allowable directory should be defined, but defaults to the >+ current directory if one is not specifically defined (i.e. if only >+ unallowable directories are specified, the current directory then >+ becomes the only defined allowable automount directory by default). >+ <p> >+ All specified directories are always resolved to fully-qualified >+ absolute directory paths before being saved. >+ <p> >+ Refer to the description of the virtual tape device >+ '<a href="#noautomount">noautomount</a>' option for more information. >+ <p> >+ > <a name="AUTO_SCSI_MOUNT"></a> > <dt><code>AUTO_SCSI_MOUNT NO | YES | <em>nn</em></code> > <dd><p> >@@ -220,20 +277,95 @@ and how they are used. > <p> > > <a name="CODEPAGE"></a> >-<dt><code>CODEPAGE <em>codepage</em></code> >+<dt><code>CODEPAGE <em>mapping</em></code> > <dd><p> >- specifies the codepage conversion table used for ASCII/EBCDIC translation. >+ specifies the codepage conversion mapping table used for ASCII/EBCDIC translation. > <p> > >- "default" specifies traditional Hercules codepage. Code pages "437/037", >- "437/500" and "850/273" are also supported. >+ <code>default</code> specifies traditional Hercules codepage mapping. > <p> > >- Iconv single byte codepages may also be used (e.g. "UTF8/EBCDIC-CP-NL"). >+ Other supported codepage mappings are: >+ <p> >+ >+ <blockquote> >+ <table border=1 cellpadding=3> >+ <tr> >+ <th rowspan=2>Mapping</th> >+ <th colspan=2>Description</th> >+ </tr> >+ <tr> >+ <th>ASCII</th> >+ <th>EBCDIC</th> >+ </tr> >+ <tr><td align="center"><code>437/037</code></td> >+ <td>437 PC United States</td> >+ <td>037 United States/Canada</td> >+ <tr><td align="center"><code>437/500</code></td> >+ <td>437 PC United States</td> >+ <td>500 Latin 1</td> >+ </tr> >+ <tr><td align="center"><code>850/273</code></td> >+ <td>850 PC Latin 1</td> >+ <td>273 Austria/Germany</td> >+ </tr> >+ <tr><td align="center"><code>819/273</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>273 Austria/Germany</td> >+ </tr> >+ <tr><td align="center"><code>819/277</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>277 Denmark/Norway</td> >+ </tr> >+ <tr><td align="center"><code>819/278</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>278 Finland/Sweden</td> >+ </tr> >+ <tr><td align="center"><code>819/280</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>280 Italy</td> >+ </tr> >+ <tr><td align="center"><code>819/284</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>284 Spain</td> >+ </tr> >+ <tr><td align="center"><code>819/285</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>285 United Kingdom</td> >+ </tr> >+ <tr><td align="center"><code>819/297</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>297 France</td> >+ </tr> >+ <tr><td align="center"><code>819/500</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>500 International</td> >+ </tr> >+ <tr><td align="center"><code>437/1047</code></td> >+ <td>437 PC United States</td> >+ <td>1047 Open Systems Latin 1</td> >+ </tr> >+ <tr><td align="center"><code>819/1047</code></td> >+ <td>819 ISO-8859-1</td> >+ <td>1047 Open Systems Latin 1</td> >+ </tr> >+ <tr><td align="center"><code>1252/1047</code></td> >+ <td>1252 Windows Latin 1</td> >+ <td>1047 Open Systems Latin 1</td> >+ </tr> >+ <tr><td align="center"><code>850/1047</code></td> >+ <td>850 PC Latin 1</td> >+ <td>1047 Open Systems Latin 1</td> >+ </tr> >+ </table> >+ </blockquote> >+ <p> >+ >+ Iconv single byte codepages may also be used (e.g. <code>UTF8/EBCDIC-CP-NL</code>). > <p> > > If no codepage is specified then the environment variable HERCULES_CP >- will be inspected. The default codepage used is "default" >+ will be inspected. The default codepage mapping is <code>default</code>. > > <p> > >@@ -372,7 +504,7 @@ and how they are used. > <p> > > <a name="DEVTMAX"></a> >-<dt><code>DEVTMAX -1 | 0 | <em>nnn</em></code> >+<dt><code>DEVTMAX -1 | 0 | <em>nnn</em></code> > <dd><p> > specifies the maximum number of device threads allowed. > <p>Specify <code>-1</code> to cause 'one time only' temporary threads to be >@@ -423,7 +555,7 @@ and how they are used. > <p> > > <a name="ECPSVM"></a> >-<dt><code>ECPSVM YES | NO | LEVEL <em>nn</em></code> >+<dt><code>ECPSVM YES | NO | LEVEL <em>nn</em></code> > <dd><p> > specifies whether ECPS:VM (Extended Control Program Support : Virtual Machine) > support is to be enabled. If <code>YES</code> is specified, then the support >@@ -539,6 +671,30 @@ and how they are used. > Multiple LDMOD statements may be used. > <p> > >+<a name="LEGACYSENSEID"></a> >+<dt><code>LEGACYSENSEID OFF | DISABLE | ON | ENABLE</code> >+<dd><p> >+ specifies whether the SENSE ID CCW (X'E4') will be honored for >+ the devices that originally didn't support that feature. This >+ includes (but may not be limited to) the 3410 and 3420 tape drives >+ as well as the 2703 communication controllers. >+ <p> >+ >+ Specify <code>ON</code> or <code>ENABLE</code> if your guest >+ operating system needs the Sense ID support to dynamically >+ detect those devices. Note that most current operating systems >+ will not detect those devices even though Sense ID is enabled >+ because those devices never supported the Sense ID in the first >+ place. So this mainly applies to custom built or modified versions >+ of guest operating systems that are aware of this specific Hercules >+ capability. >+ <p> >+ >+ Because those legacy devices didn't originally support this command, >+ and for compatibility reasons, the default is <code>OFF</code> >+ or <code>DISABLE</code>. >+ <p> >+ > <a name="LOADPARM"></a> > <dt><code>LOADPARM <em>xxxxxxxx</em></code> > <dd><p> >@@ -564,18 +720,14 @@ and how they are used. > <code>HERCULES</code>. > <p> > >-<a name="MODEL"></a> >-<dt><code>MODEL <em>name</em></code> >-<dd><p> >- specifies the MODEL name returned by the STSI instruction. The default is >- <code>EMULATOR</code>. >- <p> >- >-<a name="PLANT"></a> >-<dt><code>PLANT <em>name</em></code> >+<a name="MAINSIZE"></a> >+<dt><code>MAINSIZE <em>nnnn</em></code> > <dd><p> >- specifies the PLANT name returned by the STSI instruction. The default is >- <code>ZZ</code>. >+ specifies the main storage size in megabytes, where >+ <code><em>nnnn</em></code> is a decimal number. The lower limit is 2. >+ The actual upper limit is determined by your host system's architecture >+ and operating system, and (on some systems) the amount of physical >+ memory and paging space you have available. > <p> > > <a name="MANUFACTURER"></a> >@@ -585,14 +737,11 @@ and how they are used. > <code>HRC</code>. > <p> > >-<a name="MAINSIZE"></a> >-<dt><code>MAINSIZE <em>nnnn</em></code> >+<a name="MODEL"></a> >+<dt><code>MODEL <em>name</em></code> > <dd><p> >- specifies the main storage size in megabytes, where >- <code><em>nnnn</em></code> is a decimal number. The lower limit is 2. >- The actual upper limit is determined by your host system's architecture >- and operating system, and (on some systems) the amount of physical >- memory and paging space you have available. >+ specifies the MODEL name returned by the STSI instruction. The default is >+ <code>EMULATOR</code>. > <p> > > <a name="MODPATH"></a> >@@ -699,7 +848,7 @@ and how they are used. > <p> > > <a name="PANRATE"></a> >-<dt><code>PANRATE SLOW | FAST | <em>nn</em></code> >+<dt><code>PANRATE SLOW | FAST | <em>nn</em></code> > <dd><p> > specifies the panel refresh rate, in milliseconds between refreshes. SLOW > is the same as 500, and FAST is the same as 50. A value less than the >@@ -724,7 +873,7 @@ and how they are used. > <p> > > <a name="PGMPRDOS"></a> >-<dt><code>PGMPRDOS RESTRICTED | LICENSED</code> >+<dt><code>PGMPRDOS RESTRICTED | LICENSED</code> > <dd><p> > specifies whether or not Hercules will run licensed program product ESA > or z/Architecture operating systems. Specify <code>RESTRICTED</code> to >@@ -749,6 +898,13 @@ and how they are used. > remind you of your responsibility to comply with software license terms. > <p> > >+<a name="PLANT"></a> >+<dt><code>PLANT <em>name</em></code> >+<dd><p> >+ specifies the PLANT name returned by the STSI instruction. The default is >+ <code>ZZ</code>. >+ <p> >+ > <a name="SHCMDOPT"></a> > <dt><code>SHCMDOPT DISABLE | NODIAG8</code> > <dd><p> >@@ -782,7 +938,7 @@ and how they are used. > <p> > > <a name="SYSEPOCH"></a> >-<dt><code>SYSEPOCH <em>yyyy</em> [±<em>years</em>]</code> >+<dt><code>SYSEPOCH <em>yyyy</em> [±<em>years</em>]</code> > <dd><p> > specifies the base date for the TOD clock. Use the default value > (<code>1900</code>) for all systems except OS/360. Use <code>1960</code> >@@ -799,7 +955,7 @@ and how they are used. > <p> > > <a name="TIMERINT"></a> >-<dt><code>TIMERINT DEFAULT | <em>nnnn</em></code> >+<dt><code>TIMERINT DEFAULT | <em>nnnn</em></code> > <dd><p> > specifies the internal timers update interval, in microseconds. This > parameter specifies how frequently Hercules's internal timers-update thread >@@ -919,7 +1075,7 @@ and how they are used. > <h4>Special symbols</h4> > <h5>Device group symbols</h5> > <p> >- When multiple devices are defined with a single device definition record, then the symbols<P> >+ When multiple devices are defined with a single device definition statement, then the symbols<P> > <blockquote> > <TABLE BORDER=0> > <ul compact> >@@ -1308,17 +1464,17 @@ and how they are used. > > <hr><!-- ---------------------------------------------------------------------------- --> > >-<a name="device_definitions"></a> >-<h3>Device definitions</h3> >+<a name="device_stmts"></a> >+<h3>Device statements</h3> > > <p> >- The remaining statements in the configuration file are device records. >- There must be one device record for each I/O device or group of identical I/O devices. >- The format of the device record is: >+ The remaining statements in the configuration file are device statements. >+ There must be one device statement for each I/O device or group of >+ identical I/O devices. The format of the device statement is: > <p> > > <blockquote> >- <code><em>devnum(s) devtype</em> [ <em>arguments</em> ] </code> >+ <code><em>devnum(s) devtype</em> [ <em>arguments</em> ] [ <em># comments...</em> ] </code> > </blockquote> > <p> > >@@ -1328,7 +1484,7 @@ and how they are used. > > <blockquote> > >-<dl> <!-- begin Device records --> >+<dl> <!-- begin Device statements --> > <a name="devnums"></a> > > <dt><code><em>devnum(s)</em></code> >@@ -1379,19 +1535,25 @@ and how they are used. > <dt><code><em>devtype</em></code> > <dd><p> > is the device type. Valid device types are shown in the >- <a href="#device_types_table">table</a> below. >+ <a href="#device_types_table">table</a> just below. > <p> > > <dt><code><em>arguments</em></code> > <dd><p> > is a list of parameters whose meaning depends on the device type. >- The arguments required for each class of device are shown below. >+ The arguments required for each class of device are shown further >+ below. > <p> > >-</dl> <!-- end Device records --> >+<dt><code><em># comments...</em></code> >+<dd><p> >+ A comment preceded by a # sign may be appended to any device >+ definition statement. >+ <p> > >-</blockquote> >+</dl> <!-- end Device statements --> > >+</blockquote> > > <p><br> > >@@ -1447,7 +1609,7 @@ and how they are used. > <td>Disk file (ASCII)</td> > </tr> > >- <tr><td>3410, 3420, 3422, 3430, 3480, 3490, 9347, 8809</td> >+ <tr><td>3410, 3420, 3422, 3430, 3480, 3490, 3590, 9347, 8809</td> > <td><a href="#tapedev">Tape drives</a></td> > <td>Disk file, CDROM, or SCSI tape</td> > </tr> >@@ -1620,7 +1782,7 @@ and how they are used. > over any ip address / subnet mask value which may also be specified. > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="consysc"></a> > <dt><em>Integrated Console printer-keyboard devices</em> >@@ -1640,7 +1802,7 @@ and how they are used. > All integrated devices must use a different command prefix. > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="conprkb"></a> > <dt><em>Console printer-keyboard devices</em> >@@ -1674,7 +1836,7 @@ and how they are used. > that the "noprompt" option, if specified, must precede the other arguments. > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="1442"></a> > <a name="3505"></a> >@@ -1764,7 +1926,7 @@ and how they are used. > </dl> > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="3525"></a> > <a name="cardpch"></a> >@@ -1798,7 +1960,7 @@ and how they are used. > </dl> > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="1403"></a> > <a name="printer"></a> >@@ -1862,14 +2024,53 @@ and how they are used. > can be used to create output in PDF format: > <a href="http://www.timpinkawa.net/hercules/prtspool.html"> > http://www.timpinkawa.net/hercules/prtspool.html</a> >+ <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="3420"></a> > <a name="tapedev"></a> > <dt><em>Emulated tape devices</em> > <dd><p> >- Four types of emulation are supported: >+ Five types of tape emulation are supported (see further below). >+ <p> >+ >+ The only required parameter is the device filename. All other parameters >+ are optional and must follow the filename. Use '<b>*</b>' (asterisk) for >+ the filename to specify an empty (unmounted) tape drive. The specified file, >+ if other than '<b>*</b>', <i>must</i> exist. >+ <p> >+ Additionally, if the file name starts with the '@' character (at sign), the file >+ really describes a list of tape emulation files to be loaded in succession. >+ <p> >+ >+ The syntax of each line is identical to the information that can be >+ specified after the device type when the options are specified directly >+ after the device type in the configuration file. >+ <p> >+ >+ If the emulation file filename in the file list is the '<b>*</b>' (asterisk) >+ character, then this specifies a set of options to be applied to <i>all</i> >+ additional emulation files specified in the file list. >+ <p> >+ >+ Parameters are appended in succession. In all cases, if the same parameter is >+ specified more than once, the last instance takes precedence. >+ <p> >+ >+ Therefore, it is possible to specify a set of parameters in the base configuration >+ file, another set on a '*' line, and another set for each individual line. >+ Parameters are then appended in that order: options specified on the base device >+ statement itself first, followed by those options specified on the '*' statement, >+ and finally those specified on each individual file list statement last. <i>A >+ <b>SCSI tape</b> device should <b>not</b> be given in a file list.</i> >+ <p> >+ >+ Refer to the distributed source-code's "<b>README.TAPE</b>" document for >+ additional information regarding system and application programming for tape >+ devices and instructions regarding use of the emulated <b>ACF</b> (Automatic >+ Cartridge Feeder) and <b><a href="#AUTOMOUNT">AUTOMOUNT</a></b> features >+ for virtual (non-SCSI) tape devices. > <p> > > <dl> <!-- begin Emulated tape types of emulation --> >@@ -1983,6 +2184,10 @@ and how they are used. > guest's 22-bit format block-id into 32-bit format before sending it > to the actual SCSI hardware (since that is the format that the actual > hardware requires it to be in). >+ <p> >+ <dt><code>--blkid-22</code> >+ <dd><p> >+ The complete opposite of the above <code>--blkid-32</code> option. > </dl> > <p><br> > >@@ -2040,7 +2245,19 @@ and how they are used. > a 6-byte header with no data. This is the same format as is > used by the P/390. > The argument specifies the location of the AWSTAPE file >- (for example <code>ickdsf.ipl</code>) >+ (for example <code>ickdsf.aws</code>) >+ <p><br> >+ >+ <dt><b>FakeTape virtual files</b> >+ <dd><p> >+ These contain a complete tape in one file. FakeTape files >+ consist of variable length EBCDIC blocks. Each block is >+ preceded by a 12-ASCII-hex-character header. Filemarks are represented by >+ a 12-character header with no data. The FakeTape format is >+ used by the Flex-ES system from Fundamental Software Inc (FSI). >+ The argument specifies the location of the FakeTape file >+ (for example <code>ickdsf.fkt</code>). Note: "FLEX-ES" and >+ "FakeTape" are trademarks of Fundamental Software, Inc. > <p><br> > > <dt><b>HET virtual files</b> (<b>H</b>ercules <b>E</b>mulated <b>T</b>ape) >@@ -2117,7 +2334,7 @@ and how they are used. > > <p><br> > >- The following parameters apply to both <b>AWS</b> and <b>HET</b> emulation files: >+ The following parameters apply to <b>AWS</b>, <b>HET</b> and <b>FakeTape</b> emulation files: > <p> > > <blockquote> >@@ -2125,26 +2342,48 @@ and how they are used. > <dt><code>MAXSIZE</code>=<i>n</i> | <code>MAXSIZEK</code>=<i>n</i> > | <code>MAXSIZEM</code>=<i>n</i> > <dd><p> >- Specifies the maximum number of bytes (specified in bytes, Kilobytes or >- Megabytes) for the emulated file. This parameter defaults to 0, meaning >- there is no limit on the file size. >+ Specifies the maximum size (in bytes, Kilobytes or Megabytes) >+ that the emulated file is allowed to grow to. Specifying zero >+ for this parameter means "unlimited" (i.e. there is no limit). > <p> > > <dt><code>EOTMARGIN</code>=<em>n</em> > <dd><p> > Specifies the number of bytes remaining before reaching <em>maxsize</em> >- at which point the tape device will signal the presence of the 'End Of Tape' >+ at which point the tape device will signal the presence of the "End of Tape" > marker (reflector), thus allowing the program to switch to the next tape. > <p> > > <dt><code>READONLY</code>=<em>n</em> >- <dt><code>RO</code>=<em>n</em> >- <dt><code>NORING</code>=<em>n</em> > <dd><p> > Specifies whether the tape is mounted read-only (without a write >- ring, or with the cartridge protect switch set to "write >- protect". A parameter of 1 means read-only; a parameter of 0 >- means read-write. >+ ring or with the cartridge protect switch set to "write >+ protect"). A parameter of 1 means read-only; a parameter of 0 >+ means read-write. If READONLY=1, RO or NORING is not specified, >+ the default is READONLY=0. Note that READONLY=0 does not override >+ the host system file permission settings for the underlying AWS or >+ HET file. If the AWS or HET file is marked read-only, the tape >+ will be mounted read-only despite specification of READONLY=0. >+ <p> >+ >+ <dt><code>RO</code> >+ <dt><code>NORING</code> >+ <dd><p> >+ Specifies that the tape is mounted read-only (without a write >+ ring or with the cartridge protect switch set to "write >+ protect"). RO and NORING are equivalent to READONLY=1. >+ <p> >+ >+ <dt><code>RW</code> >+ <dt><code>RING</code> >+ <dd><p> >+ Specifies that the tape should be mounted read-write, if possible. >+ RW and RING are equivalent to READONLY=0. This is the default if >+ RO, NORING or READONLY=1 is not specified. Note that RW and RING >+ do not override the host system file permission settings for the >+ underlying AWS or HET file. If the AWS or HET file is marked >+ read-only, the tape will be mounted read-only despite specification >+ of RW or RING. > <p> > > <dt><code>DEONIRQ</code>=<em>n</em> >@@ -2154,46 +2393,82 @@ and how they are used. > option; a parameter of 0 turns it off. > <p> > >+<a name="noautomount"></a> >+ <dt><code>NOAUTOMOUNT</code> >+ <dd><p> >+ Indicates support for guest-initiated automatic tape volume >+ mounting is to always be disabled for this tape device. >+ <p> >+ Automatic guest tape-mount support is automatically globally >+ enabled for all virtual (non-SCSI) tape devices by default >+ whenever an allowable automount directory is defined via the >+ <a href="#AUTOMOUNT">AUTOMOUNT</a> configuration file statement >+ or the <code>automount</code> panel command. >+ The <code>NOAUTOMOUNT</code> option allows you to specifically >+ disable such support for a given device. >+ <p> >+ The automount feature enables software running in guest operating >+ systems to automatically mount, unmount and/or query for themselves >+ the host "virtual tape volume" filename mounted on a tape drive, >+ via the use of special CCW opcodes (0x4B Set Diagnose and 0xE4 >+ Sense Id) without any intervention on the part of the Hercules >+ operator. An example of such a program for DOS/VSE called >+ <code>TMOUNT</code> is provided in the <code>util</code> >+ subdirectory of the distributed source code. >+ <p> >+ This is a sticky option. When specified, automount support for >+ the device remains disabled until the option is specifically >+ removed via a <code>devinit</code> command <em>without</em> the option >+ specified. This means if <code>NOAUTOMOUNT</code> is enabled >+ for a device while global automount functionality is currently >+ disabled (because no <a href="#AUTOMOUNT">AUTOMOUNT</a> statement >+ was specified at Hercules startup), then automount functionality >+ remains disabled for the device even should global automount >+ functionality be later manually enabled via an >+ <code>automount</code> panel command. >+ <p> >+ When the 0x4B Set Diagnose CCW is used to auto-mount a virtual >+ tape volume onto a given tape drive, an absolute (fully-qualified) >+ pathname should normally always be specified, but need not be >+ if a path relative to the currently defined "default allowable" >+ automount directory is used instead. >+ <p> >+ The default allowable >+ automount directory is always the first "allowable" directory >+ that was defined, or else the current directory if no allowable >+ directories were specifically defined. (There is always a default >+ allowable directory whenever any allowable or unallowable automount >+ directories are defined.) >+ <p> >+ Fully-resolved, absolute-full-path filenames are defined as being >+ those which, for Windows, have a ':' (colon) in the second >+ position or, for other host operating systems (e.g. Linux), have >+ a '/' (slash) in the first position. Paths which start with a '.' >+ (period) are considered relative paths and will always be appended >+ to the currently defined default allowable automount directory, >+ before being resolved into fully-qualified paths by the host system. >+ (I.e. only fully-resolved absolute pathnames are used in the >+ performance of the actual automatic tape volume mount.) >+ <p> >+ For example, if more than one allowable automount directory is >+ defined and the volume wishing to be mounted happens to reside in >+ the second one, then a fully-qualified absolute pathname should >+ of course be specified (or else one that is relative to the >+ default directory which happens to resolve to the desired file). >+ <p> >+ All attempts to automount host files in any defined "disallowable" >+ directory (or any subdirectory thereof (or otherwise <i>not</i> >+ within any defined "allowable" directory or subdirectory)) will >+ be rejected. An error message is always issued in such cases, >+ just as one is whenever a successful mount or unmount is performed. >+ <p> >+ A sample guest automount program called <code>TMOUNT</code> for >+ the DOS/VSE operating system is provided in the >+ <code>util</code> subdirectory of the distributed source code. > </dl> > </blockquote> > >- Additionally, if the file name starts with the '@' character (at sign), the file >- really describes a list of tape emulation files to be loaded in succession. >- <p> >- >- The syntax of each line is identical to the information that can be >- specified after the device type when the options are specified directly >- after the device type in the configuration file. >- <p> >- >- If the emulation file filename in the file list is the '<b>*</b>' (asterisk) >- character, then this specifies a set of options to be applied to <i>all</i> >- additional emulation files specified in the file list. >- <p> >- >- Parameters are appended in succession. In all cases, if the same parameter is >- specified more than once, the last instance takes precedence. >- <p> >- >- Therefore, it is possible to specify a set of parameters in the base configuration >- file, another set on a '*' line, and another set for each individual line. >- Parameters are then appended in that order: options specified on the base device >- statement itself first, followed by those options specified on the '*' statement, >- and finally those specified on each individual file list statement last. >- <p> >- >- <i>A <b>SCSI tape</b> device should <b>not</b> be given in a file list.</i> >- <p> >- >- <p> >- >- Refer to the distributed source-code's "<b>README.TAPE</b>" document for >- additional information regarding system and application programming for tape >- devices and instructions regarding use of the emulated <b>ACF (Automatic >- Cartridge Feeder)</b> feature for virtual (non-SCSI) tape devices. >- <p> >- >-<p><br> >+<hr width="50%"><p> > > <a name="ctca"></a> > <a name="3088"></a> >@@ -2603,7 +2878,7 @@ ROUTE 00 172.021.003.032 255.255.255. > </dl> <!-- end emulation types --> > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="3380"></a> > <a name="ckddasd"></a> >@@ -2803,7 +3078,7 @@ ROUTE 00 172.021.003.032 255.255.255. > </dl> <!-- end (CKD) additional DASD arguments --> > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="3370"></a> > <a name="fbadasd"></a> >@@ -2895,7 +3170,7 @@ ROUTE 00 172.021.003.032 255.255.255. > </dl> <!-- end (FBA) additional DASD arguments --> > <p> > >-<p><br> >+<hr width="50%"><p> > > <a name="comline"></a> > <dt><em>Communication Line</em> >@@ -2993,12 +3268,6 @@ ROUTE 00 172.021.003.032 255.255.255. > > </dl> <!-- end Arguments for each device type --> > >-<p><br> >- >-A comment preceded by a # sign may be appended to any device >-definition statement. >-<p> >- > <center><hr width=15% noshade></center> > <p> > >@@ -3008,6 +3277,6 @@ If you have a question about Hercules, s > <p><center><hr width=15% noshade> > <a href="hercinst.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<p class="lastupd">Last updated $Date: 2007/06/22 21:23:29 $ $Revision: 1.125 $</p> >+<p class="lastupd">Last updated $Date: 2008/07/08 05:35:51 $ $Revision: 1.138 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercfaq.html hercules-20070717/html/hercfaq.html >--- hercules-3.05/html/hercfaq.html 2007-06-22 18:35:01.000000000 +0200 >+++ hercules-20070717/html/hercfaq.html 2008-09-03 13:07:48.000000000 +0200 >@@ -67,7 +67,7 @@ > </H4> > <P> > It means that your PC can emulate an IBM mainframe processor. The >- mainframe can range from a System/360 to a z990 - running in "S/370" >+ mainframe can range from a System/360 to a z10 - running in "S/370" > mode, "ESA/390" mode, or "z/Architecture" mode. > </P> > <P> >@@ -94,7 +94,7 @@ > Is it functional enough to run production work? > </H4> > <P> >- Hercules has never claimed to be a production-capable system. >+ Hercules has never claimed to be a production-capable system. > It was always meant to be a system programmer's toy. Having said > that, it's now become good enough to run a wide range of software > without problems, and there are reports that it has been used to >@@ -128,7 +128,7 @@ > <HR> > </P> > <H4><A NAME="2.01">2.01</A> >- Can it run z/OS, z/VM, z/VSE? >+ Can it run z/OS, z/VM, z/VSE? > </H4> > <P> > Yes. Hercules is a software implementation of z/Architecture, and so >@@ -173,11 +173,14 @@ > upgrade. > </P> > <P> >- OS/390 and other ESA operating systems are definitely licensed to a >+ OS/390, z/OS, and other ESA or z/Architecture operating systems are >+ definitely licensed to a > particular machine. Therefore, in practice you cannot run any classic >- ESA operating system on your PC unless you can obtain a license from >+ ESA or z/Architecture operating system >+ on your PC unless you can obtain a license from > IBM allowing you to do so. It is believed that there are, however, >- four ways you could run z/OS, OS/390, VM/ESA, or VSE/ESA under >+ four ways you could run z/OS, z/VM, z/VSE, >+ OS/390, VM/ESA, or VSE/ESA under > Hercules using currently available licenses: > </P> > <OL> >@@ -253,7 +256,7 @@ > OS/360 nucleus hacking. > </P> > <P> >- 4. Jay Maynard's "IBM Public Domain Software Collection" >+ 4. Jay Maynard's "IBM Public Domain Software Collection" > at <a href="http://www.ibiblio.org/jmaynard/">http://www.ibiblio.org/jmaynard/</a> > contains copies of the OS/360 Release 21.8 distribution tapes. > <H4><A NAME="2.05">2.05</A> >@@ -317,8 +320,8 @@ the Bob Abeles VM/370 R6 distribution. > You can grab those files at : > </P> > <UL> >-<LI><A HREF="http://www.conmicro.cx/hercules/dosrel34.zip">http://www.conmicro.cx/hercules/dosrel34.zip</A></LI> >-<LI><A HREF="http://www.conmicro.cx/hercules/dosrel34coverletter.pdf">http://www.conmicro.cx/hercules/dosrel34coverletter.pdf</A></LI> >+<LI><A HREF="http://www.hercules-390.org/dosrel34.zip">http://www.hercules-390.org/dosrel34.zip</A></LI> >+<LI><A HREF="http://www.hercules-390.org/dosrel34coverletter.pdf">http://www.hercules-390.org/dosrel34coverletter.pdf</A></LI> > <LI><A HREF="http://open360.copyleft.de/DOS34/Installation.html">http://open360.copyleft.de/DOS34/Installation.html</A></LI> > </UL> > <H4><A NAME="2.08">2.08</A> >@@ -352,7 +355,7 @@ is <A HREF="http://linuxvm.org/">http:// > on Hercules, called "OS/360 on Hercules". It can be found at > </P> > <UL><LI> >-<A HREF="http://www.conmicro.cx/hercos360/">http://www.conmicro.cx/hercos360/hercos360/</A>. >+<A HREF="http://www.conmicro.com/hercos360/">http://www.conmicro.com/hercos360/hercos360/</A>. > </LI></UL> > <P> > This will build an MVT system without TCAM/TSO, but with two 3270 >@@ -391,7 +394,7 @@ is <A HREF="http://linuxvm.org/">http:// > fastest processor you can get. A 2GHz Pentium, preferably with hyperthreading, > will probably provide acceptable performance for a light workload. > If you can afford a multiprocessor system, so much the better. Hercules >- makes extensive use of multi-threading to overlap I/O with CPU activity, >+ makes extensive use of multi-threading to overlap I/O with CPU activity, > and to dispatch multiple emulated CPU's in parallel. > </P> > <P> >@@ -400,7 +403,7 @@ is <A HREF="http://linuxvm.org/">http:// > on a 32-bit processor such as the Pentium. If you are serious about running > 64-bit then you will probably want to build Hercules for a 64-bit processor > such as Alpha (DEC/Compaq/HP), AMD64 (AMD Opteron, Athlon-64, Turion 64), >- IA64 (Intel Itanium 2), together with a 64-bit version of Linux, >+ IA64 (Intel Itanium 2), together with a 64-bit version of Linux, > or PPC (Power Mac G5) with OS X. > </P> > <P> >@@ -445,7 +448,7 @@ is <A HREF="http://linuxvm.org/">http:// > which is enough to run OS/360 (MFT or MVT) or MVS 3.8 with a response > time better than that of a 3033 from the 1970's. It's also fast enough to > run VSE/ESA with an acceptable response time. On a more recent system with >- a 2GHz Pentium processor, you may see the system peak at around 20 MIPS >+ a 2GHz Pentium processor, you may see the system peak at around 30 MIPS > which is enough to run Linux/390 or z/OS with a light workload. > </P> > <P> >@@ -462,6 +465,8 @@ is <A HREF="http://linuxvm.org/">http:// > with <a href="http://sources.redhat.com/cygwin">Cygwin</a> > <li>Windows 98, Windows NT, Windows 2000, or Windows XP (without Cygwin) > <li>Mac OS X 10.3 or later >+ <li>Solaris 2.9 or later (Sparc or Intel) >+ <li>FreeBSD > </P> > <P> > You will also need tn3270 client software for the virtual 3270 >@@ -495,7 +500,7 @@ is <A HREF="http://linuxvm.org/">http:// > </B> > <dd> > Brown University tn3270 is freely available. You can download it from <a >- href="http://www.brown.edu/Facilities/CIS/tn3270/">http://www.brown.edu/Facilities/CIS/tn3270/</a>. >+ href="http://www.brown.edu/Facilities/CIS/tn3270/">http://www.brown.edu/Facilities/CIS/tn3270/</a>. > There is one setting that must be changed to use this program with some > operating systems, especially MVS 3.8: Open a connection to Hercules, > but before IPLing the system, go to the Session->Features menu and set >@@ -538,13 +543,17 @@ is <A HREF="http://linuxvm.org/">http:// > <a href="http://www.softdevlabs.com/Hercules/hercules-msvc-build.html"> > http://www.softdevlabs.com/Hercules/hercules-msvc-build.html</a> > Alternatively, the Microsoft Visual Studio 7.0 and 8.0 products may be used. >+ In addition, Hercules now also supports building with >+ the Microsoft Visual Studio 9.0 product, or with >+ Microsoft Visual C++ 2008 Express (Version 15.x) >+ available for download from the Microsoft web-site. > </P> > <H4><A NAME="3.05">3.05</A> > Why do I get an unexpected fixed-point divide exception (program check > 0009 or abend 0C9) on a CVB instruction? > </H4> > <P> >- You are using an old gcc compiler. >+ You are using an old gcc compiler. > See previous question for the required compiler level. > </P> > <H4><A NAME="3.06">3.06</A> >@@ -553,11 +562,12 @@ is <A HREF="http://linuxvm.org/">http:// > <P> > With the introduction of autotools, we do make efforts to ensure Hercules > builds and run on several different operating system platforms (mostly >- just Linux, Windows and Apple right now), but we of course simply cannot >+ Linux, Windows, MAC, Solaris, and FreeBSD right now), >+ but we of course simply cannot > guarantee that it will run on every operating system platform out there. > </P> > <P> >- If you want to make Hercules run on FreeBSD, Solaris, OS/2, or >+ If you want to make Hercules run on AS/400, OS/2, or > whatever, then by all means go ahead. I welcome reports of any bugs or > problems you find, but I probably won't fix problems if it means introducing > platform-specific code, and I will not be able to test new releases against >@@ -687,7 +697,7 @@ is <A HREF="http://linuxvm.org/">http:// > <LI>Channel Indirect Data Addressing </LI> > <LI>Program Controlled Interruption (PCI) </LI> > <LI>Channel Program Suspend/Resume </LI> >-<LI>Dual Address Space (ESA/390 only, for now) </LI> >+<LI>Dual Address Space </LI> > <LI>Access Register Mode </LI> > <LI>Home Space Mode </LI> > <LI>Branch and Save </LI> >@@ -758,6 +768,7 @@ is <A HREF="http://linuxvm.org/">http:// > <li>Modified CCW Indirect Data Addressing (MIDAW) Facility</li> > <li>Extended-Immediate Facility</li> > <li>Message-Security-Assist Extension 1</li> >+<li>Message-Security-Assist Extension 2</li> > <li>DAT-Enhancement Facility 2</li> > <li>Store-Clock-Fast Facility</li> > <li>Store-Facility-List-Extended Facility</li> >@@ -774,6 +785,20 @@ is <A HREF="http://linuxvm.org/">http:// > <li>Extract-CPU-Time Facility</li> > <li>Conditional-SSKE Facility</li> > <li>Compare-and-Swap-and-Store Facility</li> >+<li>Execute-Extensions Facility</li> >+<li>General-Instructions-Extension Facility >+<li>Move-with-Optional-Specifications Facility</li> >+<li>Parsing-Enhancement Facility >+</ul> >+ >+<P>The following optional features of z/Architecture have not yet been implemented:</P> >+<ul> >+<li>Compare-and-Swap-and-Store Facility 2 >+<li>Configuration-Topology Facility >+<li>Enhanced-DAT Facility >+<li>HFP-Unnormalized-Extensions Facility >+<li>PFPO Facility >+<li>Restore-Subchannel Facility > </ul> > > <P>The following standard feature has not yet been implemented: </P> >@@ -818,7 +843,7 @@ project, either as coders or as testers > <sl> > <li><A HREF="http://perso.wanadoo.fr/rbowler">Roger Bowler</A> > (original author) >-<li><A HREF="http://www.conmicro.cx/">Jay Maynard</A> (current >+<li><A HREF="http://www.conmicro.com/">Jay Maynard</A> (current > maintainer) > <li><A HREF="http://www.cbttape.org/~jjaeger">Jan Jaeger</A> > <li><A HREF="http://www.bsp-gmbh.com/hercules">Volker Bandke</A> >@@ -827,6 +852,7 @@ maintainer) > <li>Mario Bezzi > <li><a href="http://www.ozemail.com.au/~oscarptyltd">Clem Clarke</a> > <li><a href="http://veejoe.com.au/vic/index.htm">Vic Cross</a> >+<li>Jacob Dekel > <li>Juergen Dobrinski > <li>Fritz Elfert > <li>Tomas Fott >@@ -863,6 +889,7 @@ maintainer) > <li>Valery Pogonchenko > <li><A HREF="http://upi.iki.fi/">Pasi Pirhonen</A> > <li>Emerson Santos >+<li><a href="http://blogs.sun.com/jsavit/">Jeff Savit</a> > <li><a href="http://pweb.uunet.de/schwarzer.d/">Axel Schwarzer</a> > <li>Paul Scott > <li>Daniel Seagraves >@@ -923,6 +950,6 @@ Please see our <a href="hercsupp.html">T > <p><center><hr width=15% noshade> > <a href="index.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<p class="lastupd">Last updated $Date: 2007/06/22 13:01:46 $ $Revision: 1.70 $</p> >+<p class="lastupd">Last updated $Date: 2008/05/19 15:40:04 $ $Revision: 1.82 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercinst.html hercules-20070717/html/hercinst.html >--- hercules-3.05/html/hercinst.html 2007-06-22 18:35:01.000000000 +0200 >+++ hercules-20070717/html/hercinst.html 2008-09-03 13:07:48.000000000 +0200 >@@ -327,11 +327,11 @@ panel commands. > sysclear Issue SYSTEM Clear Reset manual operation > store store CPU status at absolute zero > >- psw display program status word >+ psw display or alter program status word > gpr display or alter general purpose registers > fpr display floating point registers > fpc display floating point control register >- cr display control registers >+ cr display or alter control registers > ar display access registers > pr display prefix register > timerint display or set timers update interval >@@ -581,12 +581,12 @@ very much applies here. > <h2>Technical Support</h2> > > <P> >-For technical support, please refer our <a href="hercsupp.html">Technical Support</a> web page. >+For technical support, please see our <a href="hercsupp.html">Technical Support</a> web page. > </P> > > <p><center><hr width=15% noshade><p> > <a href="index.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<p class="lastupd">Last updated $Date: 2007/06/22 12:04:39 $ $Revision: 1.47 $</p> >+<p class="lastupd">Last updated $Date: 2008/01/26 21:06:24 $ $Revision: 1.50 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsca.html hercules-20070717/html/hercmsca.html >--- hercules-3.05/html/hercmsca.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsca.html 2008-09-03 13:07:48.000000000 +0200 >@@ -13,7 +13,7 @@ ESA/390, and z/Architecture emulator. > <h3>Messages</h3> > > >-<dl> >+<dl class="messages"> > <dt> > <code><a name="HHCCA001I"> > HHCCA001I <em>CCUU</em>:Connect out to <em>ipaddr:port</em> failed during initial status : <em>System Cause Text</em> >@@ -422,10 +422,10 @@ HHCCA019E <em>CCUU</em>:BSC comm thread > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.11 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmscf.html hercules-20070717/html/hercmscf.html >--- hercules-3.05/html/hercmscf.html 2006-11-27 02:07:26.000000000 +0100 >+++ hercules-20070717/html/hercmscf.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: CF > This page describes the terminal emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCCF001S"> > HHCCF001S Error reading file <em>filename</em> line <em>lineno</em>: > <em>error</em> >@@ -1087,10 +1087,10 @@ HHCCF085S <em>fname1</em> Open error fil > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 19 October 2005 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.19 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmscp.html hercules-20070717/html/hercmscp.html >--- hercules-3.05/html/hercmscp.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmscp.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: CP > This page describes the CPU emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCCP001W"> > HHCCP001W CPU thread set priority <em>priority</em> failed: <em>error</em> > </a></code> >@@ -154,10 +154,10 @@ system. > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.10 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsct.html hercules-20070717/html/hercmsct.html >--- hercules-3.05/html/hercmsct.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsct.html 2008-09-03 13:07:48.000000000 +0200 >@@ -13,7 +13,7 @@ Emulation</h1> > This page describes the channel-to-channel adapter emulation messages for > the Hercules S/370, ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCCT001I"> > HHCCT001I > </a></code> >@@ -28,10 +28,10 @@ HHCCT001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmscu.html hercules-20070717/html/hercmscu.html >--- hercules-3.05/html/hercmscu.html 2006-03-29 01:53:25.000000000 +0200 >+++ hercules-20070717/html/hercmscu.html 2008-09-03 13:07:48.000000000 +0200 >@@ -14,6 +14,7 @@ cckd_swap) are described here. The util > both the <a href="cckddasd.html#utilities">utility</a> commands and > Hercules. > <h3>Messages</h3> >+<p> > Messages are in the format > <br> > <b>HHCCU</b><i>nnn</i><b>t</b> <i>file</i> message text >@@ -28,7 +29,7 @@ number and <i>n</i> is the shadow file n > The <i>file</i> portion of the message is omitted below for brevity. > <p><center><hr width="15%" noshade></center> > <p> >-<dl> >+<dl class="messages"> > > <dt><code><a name="HHCCU101I"> > HHCCU101I converting to <em>endian-format</em> >@@ -529,22 +530,15 @@ HHCCU999E not a compressed file > <dd>cckdutil.c functions cckd_swapend, cckd_comp and cckd_chkdsk > </dl> > >- >- >- >- >- > </dl> > <p><center><hr width="15%" noshade></center> > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width="15%" noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<p> >-<small> >-Last updated 22 February 2006 >-</small> >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.4 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsda.html hercules-20070717/html/hercmsda.html >--- hercules-3.05/html/hercmsda.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsda.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: DA > This page describes the DASD emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDA001I"> > HHCDA001I > </a></code> >@@ -26,10 +26,10 @@ HHCDA001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsdc.html hercules-20070717/html/hercmsdc.html >--- hercules-3.05/html/hercmsdc.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsdc.html 2008-09-03 13:07:48.000000000 +0200 >@@ -17,7 +17,7 @@ Note that this utility can be called by > for all of these functions. The name used to invoke the program is > reported in each of these messages as <code><em>progname</em></code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDC001E"> > HHCDC001E <em>progname</em>: <em>filename</em> open > error: <em>error</em> >@@ -154,10 +154,10 @@ HHCDC010I Copy successful !!! > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsdg.html hercules-20070717/html/hercmsdg.html >--- hercules-3.05/html/hercmsdg.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsdg.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: DG > This page describes the DYNGUI.DLL messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > > <!-- ----------------------------------------------------------- --> > <!-- ------ INDEX ---------------------------------------- --> >@@ -192,10 +192,10 @@ HHCDG007S malloc pszCommandBuff failed: > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsdi.html hercules-20070717/html/hercmsdi.html >--- hercules-3.05/html/hercmsdi.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsdi.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: DI > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>dasdinit</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDI001I"> > HHCDI001I DASD initialization successfully completed. > </a></code> >@@ -22,15 +22,26 @@ ready for use. > <dt>Issued by > <dd>dasdinit.c, function main > </dl> >+<dt><code><a name="HHCDI002I"> >+HHCDI002I DASD initialization unsuccessful >+</a></code> >+<dd><dl> >+ <dt>Meaning >+ <dd>Initialization of the requested DASD volume was not successful. >+ <dt>Action >+ <dd>Refer to preceding error messages to determine the cause. >+ <dt>Issued by >+ <dd>dasdinit.c, function main >+ </dl> > </dl> > <p><center><hr width=15% noshade></center> > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsdl.html hercules-20070717/html/hercmsdl.html >--- hercules-3.05/html/hercmsdl.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsdl.html 2008-09-03 13:07:48.000000000 +0200 >@@ -17,7 +17,7 @@ argument to <code>dasdload</code>, the v > message level. The default verbosity level is 1, which causes level 0 and 1 > information messages to be issued. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDL001E"> > HHCDL001E Cannot open <em>filename</em>: <em>error</em> > </a></code> >@@ -1696,10 +1696,10 @@ file named <code><em>filename</em></code > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.7 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsds.html hercules-20070717/html/hercmsds.html >--- hercules-3.05/html/hercmsds.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsds.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: DS > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>dasdisup</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDS001E"> > HHCDS001E Cannot obtain storage for member array: <em>error</em> > </a></code> >@@ -272,10 +272,10 @@ from the length of the member in the ref > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsdt.html hercules-20070717/html/hercmsdt.html >--- hercules-3.05/html/hercmsdt.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsdt.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: DT > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>dasdcat</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDT001E"> > HHCDT001E failed to open image <em>filename</em> > </a></code> >@@ -81,10 +81,10 @@ name specification and rerun <code>dasdc > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsdu.html hercules-20070717/html/hercmsdu.html >--- hercules-3.05/html/hercmsdu.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsdu.html 2008-09-03 13:07:48.000000000 +0200 >@@ -14,7 +14,7 @@ This page describes the messages for the > ESA/390, and z/Architecture emulator DASD utility programs that are common > to more than one utility. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCDU001I"> > HHCDU001I Updating cyl <em>cylinder</em> head <em>head</em> > </a></code> >@@ -885,10 +885,10 @@ been successfully created. It contains < > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 18 December 2002 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.5 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsg.html hercules-20070717/html/hercmsg.html >--- hercules-3.05/html/hercmsg.html 2006-03-29 01:53:25.000000000 +0200 >+++ hercules-20070717/html/hercmsg.html 2008-09-03 13:07:48.000000000 +0200 >@@ -121,10 +121,10 @@ identifier in the above list. > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercinst.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/02 20:37:10 $ $Revision: 1.19 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmshd.html hercules-20070717/html/hercmshd.html >--- hercules-3.05/html/hercmshd.html 2006-01-28 04:32:17.000000000 +0100 >+++ hercules-20070717/html/hercmshd.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: HT > This page describes the Dynamic Loader messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCHD001E"> > HHCHD001E registration alloc failed for <em>entry</em> > </a></code> >@@ -251,10 +251,10 @@ HHCHD103I Module <em>module</em> unloade > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.9 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmshe.html hercules-20070717/html/hercmshe.html >--- hercules-3.05/html/hercmshe.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmshe.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: HE > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>hetinit</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCHE001I"> > HHCHE001I > </a></code> >@@ -26,10 +26,10 @@ HHCHE001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmshg.html hercules-20070717/html/hercmshg.html >--- hercules-3.05/html/hercmshg.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmshg.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: HG > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>hetget</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCHG001I"> > HHCHG001I > </a></code> >@@ -26,10 +26,10 @@ HHCHG001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmshm.html hercules-20070717/html/hercmshm.html >--- hercules-3.05/html/hercmshm.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmshm.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: HM > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>hetmap</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCHM001I"> > HHCHM001I > </a></code> >@@ -26,10 +26,10 @@ HHCHM001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsht.html hercules-20070717/html/hercmsht.html >--- hercules-3.05/html/hercmsht.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsht.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: HT > This page describes the HTTP server messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCHT001I"> > HHCHT001I HTTP listener thread started: tid=<em>threadid</em>, > pid=<em>processid</em> >@@ -162,10 +162,10 @@ HHCHT014I HTTPROOT = <em>pathname</em> > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 4 July 2005 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.7 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmshu.html hercules-20070717/html/hercmshu.html >--- hercules-3.05/html/hercmshu.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmshu.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: HU > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>hetutil</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCHU001I"> > HHCHU001I > </a></code> >@@ -26,10 +26,10 @@ HHCHU001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsif.html hercules-20070717/html/hercmsif.html >--- hercules-3.05/html/hercmsif.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsif.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: IF > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>hercifc</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCIF001E"> > HHCIF001E <em>programname</em>: Must be called from within Hercules. > </a></code> >@@ -86,10 +86,10 @@ The program was executed using the name > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsif.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsin.html hercules-20070717/html/hercmsin.html >--- hercules-3.05/html/hercmsin.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmsin.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: IN > This page describes the system initialization messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCIN001S"> > HHCIN001S Cannot register SIGINT handler: <em>error</em> > </a></code> >@@ -132,10 +132,10 @@ HHCIN099I Hercules terminated > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.9 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmslc.html hercules-20070717/html/hercmslc.html >--- hercules-3.05/html/hercmslc.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmslc.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: LC > This page describes the LAN Channel Station emulation messages for the > Hercules S/370, ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCLC001I"> > HHCLC001I > </a></code> >@@ -26,10 +26,10 @@ HHCLC001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmslg.html hercules-20070717/html/hercmslg.html >--- hercules-3.05/html/hercmslg.html 2005-11-13 12:15:53.000000000 +0100 >+++ hercules-20070717/html/hercmslg.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: LG > This page describes messages related to the log funtions of the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCLG001E"> > HHCLG001E Error redirecting stdout: <em>error</em> > </a></code> >@@ -97,38 +97,96 @@ HHCLG009S Syslog message pipe creation f > <dt>Meaning > <dd>An attempt to create the pipe for the system logger failed. > The error is described by <code><em>error</em></code>. >+ <dt>Action >+ <dd>Check that your firewall is not preventing Hercules from >+ opening a listening pipe. > <dt>Issued by > <dd>logger.c, function logger_init > </dl> >-<dt><code><a name="HHCHT010S"> >-HHCLG010S Syslog write message pipe open failed: <em>error</em> >+<dt><code><a name="HHCLG012E"> >+HHCLG012E Cannot create logger thread: <em>error</em> > </a></code> > <dd><dl> > <dt>Meaning >- <dd>An attempt to open a stream for the logger pipe failed. >-The error is described by <code><em>error</em></code>. >+ <dd>An attempt to create the logger thread failed. >+ <code><em>error</em></code> is the description of the error code >+ returned by the pthread_create call. >+ <dt>Action >+ <dd>If the error is "No error" ensure that Hercules has >+ been correctly linked with the pthread library. > <dt>Issued by > <dd>logger.c, function logger_init > </dl> >-<dt><code><a name="HHCHT011S"> >-HHCLG011S Syslog read message pipe open failed: <em>error</em> >+<dt><code><a name="HHCLG014E"> >+HHCLG014E log not active > </a></code> > <dd><dl> > <dt>Meaning >- <dd>An attempt to open a stream for the logger pipe failed. >-The error is described by <code><em>error</em></code>. >+ <dd>A <em>log off</em> command was issued but there was no active log file. >+ <dt>Action >+ <dd>None. > <dt>Issued by >- <dd>logger.c, function logger_init >+ <dd>logger.c, function log_sethrdcpy >+ </dl> >+<dt><code><a name="HHCLG015I"> >+HHCLG015I log closed >+</a></code> >+<dd><dl> >+ <dt>Meaning >+ <dd>The active log file has been closed as a result of a <em>log off</em> command. >+ <dt>Action >+ <dd>None. >+ <dt>Issued by >+ <dd>logger.c, function log_sethrdcpy >+ </dl> >+<dt><code><a name="HHCLG016E"> >+HHCLG016E Error opening logfile <em>filename</em>: <em>error</em> >+</a></code> >+<dd><dl> >+ <dt>Meaning >+ <dd>The new log file requested by a <em>log</em> command could not be opened. >+ <code><em>error</em></code> is the description of the error code >+ returned by the open call. >+ <dt>Action >+ <dd>Reissue the <em>log</em> command with the correct filename. >+ <dt>Issued by >+ <dd>logger.c, function log_sethrdcpy >+ </dl> >+<dt><code><a name="HHCLG017S"> >+HHCLG017S log file fdopen failed for <em>filename</em>: <em>error</em> >+</a></code> >+<dd><dl> >+ <dt>Meaning >+ <dd>The logger was unable to obtain the file descriptor for the new >+ log file requested by a <em>log</em> command. >+ <code><em>error</em></code> is the description of the error code >+ returned by the fdopen call. >+ <dt>Action >+ <dd>Reissue the <em>log</em> command with the correct filename. >+ <dt>Issued by >+ <dd>logger.c, function log_sethrdcpy >+ </dl> >+<dt><code><a name="HHCLG018I"> >+HHCLG018I log switched to <em>filename</em> >+</a></code> >+<dd><dl> >+ <dt>Meaning >+ <dd>As a result of a <em>log</em> command the logger is now writing >+ to the requested log file. >+ <dt>Action >+ <dd>None. >+ <dt>Issued by >+ <dd>logger.c, function log_sethrdcpy > </dl> > </dl> > <p><center><hr width=15% noshade></center> > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2008/02/27 17:06:16 $ $Revision: 1.8 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmspn.html hercules-20070717/html/hercmspn.html >--- hercules-3.05/html/hercmspn.html 2006-02-28 02:37:05.000000000 +0100 >+++ hercules-20070717/html/hercmspn.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: PN > This page describes the control panel messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCPN001I"> > HHCPN001I Control panel thread started: tid=<em>threadid</em>, > pid=<em>processid</em> >@@ -195,14 +195,14 @@ entered via the Hercules hardware consol > <dt>Issued by > <dd>hsccmd.c, function sh_cmd > </dl> >-</dl> > <dt><code><a name="HHCPN181E"> >-HHCPN181E Device number s:CCUU not found >+HHCPN181E Device number <em>s:CCUU</em> not found > </a></code> > <dd><dl> > <dt>Meaning >- <dd>The device number "CCUU" on Logical Channel Subsystem "s" was not found >- in the configuration. >+ <dd>The device number <code><em>CCUU</em></code> >+ on Logical Channel Subsystem <code><em>s</em></code> >+ was not found in the configuration. > <dt>Action > <dd>Reissue the command with an existing device number. > <dt>Issued by >@@ -213,10 +213,10 @@ HHCPN181E Device number s:CCUU not found > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.12 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmspr.html hercules-20070717/html/hercmspr.html >--- hercules-3.05/html/hercmspr.html 2007-03-06 17:40:31.000000000 +0100 >+++ hercules-20070717/html/hercmspr.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: PR > This page describes the printer emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCPR001E"> > HHCPR001E File name missing or invalid for printer <em>address</em> > </a></code> >@@ -182,6 +182,6 @@ If you have a question about Hercules, s > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<p class="lastupd">Last updated $Date: 2007/03/05 14:44:17 $ $Revision: 1.9 $</p> >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.10 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmspu.html hercules-20070717/html/hercmspu.html >--- hercules-3.05/html/hercmspu.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmspu.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: PU > This page describes the card punch emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCPU001E"> > HHCPU001E File name missing or invalid > </a></code> >@@ -68,10 +68,10 @@ by <code><em>error</em></code>. > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsrd.html hercules-20070717/html/hercmsrd.html >--- hercules-3.05/html/hercmsrd.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmsrd.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: RD > This page describes the card reader emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCRD001E"> > HHCRD001E Out of memory > </a></code> >@@ -260,10 +260,10 @@ reader definition. > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.7 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmssd.html hercules-20070717/html/hercmssd.html >--- hercules-3.05/html/hercmssd.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmssd.html 2008-09-03 13:07:48.000000000 +0200 >@@ -12,7 +12,7 @@ This page describes the messages for the > ESA/390, and z/Architecture emulator common routines to support socket > devices. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCSD001I"> > HHCSD001I > </a></code> >@@ -27,10 +27,10 @@ HHCSD001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 29 December 2002 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.5 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsta.html hercules-20070717/html/hercmsta.html >--- hercules-3.05/html/hercmsta.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmsta.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: TA > This page describes the tape device emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTA001I"> > HHCTA001I > </a></code> >@@ -26,10 +26,10 @@ HHCTA001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmstc.html hercules-20070717/html/hercmstc.html >--- hercules-3.05/html/hercmstc.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmstc.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: TC > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>tapecopy</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTC001I"> > HHCTC001I > </a></code> >@@ -26,10 +26,10 @@ HHCTC001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmste.html hercules-20070717/html/hercmste.html >--- hercules-3.05/html/hercmste.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmste.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: TE > This page describes the terminal emulation messages for the Hercules S/370, > ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTE001I"> > HHCTE001I Console connection thread started: tid=<em>threadid</em>, > pid=<em>processid</em> >@@ -128,29 +128,29 @@ HHCTE010E CNSLPORT statement invalid: <e > <dd>console.c, function console_connection_handler > </dl> > <dt><code><a name="HHCTE011E"> >-HHCTE011E Device <i>devn</i>: Invalid IP address: <i>ipaddr</i> >+HHCTE011E Device <em>devn</em>: Invalid IP address: <em>ipaddr</em> > </a></code> > <dd><dl> > <dt>Meaning >- <dd>The IP address <code>ipaddr</code> is invalid. >+ <dd>The IP address <code><em>ipaddr</em></code> is invalid. > <dt>Issued by > <dd>console.c, function loc3270_init_handler or constty_init_handler. > </dl> > <dt><code><a name="HHCTE012E"> >-HHCTE012E Device <i>devn</i>: Invalid mask value: <i>ipmask</i> >+HHCTE012E Device <em>devn</em>: Invalid mask value: <em>ipmask</em> > </a></code> > <dd><dl> > <dt>Meaning >- <dd>The mask value <code>ipmask</code> is invalid. >+ <dd>The mask value <code><em>ipmask</em></code> is invalid. > <dt>Issued by > <dd>console.c, function loc3270_init_handler or constty_init_handler. > </dl> > <dt><code><a name="HHCTE013E"> >-HHCTE013E Device <i>devn</i>: Extraneous argument(s): <i>xxx</i>... >+HHCTE013E Device <em>devn</em>: Extraneous argument(s): <em>xxx</em>... > </a></code> > <dd><dl> > <dt>Meaning >- <dd>The argument <code>xxx</code> and any which follow it (if any) >+ <dd>The argument <code><em>xxx</em></code> and any which follow it (if any) > was not recognized nor understood and are thus invalid. > <dt>Issued by > <dd>console.c, function loc3270_init_handler or constty_init_handler. >@@ -170,10 +170,10 @@ HHCTE014I <em>type</em> device <em>devn< > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 1 March 2005 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.12 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmstm.html hercules-20070717/html/hercmstm.html >--- hercules-3.05/html/hercmstm.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmstm.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: TM > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>tapemap</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTM001I"> > HHCTM001I > </a></code> >@@ -26,10 +26,10 @@ HHCTM001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2002 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsts.html hercules-20070717/html/hercmsts.html >--- hercules-3.05/html/hercmsts.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmsts.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: TS > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator utility program <code>tapesplt</code>. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTS001I"> > HHCTS001I > </a></code> >@@ -26,10 +26,10 @@ HHCTS001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2002 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmstt.html hercules-20070717/html/hercmstt.html >--- hercules-3.05/html/hercmstt.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmstt.html 2008-09-03 13:07:48.000000000 +0200 >@@ -13,7 +13,7 @@ TT - TOD Clock and Timer Services</h1> > <p>This page describes the TOD Clock and Timer Services messages for the > Hercules S/370, ESA/390, and z/Architecture emulator. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTT001W"> > HHCTT001W Timer thread set priority <em>priority</em> failed: > <em>error</em> >@@ -59,10 +59,10 @@ HHCTT003I Timer thread ended > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.5 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmstu.html hercules-20070717/html/hercmstu.html >--- hercules-3.05/html/hercmstu.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmstu.html 2008-09-03 13:07:48.000000000 +0200 >@@ -11,7 +11,7 @@ Hercules Version 3: System Messages: TU > This page describes the messages for the Hercules S/370, > ESA/390, and z/Architecture emulator TUN/TAP support routines. > <h3>Messages</h3> >-<dl> >+<dl class="messages"> > <dt><code><a name="HHCTU001I"> > HHCTU001I > </a></code> >@@ -26,10 +26,10 @@ HHCTU001I > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.6 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercmsvm.html hercules-20070717/html/hercmsvm.html >--- hercules-3.05/html/hercmsvm.html 2005-11-13 12:15:54.000000000 +0100 >+++ hercules-20070717/html/hercmsvm.html 2008-09-03 13:07:48.000000000 +0200 >@@ -13,7 +13,7 @@ ESA/390, and z/Architecture emulator. > <h3>Messages</h3> > > >-<dl> >+<dl class="messages"> > <dt> > <code><a name="HHCVM001I"> > HHCVM001I *<em>panel_command</em>* panel command issued by guest >@@ -37,7 +37,7 @@ HHCVM002I *<em>panel_command</em> comman > </a></code> > <dd><dl> > <dt>Explanation >- <dd>The <em>panel_command</em>panel command has been carried out by the panel command processor. Note that this message only appears if the guest issued diagnose 8 instruction specified that it didn't request the command response to be placed in a supplied buffer. >+ <dd>The <em>panel_command</em> panel command has been carried out by the panel command processor. Note that this message only appears if the guest issued diagnose 8 instruction specified that it didn't request the command response to be placed in a supplied buffer. > <dt>System Action > <dd>The system continues > <dt>Operator Action >@@ -87,10 +87,10 @@ HHCVM004E Host command processing not in > <p> > If you have a question about Hercules, see the > <a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page. >+ > <p><center><hr width=15% noshade> > <a href="hercmsg.html"><img src="images/back.gif" border=0 alt="back"></a> > </center> >-<small> >-<p>Last updated 3 October 2003 >+<p class="lastupd">Last updated $Date: 2007/10/06 19:44:28 $ $Revision: 1.7 $</p> > </BODY> > </HTML> >diff -Naupr hercules-3.05/html/hercules.css hercules-20070717/html/hercules.css >--- hercules-3.05/html/hercules.css 2005-12-20 14:10:30.000000000 +0100 >+++ hercules-20070717/html/hercules.css 2008-09-03 13:07:48.000000000 +0200 >@@ -92,6 +92,52 @@ pre.screen80 > border-color: light-gray; > } > >+/* Messages and codes: Message text */ >+dl.messages dt >+{ >+ padding: 5px; >+ border-style: solid none none none; >+ border-width: 1px; >+ margin-top: 1.5em; >+} >+ >+/* Messages and codes: Message text */ >+dl.messages dt code, dl.messages dt pre, dl.messages dt tt >+{ >+ font-family: Arial; >+ font-style: italic; >+ font-weight: bold; >+ font-size: 100%; >+} >+ >+/* Messages and codes: Variable items in message text */ >+dl.messages dt code em, dl.messages dt pre em, dl.messages dt tt i >+{ >+ font-family: Arial; >+ font-style: italic; >+ font-weight: normal; >+ font-size: 100%; >+} >+ >+/* Messages and codes: Subheadings in message description */ >+dl.messages dd dt >+{ >+ font-family: Arial; >+ font-style: italic; >+ font-weight: bold; >+ padding: 2px; >+ border-style: none; >+ margin-top: 0; >+} >+ >+/* Messages and codes: Reference to variable items in message description */ >+dl.messages dd dd code em, dl.messages dd dd tt i >+{ >+ font-family: Arial; >+ font-style: italic; >+ font-weight: normal; >+ font-size: 100%; >+} > --> > > </style> >diff -Naupr hercules-3.05/html/images/.cvsignore hercules-20070717/html/images/.cvsignore >--- hercules-3.05/html/images/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/html/images/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+.DS_Store >+Thumbs.db >diff -Naupr hercules-3.05/html/index.html hercules-20070717/html/index.html >--- hercules-3.05/html/index.html 2007-06-23 21:39:18.000000000 +0200 >+++ hercules-20070717/html/index.html 2008-09-03 13:07:48.000000000 +0200 >@@ -39,6 +39,7 @@ The Hercules System/370, ESA/390, and z/ > <b>Hercules</b> is an open source software implementation of the mainframe > System/370 and ESA/390 architectures, in addition to the new 64-bit > z/Architecture. Hercules runs under Linux, Windows (98, NT, 2000, and XP), >+Solaris, FreeBSD, > and Mac OS X (10.3 and later). > > <p> >@@ -235,6 +236,14 @@ Thanks much for making this product part > ”</em> > <br>— > Roby Gamboa >+<p> >+<em>“ >+I have DOS and DOS/VS running on Hercules with >+some demo applications, both batch and on-line. It does bring back >+some good memories. My compliments go to the Hercules team. Thank you. >+”</em> >+<br>— >+Bill Carlborg > > <p><br><br> > >@@ -257,8 +266,8 @@ describing how to run Linux/390 under He > Then suddenly, all mention of Hercules was mysteriously > removed from the online edition of the book! > Read the story of the disappearing Redbook chapter at >-<a href="http://www.trustsec.de/deb390/print.php?sid=26"> >-http://www.trustsec.de/deb390/print.php?sid=26</a> >+<a href="http://www2.marist.edu/htbin/wlvtype?LINUX-VM.25658"> >+http://www2.marist.edu/htbin/wlvtype?LINUX-VM.25658</a> > > <p> > View the foils from Jay Maynard's presentation given at >@@ -360,9 +369,9 @@ Other Hercules-related sites > http://groups.yahoo.com/group/hercules-390</a>. > <p> > Bug reports (together with your diagnosis of the fault, please) >-may be sent to me, <a href="http://www.conmicro.cx">Jay Maynard</a>, >-at <a href="mailto:jmaynard@conmicro.cx"><em>jmaynard </em>@<em> >-conmicro.cx</em></a>. >+may be sent to me, <a href="http://www.conmicro.com">Jay Maynard</a>, >+at <a href="mailto:jmaynard@conmicro.com"><em>jmaynard </em>@<em> >+conmicro.com</em></a>. > > <p><br> > >@@ -378,7 +387,7 @@ Other product names mentioned here are t > > </small> > >-<p class="lastupd">Last updated $Date: 2007/06/23 19:23:26 $ $Revision: 1.55 $</p> >+<p class="lastupd">Last updated $Date: 2008/05/07 11:54:03 $ $Revision: 1.58 $</p> > > </td></tr></table> > >diff -Naupr hercules-3.05/html/Makefile.am hercules-20070717/html/Makefile.am >--- hercules-3.05/html/Makefile.am 2006-03-29 01:53:25.000000000 +0200 >+++ hercules-20070717/html/Makefile.am 2008-09-03 13:07:48.000000000 +0200 >@@ -8,7 +8,7 @@ dist_pkgdata_DATA = cckddasd.html fish > hercmsrd.html hercmssd.html hercmsta.html hercmstc.html hercmste.html \ > hercmstm.html hercmsts.html hercmstt.html hercmstu.html hercmsvm.html \ > hercnew.html hercrdr.html hercrnot.html hercsupp.html herctcp.html \ >- hercules.html index.html tasks.html hercules.css >+ hercules.html index.html shared.html tasks.html hercules.css > > include_sources = include/header.htmlpart include/footer.htmlpart > >diff -Naupr hercules-3.05/html/Makefile.in hercules-20070717/html/Makefile.in >--- hercules-3.05/html/Makefile.in 2007-06-23 16:59:39.000000000 +0200 >+++ hercules-20070717/html/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,469 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >- >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = .. >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-subdir = html >-DIST_COMMON = $(dist_images_pkgdata_DATA) $(dist_include_pkgdata_DATA) \ >- $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ >- $(srcdir)/Makefile.in >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = $(top_builddir)/config.h >-CONFIG_CLEAN_FILES = >-SOURCES = >-DIST_SOURCES = >-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; >-am__vpath_adj = case $$p in \ >- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ >- *) f=$$p;; \ >- esac; >-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; >-am__installdirs = "$(DESTDIR)$(images_pkgdatadir)" \ >- "$(DESTDIR)$(include_pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" >-dist_images_pkgdataDATA_INSTALL = $(INSTALL_DATA) >-dist_include_pkgdataDATA_INSTALL = $(INSTALL_DATA) >-dist_pkgdataDATA_INSTALL = $(INSTALL_DATA) >-DATA = $(dist_images_pkgdata_DATA) $(dist_include_pkgdata_DATA) \ >- $(dist_pkgdata_DATA) >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-dist_pkgdata_DATA = cckddasd.html fishgui.html hercconf.html hercfaq.html \ >- hercinst.html herclic.html hercload.html hercmsca.html hercmscf.html \ >- hercmscp.html hercmsct.html hercmscu.html hercmsda.html hercmsdc.html \ >- hercmsdg.html hercmsdi.html hercmsdl.html hercmsds.html hercmsdt.html \ >- hercmsdu.html hercmsg.html hercmshd.html hercmshe.html hercmshg.html \ >- hercmshm.html hercmsht.html hercmshu.html hercmsif.html hercmsin.html \ >- hercmslc.html hercmslg.html hercmspn.html hercmspr.html hercmspu.html \ >- hercmsrd.html hercmssd.html hercmsta.html hercmstc.html hercmste.html \ >- hercmstm.html hercmsts.html hercmstt.html hercmstu.html hercmsvm.html \ >- hercnew.html hercrdr.html hercrnot.html hercsupp.html herctcp.html \ >- hercules.html index.html tasks.html hercules.css >- >-include_sources = include/header.htmlpart include/footer.htmlpart >-include_pkgdatadir = $(pkgdatadir)/include >-dist_include_pkgdata_DATA = $(include_sources) >-images_sources = images/loadoffu.gif images/restartu.gif \ >- images/back.gif images/loadonu.gif images/startd.gif \ >- images/bkued.gif images/loadu.gif images/startu.gif \ >- images/blueu.gif images/manoffu.gif images/stopd.gif \ >- images/dial1.gif images/manonu.gif images/stopu.gif \ >- images/dial2.gif images/note.gif images/stored.gif \ >- images/dial3.gif images/osi-certified-60x50.jpg images/storeu.gif \ >- images/dial4.gif images/poweroffd.gif images/sysoffu.gif \ >- images/favicon.ico images/poweroffu.gif images/sysonu.gif \ >- images/greend.gif images/poweronoffd.gif images/translucentoffd.gif \ >- images/greenu.gif images/poweronoffu.gif images/translucentoffu.gif \ >- images/hercpic-rblk-256.gif images/poweronond.gif images/translucentond.gif \ >- images/hercpic-rblk-80.gif images/powerononu.gif images/translucentonu.gif \ >- images/interruptd.gif images/redd.gif images/waitoffu.gif \ >- images/interruptu.gif images/redu.gif images/waitonu.gif \ >- images/loadd.gif images/restartd.gif >- >-images_pkgdatadir = $(pkgdatadir)/images >-dist_images_pkgdata_DATA = $(images_sources) >-all: all-am >- >-.SUFFIXES: >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu html/Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --gnu html/Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >-install-dist_images_pkgdataDATA: $(dist_images_pkgdata_DATA) >- @$(NORMAL_INSTALL) >- test -z "$(images_pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(images_pkgdatadir)" >- @list='$(dist_images_pkgdata_DATA)'; for p in $$list; do \ >- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ >- f=$(am__strip_dir) \ >- echo " $(dist_images_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(images_pkgdatadir)/$$f'"; \ >- $(dist_images_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(images_pkgdatadir)/$$f"; \ >- done >- >-uninstall-dist_images_pkgdataDATA: >- @$(NORMAL_UNINSTALL) >- @list='$(dist_images_pkgdata_DATA)'; for p in $$list; do \ >- f=$(am__strip_dir) \ >- echo " rm -f '$(DESTDIR)$(images_pkgdatadir)/$$f'"; \ >- rm -f "$(DESTDIR)$(images_pkgdatadir)/$$f"; \ >- done >-install-dist_include_pkgdataDATA: $(dist_include_pkgdata_DATA) >- @$(NORMAL_INSTALL) >- test -z "$(include_pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(include_pkgdatadir)" >- @list='$(dist_include_pkgdata_DATA)'; for p in $$list; do \ >- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ >- f=$(am__strip_dir) \ >- echo " $(dist_include_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(include_pkgdatadir)/$$f'"; \ >- $(dist_include_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(include_pkgdatadir)/$$f"; \ >- done >- >-uninstall-dist_include_pkgdataDATA: >- @$(NORMAL_UNINSTALL) >- @list='$(dist_include_pkgdata_DATA)'; for p in $$list; do \ >- f=$(am__strip_dir) \ >- echo " rm -f '$(DESTDIR)$(include_pkgdatadir)/$$f'"; \ >- rm -f "$(DESTDIR)$(include_pkgdatadir)/$$f"; \ >- done >-install-dist_pkgdataDATA: $(dist_pkgdata_DATA) >- @$(NORMAL_INSTALL) >- test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" >- @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ >- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ >- f=$(am__strip_dir) \ >- echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ >- $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ >- done >- >-uninstall-dist_pkgdataDATA: >- @$(NORMAL_UNINSTALL) >- @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ >- f=$(am__strip_dir) \ >- echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ >- rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ >- done >-tags: TAGS >-TAGS: >- >-ctags: CTAGS >-CTAGS: >- >- >-distdir: $(DISTFILES) >- $(mkdir_p) $(distdir)/images $(distdir)/include >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >-check-am: all-am >-check: check-am >-all-am: Makefile $(DATA) >-installdirs: >- for dir in "$(DESTDIR)$(images_pkgdatadir)" "$(DESTDIR)$(include_pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ >- test -z "$$dir" || $(mkdir_p) "$$dir"; \ >- done >-install: install-am >-install-exec: install-exec-am >-install-data: install-data-am >-uninstall: uninstall-am >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-am >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-am >- >-clean-am: clean-generic clean-libtool mostlyclean-am >- >-distclean: distclean-am >- -rm -f Makefile >-distclean-am: clean-am distclean-generic distclean-libtool >- >-dvi: dvi-am >- >-dvi-am: >- >-html: html-am >- >-info: info-am >- >-info-am: >- >-install-data-am: install-dist_images_pkgdataDATA \ >- install-dist_include_pkgdataDATA install-dist_pkgdataDATA >- >-install-exec-am: >- >-install-info: install-info-am >- >-install-man: >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-am >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-am >- >-mostlyclean-am: mostlyclean-generic mostlyclean-libtool >- >-pdf: pdf-am >- >-pdf-am: >- >-ps: ps-am >- >-ps-am: >- >-uninstall-am: uninstall-dist_images_pkgdataDATA \ >- uninstall-dist_include_pkgdataDATA uninstall-dist_pkgdataDATA \ >- uninstall-info-am >- >-.PHONY: all all-am check check-am clean clean-generic clean-libtool \ >- distclean distclean-generic distclean-libtool distdir dvi \ >- dvi-am html html-am info info-am install install-am \ >- install-data install-data-am install-dist_images_pkgdataDATA \ >- install-dist_include_pkgdataDATA install-dist_pkgdataDATA \ >- install-exec install-exec-am install-info install-info-am \ >- install-man install-strip installcheck installcheck-am \ >- installdirs maintainer-clean maintainer-clean-generic \ >- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ >- ps ps-am uninstall uninstall-am \ >- uninstall-dist_images_pkgdataDATA \ >- uninstall-dist_include_pkgdataDATA uninstall-dist_pkgdataDATA \ >- uninstall-info-am >- >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/html/shared.html hercules-20070717/html/shared.html >--- hercules-3.05/html/shared.html 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/html/shared.html 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,561 @@ >+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "http://www.w3.org/TR/html4/loose.dtd"> >+<HTML> >+<HEAD><TITLE> >+Hercules: Shared Device Server</TITLE> >+<LINK REL=STYLESHEET TYPE="text/css" HREF="hercules.css"> >+</HEAD> >+<BODY BGCOLOR="#ffffcc" TEXT="#000000" LINK="#0000A0" >+ VLINK="#008040" ALINK="#000000"> >+<h1>Hercules Shared Device Server</h1> >+<hr noshade> >+<h2>Contents</h2> >+<ul> >+<li><a href="#overview"> Overview </a> >+<li><a href="#technical"> Technical BS </a> >+<li><a href="#caching"> Caching </a> >+<li><a href="#compression"> Compression </a> >+<li><a href="#todo"> To Do </a> >+</ul> >+ >+<p> >+ >+<hr noshade> >+<h2><a NAME="overview">Overview</a></h2> >+ >+(C) Copyright Greg Smith, 2002-2007 >+ >+<p> >+ >+Shared device support allows multiple Hercules instances to share >+devices. The device will be 'local' to one instance and 'remote' >+to all other instances. The local instance is the 'server' for >+that device and the remote instance is the 'client'. You do not >+have to IPL an operating system on the device server. Any number >+of Hercules instances can act as a server in a "Hercplex". >+ >+<p> >+ >+To use a device on a remote system, instead of specifying a file >+name on the device config statement, you specify >+ >+<p> >+<blockquote> >+ <code>ip_address_or_name:port:devnum</code> >+</blockquote> >+<p> >+ >+For example: >+ >+<pre class="jcl"> >+ 0100 3350 localhost:3990:0100 >+</pre> >+ >+which says there is a device server on the local host listening >+on port 3990 and we want to use its 0100 device as 0100. The >+default port is 3990 and the default remote device number is the >+local device number. So we could say: >+ >+<pre class="jcl"> >+ 0100 3350 localhost >+</pre> >+ >+instead, providing we don't actually have a file 'localhost'. >+Interestingly, the instance on the local host listening on 3990 >+could have a statement: >+ >+<pre class="jcl"> >+ 0100 3350 192.168.200.1::0200 >+</pre> >+ >+which means that instance in turn will use device 0200 on the >+server at 192.168.200.1 listening on port 3990. The original >+instance will have to 'hop' thru the second instance to get >+to the real device. >+ >+<p> >+ >+Device sharing can be 'split' between multiple instances. >+For example, suppose instance A has: >+ >+<pre class="jcl"> >+ SHRDPORT 3990 >+ 0100 3350 localhost:3991 >+ 0101 3350 mvscat >+</pre> >+ >+and instance B has: >+ >+<pre class="jcl"> >+ SHRDPORT 3991 >+ 0100 3350 mvsres >+ 0101 3350 localhost >+</pre> >+ >+Then each instance acts as both a client and as a server. >+ >+<p> >+ >+When 'SHRDPORT' is specified, thread 'shared_server' is started >+at the end of Hercules initialization. In the example above, >+neither Hercules instance can initialize their devices until the >+server is started on each system. In this case, the device trying >+to access a server gets the 'connecting' bit set on in the DEVBLK >+and the device still needs to initialize. After the shared server >+is started, a thread is attached for each device that is connecting >+to complete the connection (which is the device init handler). >+ >+<p><br> >+ >+<h2><a NAME="technical">Technical BS</a></h2> >+ >+There are (at least) two approaches to sharing devices. One is to >+execute the channel program on the server system. The server will >+need to request from the client system information such as the ccw >+and the data to be written, and will need to send to the client >+data that has been read and status information. The second is to >+execute the channel program on the client system. Here the client >+system makes requests to the server system to read and write data. >+ >+<p> >+ >+The second approach is currently implemented. The first approach >+arguably emulates 'more correctly'. However, an advantage of the >+implemented approach is that it is easier because only the >+client sends requests and only the server sends responses. >+ >+<p> >+ >+Both client and server have a DEVBLK structure for the device. >+Absurdly, perhaps, in originally designing an implementation for >+shared devices it was not clear what type of process should be the >+server. It was a quantum leap forward to realize that it could >+just be another hercules instance. >+ >+<p> >+ >+<h3>Protocol</h3> >+ >+<p> >+ >+(If this section is as boring for you to read as it was for me >+ to write then please skip to the next section ;-) >+ >+<p> >+ >+The client sends an 8 byte request header and maybe some data: >+ >+<pre> >+ +-----+-----+-----+-----+-----+-----+-----+-----+ >+ | cmd |flag | devnum | id | length | >+ +-----+-----+-----+-----+-----+-----+-----+-----+ >+ >+ <-------- length ---------> >+ +----- . . . . . -----+ >+ | data | >+ +----- . . . . . -----+ >+</pre> >+ >+<p> >+ >+'cmd' identifies the client request. The requests are: >+ >+<p> >+ >+<blockquote> >+ <dl> >+ <dt>0xe0 CONNECT<p><dd> >+ >+ Connect to the server. This requires >+ the server to allocate resources to >+ support the connection. Typically issued >+ during device initialization or after being >+ disconnected after a network error or timeout. >+ >+ <p> >+ <dt>0xe1 DISCONNECT<p><dd> >+ >+ Disconnect from the server. The server >+ can now release the allocated resources >+ for the connection. Typically issued during >+ device close or detach. >+ >+ <p> >+ <dt>0xe2 START<p><dd> >+ >+ Start a channel program on the device. >+ If the device is busy or reserved by >+ another system then wait until the device >+ is available unless the NOWAIT flag bit >+ is set, then return a BUSY code. Once >+ START succeeds then the device is unavailable >+ until the END request. >+ >+ <p> >+ <dt>0xe3 END<p><dd> >+ >+ Channel program has ended. Any waiters >+ for the device can now retry. >+ >+ <p> >+ <dt>0xe4 RESUME<p><dd> >+ >+ Similar to START except a suspended >+ channel program has resumed. >+ >+ <p> >+ <dt>0xe5 SUSPEND<p><dd> >+ >+ Similar to END except a channel program >+ has suspended itself. If the channel >+ program is not resumed then the END >+ request is <i>not</i> issued. >+ >+ <p> >+ <dt>0xe6 RESERVE<p><dd> >+ >+ Makes the device unavailable to any other >+ system until a RELEASE request is issued. >+ <i>Must</i> be issued within the scope of START/END. >+ >+ <p> >+ <dt>0xe7 RELEASE<p><dd> >+ >+ Makes the device available to other systems >+ after the next END request. >+ <i>Must</i> be issued within the scope of >+ START/END. >+ >+ <p> >+ <dt>0xe8 READ<p><dd> >+ >+ Read from a device. A 4-byte 'record' >+ identifier is specified in the request >+ data to identify what data to read in the >+ device context. >+ <i>Must</i> be issued within the scope of START/END. >+ >+ <p> >+ <dt>0xe9 WRITE<p><dd> >+ >+ Write to a device. A 2-byte 'offset' and >+ a 4-byte 'record' is specified in the request >+ data, followed by the data to be written. >+ 'record' identifies what data is to be written >+ in the device context and 'offset' and 'length' >+ identify what to update in 'record'. >+ <i>Must</i> be issued within the scope of START/END. >+ >+ <p> >+ <dt>0xea SENSE<p><dd> >+ >+ Retrieves the sense information after an i/o >+ error has occurred on the server side. This >+ is typically issued within the scope of the >+ channel program having the error. Client side >+ sense or concurrent sense will then pick up the >+ sense data relevant to the i/o error. >+ <i>Must</i> be issued within the scope of START/END. >+ >+ <p> >+ <dt>0xeb QUERY<p><dd> >+ >+ Obtain device information, typically during >+ device initialization. >+ >+ <p> >+ <dt>0xec COMPRESS<p><dd> >+ >+ Negotiate compression parameters. Notifies the >+ server what compression algorithms are supported >+ by the client and whether or not data sent back >+ and forth from the client or server should be >+ compressed or not. Typically issued after CONNECT. >+ <p> >+ NOTE: This action should actually be SETOPT or >+ some such; it was just easier to code a COMPRESS >+ specific SETOPT (less code). >+ >+ </dl> >+</blockquote> >+ >+<p><br> >+ >+'flag' qualifies the client request and varies by the request. >+ >+<blockquote> >+ <dl> >+ <dt>0x80 NOWAIT<p><dd> >+ >+ For START, if the device is unavailable then >+ return BUSY instead of waiting for the device. >+ >+ <p> >+ <dt>0x40 QUERY<p><dd> >+ >+ Identifies the QUERY request: >+ >+ <p> >+ <dt>0x41 DEVCHAR<p><dd> >+ >+ Device characteristics data >+ <p> >+ <dt>0x42 DEVID<p><dd> >+ >+ Device identifier data >+ >+ <p> >+ <dt>0x43 DEVUSED<p><dd> >+ >+ Hi used track/block (for dasdcopy) >+ >+ <p> >+ <dt>0x48 CKDCYLS<p><dd> >+ >+ Number cylinders for CKD device >+ >+ <p> >+ <dt>0x4c FBAORIGIN<p><dd> >+ >+ Origin block for FBA >+ >+ <p> >+ <dt>0x4d FBANUMBLK<p><dd> >+ >+ Number of FBA blocks >+ >+ <p> >+ <dt>0x4e FBABLKSIZ<p><dd> >+ >+ Size of an FBA block >+ >+ <p> >+ <dt>0x3x COMP<p><dd> >+ >+ For WRITE, data is compressed at offset 'x': >+ >+ <p> >+ <dt>0x2x BZIP2<p><dd> >+ >+ using bzip2 >+ >+ <p> >+ <dt>0x1x LIBZ<p><dd> >+ >+ using zlib >+ >+ <p> >+ <dt>0xxy<p><dd> >+ >+ For COMPRESS, identifies the compression >+ algorithms supported by the client (0x2y for bzip2, >+ 0x1y for zlib, 0x3y for both) and the zlib compression >+ parameter 'y' for sending otherwise uncompressed data >+ back and forth. If 'y' is zero (default) then no >+ uncompressed data is compressed between client & server. >+ >+ </dl> >+</blockquote> >+ >+<p><br> >+ >+'devnum' identifies the device by number on the server instance. >+ The device number may be different than the >+ device number on the client instance. >+ >+<p> >+ >+'id' identifies the client to the server. Each client has a unique >+ positive (non-zero) identifier. For the initial >+ CONNECT request 'id' is zero. After a successful >+ CONNECT, the server returns in the response header >+ the identifier to be used for all other requests >+ (including subsequent CONNECT requests). This is >+ saved in dev->rmtid. >+ >+<p> >+ >+'length' specifies the length of the data following the request header. >+ Currently length is non-zero for READ/WRITE requests. >+ >+<p><br> >+ >+The server sends an 8 byte response header and maybe some data: >+ >+<pre> >+ +-----+-----+-----+-----+-----+-----+-----+-----+ >+ |code |stat | devnum | id | length | >+ +-----+-----+-----+-----+-----+-----+-----+-----+ >+ >+ <-------- length ---------> >+ +----- . . . . . -----+ >+ | data | >+ +----- . . . . . -----+ >+</pre> >+ >+<p> >+ >+'code' indicates the response to the request. OK (0x00) indicates >+ success however other codes also indicate success >+ but qualified in some manner: >+ >+<blockquote> >+ <dl> >+ <dt>0x80 ERROR<p><dd> >+ >+ An error occurred. The server provides an error >+ message in the data section. >+ >+ <p> >+ <dt>0x40 IOERR<p><dd> >+ >+ An i/o error occurred during a READ/WRITE >+ request. The status byte has the 'unitstat' >+ data. This should signal the client to issue the >+ SENSE request to obtain the current sense data. >+ >+ <p> >+ <dt>0x20 BUSY<p><dd> >+ >+ Device was not available for a START request and >+ the NOWAIT flag bit was turned on. >+ >+ <p> >+ <dt>0x10 COMP<p><dd> >+ >+ Data returned is compressed. The status byte >+ indicates how the data is compressed (zlib or >+ bzip2) and at what offset the compressed data >+ starts (0 .. 15). This bit is only turned on >+ when both the 'code' and 'status' bytes would >+ otherwise be zero. >+ >+ <p> >+ <dt>0x08 PURGE<p><dd> >+ >+ START request was issued by the client. A list >+ of 'records' to be purged from local cache is >+ returned. These are 'records' that have been >+ updated since the last START/END request from >+ the client by other systems. Each record identifier >+ is a 4-byte field in the data segment. The number >+ of records then is 'length'/4. If the number of >+ records exceeds a threshold (16) then 'length' >+ will be zero indicating that the client should >+ purge all locally cached records for the device. >+ >+ </dl> >+</blockquote> >+ >+<p> >+ >+'stat' contains status information as a result of the request. >+ For READ/WRITE requests this contains the 'unitstat' >+ information if an IOERR occurred. >+ >+<p> >+ >+'devnum' specifies the server device number >+ >+<p> >+ >+'id' specifies the system identifier for the request. >+ >+<p> >+ >+'length' is the size of the data returned. >+ >+<p><br> >+ >+<h2><a NAME="caching">Caching</a></h2> >+ >+Cached records (eg CKD tracks or FBA blocks) are kept independently on >+both the client and server sides. Whenever the client issues a START >+request to initiate a channel program the server will return a list >+of records to purge from the client's cache that have been updated by >+other clients since the last START request. If the list is too large >+the server will indicate that the client should purge all records for >+the device. >+ >+<p><br> >+ >+<h2><a NAME="compression">Compression</a></h2> >+ >+Data that would normally be transferred uncompressed between client >+and host can optionally be compressed by specifying the '<code>comp=</code>' >+keyword on the device configuration statement or attach command. >+For example: >+ >+<pre class="jcl"> >+ 0100 3350 192.168.2.12 comp=3 >+</pre> >+ >+The value of the 'comp=' keyword is the zlib compression parameter >+which should be a number between 1 .. 9. A value closer to 1 means >+less compression but less processor time to perform the compression. >+A value closer to 9 means the data is compressed more but more processor >+time is required. >+ >+<p> >+ >+If the server is on 'localhost' then you should not specify 'comp='. >+Otherwise you are just stealing processor time to do compression/ >+uncompression from hercules. If the server is on a local network >+then I would recommend specifying a low value such as 1, 2 or 3. >+We are on a curve here, trying to trade cpu cycles for network traffic >+to derive an optimal throughput. >+ >+<p> >+ >+If the devices on the server are compressed devices (eg CCKD or CFBA) >+then the 'records' (eg. track images or block groups) may be transferred >+compressed regardless of the 'comp=' setting. This depends on whether >+the client supports the compression type (zlib or bzip2) of the record >+on the server and whether the record is actually compressed in the >+server cache. >+ >+<p> >+ >+For example: >+ >+<p> >+ >+Suppose on the client that you execute one or more channel programs >+to read a record on a ckd track, update a record on the same track, >+and then read another (or the same) record on the track. >+ >+<p> >+ >+For the first read the server will read the track image and >+pass it to the client as it was originally compressed in the file. >+To update a portion of the track image the server must uncompress >+the track image so data in it can be updated. When the client next >+reads from the track image, the track image is uncompressed. >+ >+<p> >+ >+Specifying 'comp=' means that uncompressed data sent to the client >+will be compressed. If the data to be sent to the client is already >+compressed then the data is sent as is, unless the client has indicated >+that it does not support that compression algorithm. >+ >+<p><br> >+ >+<h2><a NAME="todo">To Do</a></h2> >+ >+<ol> >+ <li>More doc (sorry, I got winded) >+ <li>Delays observed during short transfers (redrive select ?) >+ <li>Better server side behaviour due to disconnect >+ <li>etc. >+</ol> >+ >+<p> >+ >+Greg Smith >+<a href="mailto:gsmith@nc.rr.com"><em>gsmith</em>@<em>nc.rr.com</em></a> >+<p><center><hr width=15% noshade> >+<a href="index.html"><img src="images/back.gif" border=0 alt="back"></a> >+</center> >+<p class="lastupd">Last updated $Date: 2007/02/22 16:01:25 $ $Revision: 1.1 $</p> >+</BODY> >+</HTML> >diff -Naupr hercules-3.05/httpserv.c hercules-20070717/httpserv.c >--- hercules-3.05/httpserv.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/httpserv.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* HTTPSERV.C (c)Copyright Jan Jaeger, 2002-2007 */ > /* HTTP Server */ > >-// $Id: httpserv.c,v 1.74 2007/06/23 00:04:12 ivan Exp $ >+// $Id: httpserv.c,v 1.75 2008/05/28 16:39:44 fish Exp $ > > /* This file contains all code required for the HTTP server, */ > /* when the http_server thread is started it will listen on */ >@@ -30,6 +30,9 @@ > /* Jan Jaeger - 28/03/2002 */ > > // $Log: httpserv.c,v $ >+// Revision 1.75 2008/05/28 16:39:44 fish >+// (use R_OK constant) >+// > // Revision 1.74 2007/06/23 00:04:12 ivan > // Update copyright notices to include current year (2007) > // >@@ -694,7 +697,7 @@ TID httptid; > // mode: 0 = exist only, 2 = write, 4 = read, 6 = read/write > // rc: 0 = success, -1 = error (errno = cause) > // ENOENT = File name or path not found. >- if (access( absolute_httproot_path, 4 ) != 0) >+ if (access( absolute_httproot_path, R_OK ) != 0) > { > logmsg( _("HHCCF066E Invalid HTTPROOT: \"%s\": %s\n"), > absolute_httproot_path, strerror(errno)); >diff -Naupr hercules-3.05/htypes.h hercules-20070717/htypes.h >--- hercules-3.05/htypes.h 2006-12-30 16:18:29.000000000 +0100 >+++ hercules-20070717/htypes.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,9 +2,21 @@ > /* HTYPES.H Hercules typedefs... */ > /*-------------------------------------------------------------------*/ > >-// $Id: htypes.h,v 1.8 2006/12/08 09:43:28 jj Exp $ >+// $Id: htypes.h,v 1.11 2008/07/08 05:35:51 fish Exp $ > // > // $Log: htypes.h,v $ >+// Revision 1.11 2008/07/08 05:35:51 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.10 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.9 2008/02/19 17:18:36 rbowler >+// Missing u_int8_t causes crypto compile errors on Solaris >+// > // Revision 1.8 2006/12/08 09:43:28 jj > // Add CVS message log > // >@@ -27,6 +39,17 @@ > #endif > #endif > >+#ifndef HAVE_U_INT8_T >+ #ifdef HAVE_INTTYPES_H >+ typedef uint8_t u_int8_t; >+ typedef uint16_t u_int16_t; >+ typedef uint32_t u_int32_t; >+ typedef uint64_t u_int64_t; >+ #else >+ #error Unable to define u_intNN_t data types >+ #endif >+#endif >+ > typedef int8_t S8; // signed 8-bits > typedef int16_t S16; // signed 16-bits > typedef int32_t S32; // signed 32-bits >@@ -63,22 +86,40 @@ typedef uint8_t QWORD[16]; // unsig > #define I16_FMT "h" > #define I32_FMT "" > #define I64_FMT "l" >-#else // defined(SIZEOF_LONG) && SIZEOF_LONG == 4 >+#else // !defined(SIZEOF_LONG) || SIZEOF_LONG != 8 > #define I16_FMT "h" > #define I32_FMT "" > #define I64_FMT "ll" > #endif > >+#define I16_FMTx "%4.4" I16_FMT "x" >+#define I32_FMTx "%8.8" I32_FMT "x" >+#define I64_FMTx "%16.16" I64_FMT "x" >+ >+#define I16_FMTX "%4.4" I16_FMT "X" >+#define I32_FMTX "%8.8" I32_FMT "X" >+#define I64_FMTX "%16.16" I64_FMT "X" >+ > #if defined(SIZEOF_LONG) && SIZEOF_LONG == 8 >- #define UINT_PTR_FMT I64_FMT >+ #define UINT_PTR_FMT I64_FMT > #define PTR_FMTx "%16.16" I64_FMT "x" > #define PTR_FMTX "%16.16" I64_FMT "X" >-#else // defined(SIZEOF_LONG) && SIZEOF_LONG == 4 >- #define UINT_PTR_FMT I32_FMT >+#else // !defined(SIZEOF_LONG) || SIZEOF_LONG != 8 >+ #define UINT_PTR_FMT I32_FMT > #define PTR_FMTx "%8.8" I32_FMT "x" > #define PTR_FMTX "%8.8" I32_FMT "X" > #endif > >+#if defined(SIZEOF_SIZE_T) && SIZEOF_SIZE_T == 8 >+ #define SIZE_T_FMT I64_FMT >+ #define SIZE_T_FMTx "%16.16" I64_FMT "x" >+ #define SIZE_T_FMTX "%16.16" I64_FMT "X" >+#else // !defined(SIZEOF_SIZE_T) || SIZEOF_SIZE_T != 8 >+ #define SIZE_T_FMT I32_FMT >+ #define SIZE_T_FMTx "%8.8" I32_FMT "x" >+ #define SIZE_T_FMTX "%8.8" I32_FMT "X" >+#endif >+ > /*-------------------------------------------------------------------*/ > /* Socket stuff */ > /*-------------------------------------------------------------------*/ >@@ -181,6 +222,7 @@ typedef struct bind_struct bind_str > > typedef struct TAPEMEDIA_HANDLER TAPEMEDIA_HANDLER; // (see tapedev.h) > typedef struct TAPEAUTOLOADENTRY TAPEAUTOLOADENTRY; // (see tapedev.h) >+typedef struct TAMDIR TAMDIR; // (see tapedev.h) > > /*-------------------------------------------------------------------*/ > /* Device handler function prototypes */ >diff -Naupr hercules-3.05/ieee.c hercules-20070717/ieee.c >--- hercules-3.05/ieee.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/ieee.c 2008-09-03 13:07:48.000000000 +0200 >@@ -13,7 +13,7 @@ > * For details, see html/herclic.html > */ > >-// $Id: ieee.c,v 1.78 2007/06/23 00:04:13 ivan Exp $ >+// $Id: ieee.c,v 1.84 2008/04/18 12:13:59 rbowler Exp $ > > /* > * This module implements the ESA/390 Binary (IEEE) Floating Point >@@ -40,8 +40,8 @@ > * floating point instructions. > * > * Rounding: >- * The native IEEE implementation can be set to apply the rounding >- * as specified in the FPC. This is not yet implemented. >+ * The native IEEE implementation is set to apply the rounding >+ * as specified in the FPC register or the instruction mask. > * The Rounding and Range Function is not explicitly implemented. > * Most of its functionality should be covered by the native floating > * point implementation. However, there are some cases where use of >@@ -61,6 +61,24 @@ > */ > > // $Log: ieee.c,v $ >+// Revision 1.84 2008/04/18 12:13:59 rbowler >+// Fix incorrect results from THDER,THDR instructions >+// >+// Revision 1.83 2008/04/16 19:57:55 rbowler >+// Fix condition code in LCEBR,LCDBR,LCXBR instructions >+// >+// Revision 1.82 2008/04/16 14:09:42 rbowler >+// Correct ieee to use BFP rounding mode not DFP rounding mode >+// >+// Revision 1.81 2008/04/15 21:30:03 rbowler >+// BFP rounding mode support >+// >+// Revision 1.80 2008/02/12 18:23:39 jj >+// TBEDR , TBDR using R1 as source, should be R2. >+// >+// Revision 1.79 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// > // Revision 1.78 2007/06/23 00:04:13 ivan > // Update copyright notices to include current year (2007) > // >@@ -139,6 +157,11 @@ do { \ > #include "ieee-w32.h" > #endif > >+/* jbs 01/16/2008 */ >+#if defined(__SOLARIS__) >+ #include "ieee-sol.h" >+#endif >+ > /* Definitions of BFP rounding methods */ > #define RM_DEFAULT_ROUNDING 0 > #define RM_BIASED_ROUND_TO_NEAREST 1 >@@ -305,6 +328,44 @@ static inline int ieee_exception(int rai > > #if !defined(_IEEE_C) > /* >+ * Set rounding mode according to BFP rounding mode mask >+ */ >+void set_rounding_mode(U32 fpcreg, int mask) >+{ >+ int brm, ferm; >+ >+ /* If mask is zero, obtain rounding mode from FPC register */ >+ if (mask == RM_DEFAULT_ROUNDING) >+ brm = ((fpcreg & FPC_BRM) >> FPC_BRM_SHIFT) + 4; >+ else >+ brm = mask; >+ >+ /* Convert BFP rounding mode to nearest equivalent FE rounding mode */ >+ switch (brm) { >+ case RM_ROUND_TO_NEAREST: /* Round to nearest ties to even */ >+ ferm = FE_TONEAREST; >+ break; >+ case RM_ROUND_TOWARD_ZERO: /* Round toward zero */ >+ ferm = FE_TOWARDZERO; >+ break; >+ case RM_ROUND_TOWARD_POS_INF: /* Round toward +infinity */ >+ ferm = FE_UPWARD; >+ break; >+ case RM_ROUND_TOWARD_NEG_INF: /* Round toward -infinity */ >+ ferm = FE_DOWNWARD; >+ break; >+ default: >+ ferm = FE_TONEAREST; >+ break; >+ } /* end switch(brm) */ >+ >+ /* Switch rounding mode if necessary */ >+ if (fegetround() != ferm) >+ fesetround(ferm); >+ >+} /* end function set_rounding_mode */ >+ >+/* > * Classify emulated fp values > */ > int ebfpclassify(struct ebfp *op) >@@ -898,7 +959,7 @@ static void lengthen_short_to_ext(struct > */ > static int cnvt_bfp_to_hfp (struct lbfp *op, int class, U32 *fpr) > { >- short exp; >+ int exp; > U64 fract; > U32 r0, r1; > int cc; >@@ -926,14 +987,17 @@ static int cnvt_bfp_to_hfp (struct lbfp > cc = op->sign ? 1 : 2; > break; > case FP_NORMAL: >+ //logmsg("ieee: exp=%d (X\'%3.3x\')\tfract=%16.16"I64_FMT"x\n", >+ // op->exp, op->exp, op->fract); > /* Insert an implied 1. in front of the 52 bit binary > fraction and lengthen the result to 56 bits */ >- fract = (U64)(op->fract | 0x8000000000000ULL) << 4; >+ fract = (U64)(op->fract | 0x10000000000000ULL) << 3; > > /* The binary exponent is equal to the biased exponent - 1023 >- and we subtract another 1 to account for the implied 1. */ >- exp = op->exp - 1024; >+ adjusted by 1 to move the point before the 56 bit fraction */ >+ exp = op->exp - 1023 + 1; > >+ //logmsg("ieee: adjusted exp=%d\tfract=%16.16"I64_FMT"x\n", exp, fract); > /* Shift the fraction right one bit at a time until > the binary exponent becomes a multiple of 4 */ > while (exp & 3) >@@ -941,6 +1005,7 @@ static int cnvt_bfp_to_hfp (struct lbfp > exp++; > fract >>= 1; > } >+ //logmsg("ieee: shifted exp=%d\tfract=%16.16"I64_FMT"x\n", exp, fract); > > /* Convert the binary exponent into a hexadecimal exponent > by dropping the last two bits (which are now zero) */ >@@ -1137,7 +1202,7 @@ DEF_INST(convert_bfp_short_to_float_long > /* Lengthen sbfp operand to lbfp */ > lbfp_op2.sign = op2.sign; > lbfp_op2.exp = op2.exp - 127 + 1023; >- lbfp_op2.fract = op2.fract << (52 - 23); >+ lbfp_op2.fract = (U64)op2.fract << (52 - 23); > > /* Convert lbfp to hfp register and set condition code */ > regs->psw.cc = >@@ -1161,7 +1226,7 @@ DEF_INST(convert_float_long_to_bfp_long_ > BFPRM_CHECK(m3,regs); > > regs->psw.cc = >- cnvt_hfp_to_bfp (regs->fpr + FPR2I(r1), m3, >+ cnvt_hfp_to_bfp (regs->fpr + FPR2I(r2), m3, > /*fractbits*/52, /*emax*/1023, /*ebias*/1023, > &(op1.sign), &(op1.exp), &(op1.fract)); > >@@ -1184,7 +1249,7 @@ DEF_INST(convert_float_long_to_bfp_short > BFPRM_CHECK(m3,regs); > > regs->psw.cc = >- cnvt_hfp_to_bfp (regs->fpr + FPR2I(r1), m3, >+ cnvt_hfp_to_bfp (regs->fpr + FPR2I(r2), m3, > /*fractbits*/23, /*emax*/127, /*ebias*/127, > &(op1.sign), &(op1.exp), &fract); > op1.fract = (U32)fract; >@@ -2539,6 +2604,7 @@ static int integer_ebfp(struct ebfp *op, > default: > FECLEAREXCEPT(FE_ALL_EXCEPT); > ebfpston(op); >+ set_rounding_mode(regs->fpc, mode); > op->v = rint(op->v); > if (regs->fpc & FPC_MASK_IMX) { > ieee_exception(FE_INEXACT, regs); >@@ -2584,6 +2650,7 @@ static int integer_lbfp(struct lbfp *op, > default: > FECLEAREXCEPT(FE_ALL_EXCEPT); > lbfpston(op); >+ set_rounding_mode(regs->fpc, mode); > op->v = rint(op->v); > if (regs->fpc & FPC_MASK_IMX) { > ieee_exception(FE_INEXACT, regs); >@@ -2629,6 +2696,7 @@ static int integer_sbfp(struct sbfp *op, > default: > FECLEAREXCEPT(FE_ALL_EXCEPT); > sbfpston(op); >+ set_rounding_mode(regs->fpc, mode); > op->v = rint(op->v); > if (regs->fpc & FPC_MASK_IMX) { > ieee_exception(FE_INEXACT, regs); >@@ -3451,7 +3519,7 @@ DEF_INST(load_complement_bfp_ext_reg) > regs->psw.cc = 3; > break; > default: >- regs->psw.cc = 2; >+ regs->psw.cc = op.sign ? 1 : 2; > break; > } > >@@ -3482,7 +3550,7 @@ DEF_INST(load_complement_bfp_long_reg) > regs->psw.cc = 3; > break; > default: >- regs->psw.cc = 2; >+ regs->psw.cc = op.sign ? 1 : 2; > break; > } > >@@ -3513,7 +3581,7 @@ DEF_INST(load_complement_bfp_short_reg) > regs->psw.cc = 3; > break; > default: >- regs->psw.cc = 2; >+ regs->psw.cc = op.sign ? 1 : 2; > break; > } > >diff -Naupr hercules-3.05/ieee-sol.h hercules-20070717/ieee-sol.h >--- hercules-3.05/ieee-sol.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/ieee-sol.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,242 @@ >+/* IEEE-SOL.H (c) Copyright Jeff Savit, 2007-2008 */ >+/* Hercules IEEE floating point definitions for Solaris */ >+ >+// $Id: ieee-sol.h,v 1.1 2008/02/07 00:29:04 rbowler Exp $ >+// >+// $Log: ieee-sol.h,v $ >+// Revision 1.1 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// >+ >+#ifndef _IEEE_SOL_H >+#define _IEEE_SOL_H >+ >+#undef FP_NAN >+#undef FP_INFINITE >+#undef FP_ZERO >+#undef FP_SUBNORMAL >+#undef FP_NORMAL >+#undef fpclassify >+#undef signbit >+ >+/* All floating-point numbers can be put in one of these categories. */ >+enum >+ { >+ FP_NAN, >+# define FP_NAN FP_NAN >+ FP_INFINITE, >+# define FP_INFINITE FP_INFINITE >+ FP_ZERO, >+# define FP_ZERO FP_ZERO >+ FP_SUBNORMAL, >+# define FP_SUBNORMAL FP_SUBNORMAL >+ FP_NORMAL >+# define FP_NORMAL FP_NORMAL >+ }; >+ >+/* Type representing floating-point environment. This function corresponds >+ to the layout of the block written by the `fstenv'. */ >+/* REMOVED jbs due to collision with Solaris fenv_t in fenv.h. Let's see... 20080116 >+typedef struct >+ { >+ unsigned short int __control_word; >+ unsigned short int __unused1; >+ unsigned short int __status_word; >+ unsigned short int __unused2; >+ unsigned short int __tags; >+ unsigned short int __unused3; >+ unsigned int __eip; >+ unsigned short int __cs_selector; >+ unsigned int __opcode:11; >+ unsigned int __unused4:5; >+ unsigned int __data_offset; >+ unsigned short int __data_selector; >+ unsigned short int __unused5; >+ } >+fenv_t; >+*/ >+ >+#if defined(LONG_DOUBLE_IS_SAME_AS_DOUBLE) >+ #define fpclassify(x) \ >+ (sizeof (x) == sizeof (float) ? __fpclassifyf (x) \ >+ : __fpclassify (x)) >+#else >+ #define fpclassify(x) \ >+ (sizeof (x) == sizeof (float) ? __fpclassifyf (x) \ >+ : sizeof (x) == sizeof (double) ? __fpclassify (x) \ >+ : __fpclassifyl (x)) >+#endif >+ >+typedef union >+{ >+ float value; >+ uint32_t word; >+} ieee_float_shape_type; >+ >+#define GET_FLOAT_WORD(i,d) \ >+do { \ >+ ieee_float_shape_type gf_u; \ >+ gf_u.value = (d); \ >+ (i) = gf_u.word; \ >+} while (0) >+ >+ >+typedef union >+{ >+ double value; >+ struct >+ { >+ uint32_t lsw; >+ uint32_t msw; >+ } parts; >+} ieee_double_shape_type; >+ >+#define EXTRACT_WORDS(ix0,ix1,d) \ >+do { \ >+ ieee_double_shape_type ew_u; \ >+ ew_u.value = (d); \ >+ (ix0) = ew_u.parts.msw; \ >+ (ix1) = ew_u.parts.lsw; \ >+} while (0) >+ >+#if !defined(LONG_DOUBLE_IS_SAME_AS_DOUBLE) >+typedef union >+{ >+ long double value; >+ struct >+ { >+ uint32_t lsw; >+ uint32_t msw; >+ int sign_exponent:16; >+ unsigned int empty:16; >+ } parts; >+} ieee_long_double_shape_type; >+ >+/* Get three 32 bit ints from a double. */ >+ >+#define GET_LDOUBLE_WORDS(exp,ix0,ix1,d) \ >+do { \ >+ ieee_long_double_shape_type ew_u; \ >+ ew_u.value = (d); \ >+ (exp) = ew_u.parts.sign_exponent; \ >+ (ix0) = ew_u.parts.msw; \ >+ (ix1) = ew_u.parts.lsw; \ >+} while (0) >+#endif /*!defined(LONG_DOUBLE_IS_SAME_AS_DOUBLE)*/ >+ >+ >+int >+__fpclassifyf (float x) >+{ >+ uint32_t wx; >+ int retval = FP_NORMAL; >+ >+ GET_FLOAT_WORD (wx, x); >+ wx &= 0x7fffffff; >+ if (wx == 0) >+ retval = FP_ZERO; >+ else if (wx < 0x800000) >+ retval = FP_SUBNORMAL; >+ else if (wx >= 0x7f800000) >+ retval = wx > 0x7f800000 ? FP_NAN : FP_INFINITE; >+ >+ return retval; >+} >+ >+int >+__fpclassify (double x) >+{ >+ uint32_t hx, lx; >+ int retval = FP_NORMAL; >+ >+ EXTRACT_WORDS (hx, lx, x); >+ lx |= hx & 0xfffff; >+ hx &= 0x7ff00000; >+ if ((hx | lx) == 0) >+ retval = FP_ZERO; >+ else if (hx == 0) >+ retval = FP_SUBNORMAL; >+ else if (hx == 0x7ff00000) >+ retval = lx != 0 ? FP_NAN : FP_INFINITE; >+ >+ return retval; >+} >+ >+#if !defined(LONG_DOUBLE_IS_SAME_AS_DOUBLE) >+int >+__fpclassifyl (long double x) >+{ >+ uint32_t ex, hx, lx; >+ int retval = FP_NORMAL; >+ >+ GET_LDOUBLE_WORDS (ex, hx, lx, x); >+ ex &= 0x7fff; >+ if ((ex | lx | hx) == 0) >+ retval = FP_ZERO; >+ else if (ex == 0 && (hx & 0x80000000) == 0) >+ retval = FP_SUBNORMAL; >+ else if (ex == 0x7fff) >+ retval = ((hx & 0x7fffffff) | lx) != 0 ? FP_NAN : FP_INFINITE; >+ >+ return retval; >+} >+#endif // !defined(LONG_DOUBLE_IS_SAME_AS_DOUBLE) >+ >+ >+ >+#define GET_HIGH_WORD(i,d) \ >+do { \ >+ ieee_double_shape_type gh_u; \ >+ gh_u.value = (d); \ >+ (i) = gh_u.parts.msw; \ >+} while (0) >+ >+int >+signbit (double x) >+{ >+ int32_t hx; >+ >+ GET_HIGH_WORD (hx, x); >+ return (hx & 0x80000000) != 0; >+} >+ >+#if !defined(HAVE_FREXPL) >+ >+#define GET_LDOUBLE_EXP(exp,d) \ >+do { \ >+ ieee_long_double_shape_type ge_u; \ >+ ge_u.value = (d); \ >+ (exp) = ge_u.parts.sign_exponent; \ >+} while (0) >+ >+#define SET_LDOUBLE_EXP(d,exp) \ >+do { \ >+ ieee_long_double_shape_type se_u; \ >+ se_u.value = (d); \ >+ se_u.parts.sign_exponent = (exp); \ >+ (d) = se_u.value; \ >+} while (0) >+ >+long double frexpl(long double x, int *eptr) >+{ >+ uint32_t se, hx, ix, lx; >+ uint64_t two64 = 0x43f0000000000000ULL; >+ GET_LDOUBLE_WORDS(se,hx,lx,x); >+ ix = 0x7fff&se; >+ *eptr = 0; >+ if(ix==0x7fff||((ix|hx|lx)==0)) return x; /* 0,inf,nan */ >+ if (ix==0x0000) { /* subnormal */ >+ x *= two64; >+ GET_LDOUBLE_EXP(se,x); >+ ix = se&0x7fff; >+ *eptr = -64; >+ } >+ *eptr += ix-16382; >+ se = (se & 0x8000) | 0x3ffe; >+ SET_LDOUBLE_EXP(x,se); >+ return x; >+} >+ >+#endif /*!defined(HAVE_FREXPL)*/ >+ >+#endif // _IEEE_SOL_H >diff -Naupr hercules-3.05/ieee-w32.h hercules-20070717/ieee-w32.h >--- hercules-3.05/ieee-w32.h 2006-12-30 16:18:29.000000000 +0100 >+++ hercules-20070717/ieee-w32.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,21 @@ >-// $Id: ieee-w32.h,v 1.7 2006/12/08 09:43:28 jj Exp $ >+/* IEEE-W32.H (c) Copyright Greg Smith, 2002-2008 */ >+/* Hercules IEEE floating point definitions for Windows */ >+ >+// $Id: ieee-w32.h,v 1.11 2008/04/16 14:58:57 rbowler Exp $ > // > // $Log: ieee-w32.h,v $ >+// Revision 1.11 2008/04/16 14:58:57 rbowler >+// Modify style of inline assembler to conform with machdep.h >+// >+// Revision 1.10 2008/04/16 14:26:21 rbowler >+// Add rint function for MSVC >+// >+// Revision 1.9 2008/04/15 21:30:03 rbowler >+// BFP rounding mode support >+// >+// Revision 1.8 2008/02/07 00:25:42 rbowler >+// Add a standard file identification header >+// > // Revision 1.7 2006/12/08 09:43:28 jj > // Add CVS message log > // >@@ -55,6 +70,12 @@ typedef struct > } > fenv_t; > >+/* FPU control word rounding flags */ >+#define FE_TONEAREST 0x0000 >+#define FE_DOWNWARD 0x0400 >+#define FE_UPWARD 0x0800 >+#define FE_TOWARDZERO 0x0c00 >+ > /* Define bits representing the exception. We use the bit positions > of the appropriate bits in the FPU control word. */ > enum >@@ -259,6 +280,85 @@ feclearexcept (int excepts) > return 0; > } > >+/* Get current FP rounding mode */ >+int >+fegetround (void) >+{ >+ unsigned short _cw; >+ >+ /* Get the value of the FPU control word */ >+ #if defined(_MSVC_) >+ __asm fnstcw _cw >+ #else >+ __asm__ ("fnstcw %0;" : "=m" (_cw)); >+ #endif >+ >+ /* Extract and return the rounding mode flags */ >+ return _cw >+ & (FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO); >+} >+ >+/* Set the FP rounding mode */ >+int >+fesetround (int mode) >+{ >+ unsigned short _cw; >+ >+ /* Return error if new rounding mode is not valid */ >+ if ((mode & ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO)) >+ != 0) >+ return -1; >+ >+ /* Get the current value of the FPU control word */ >+ #if defined(_MSVC_) >+ __asm fnstcw _cw >+ #else >+ __asm__ volatile ("fnstcw %0;": "=m" (_cw)); >+ #endif >+ >+ /* Replace the rounding mode bits in the FPU control word */ >+ _cw &= ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO); >+ _cw |= mode; >+ >+ /* Update the FPU control word with the new value */ >+ #if defined(_MSVC_) >+ __asm fldcw _cw >+ #else >+ __asm__ volatile ("fldcw %0;" : : "m" (_cw)); >+ #endif >+ >+ return 0; >+} >+ >+#if !defined(HAVE_RINT) >+/* Round to FP integer */ >+double >+rint (double _x) >+{ >+ double _y; >+ >+ #if defined(_MSVC_) >+ __asm >+ { >+ fld _x >+ frndint >+ fstp _y >+ } >+ #else >+ __asm__ volatile ( >+ "fld %1 ;\n\t" >+ "frndint ;\n\t" >+ "fstp %0 ;" >+ : "=m" (_y) >+ : "m" (_x) >+ ); >+ #endif >+ >+ return _y; >+} >+#define HAVE_RINT 1 >+#endif /*!defined(HAVE_RINT)*/ >+ > #define GET_HIGH_WORD(i,d) \ > do { \ > ieee_double_shape_type gh_u; \ >diff -Naupr hercules-3.05/impl.c hercules-20070717/impl.c >--- hercules-3.05/impl.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/impl.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* IMPL.C (c) Copyright Roger Bowler, 1999-2007 */ > /* Hercules Initialization Module */ > >-// $Id: impl.c,v 1.123 2007/06/23 00:04:14 ivan Exp $ >+// $Id: impl.c,v 1.124 2007/12/10 23:12:02 gsmith Exp $ > > /*-------------------------------------------------------------------*/ > /* This module initializes the Hercules S/370 or ESA/390 emulator. */ >@@ -12,6 +12,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: impl.c,v $ >+// Revision 1.124 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// > // Revision 1.123 2007/06/23 00:04:14 ivan > // Update copyright notices to include current year (2007) > // >@@ -121,7 +124,7 @@ int i; > { > /* If the cpu is running but not executing > instructions then it must be malfunctioning */ >- if((sysblk.regs[i]->instcount == (U64)savecount[i]) >+ if((INSTCOUNT(sysblk.regs[i]) == (U64)savecount[i]) > && !HDC1(debug_watchdog_signal, sysblk.regs[i]) ) > { > /* Send signal to looping CPU */ >@@ -130,7 +133,7 @@ int i; > } > else > /* Save current instcount */ >- savecount[i] = sysblk.regs[i]->instcount; >+ savecount[i] = INSTCOUNT(sysblk.regs[i]); > } > else > /* mark savecount invalid as CPU not in running state */ >diff -Naupr hercules-3.05/intl/bindtextdom.c hercules-20070717/intl/bindtextdom.c >--- hercules-3.05/intl/bindtextdom.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/bindtextdom.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,369 @@ >+/* Implementation of the bindtextdomain(3) function >+ Copyright (C) 1995-1998, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stddef.h> >+#include <stdlib.h> >+#include <string.h> >+ >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+#include "gettextP.h" >+ >+#ifdef _LIBC >+/* We have to handle multi-threaded applications. */ >+# include <bits/libc-lock.h> >+#else >+/* Provide dummy implementation if this is outside glibc. */ >+# define __libc_rwlock_define(CLASS, NAME) >+# define __libc_rwlock_wrlock(NAME) >+# define __libc_rwlock_unlock(NAME) >+#endif >+ >+/* The internal variables in the standalone libintl.a must have different >+ names than the internal variables in GNU libc, otherwise programs >+ using libintl.a cannot be linked statically. */ >+#if !defined _LIBC >+# define _nl_default_dirname libintl_nl_default_dirname >+# define _nl_domain_bindings libintl_nl_domain_bindings >+#endif >+ >+/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ >+#ifndef offsetof >+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Contains the default location of the message catalogs. */ >+extern const char _nl_default_dirname[]; >+ >+/* List with bindings of specific domains. */ >+extern struct binding *_nl_domain_bindings; >+ >+/* Lock variable to protect the global data in the gettext implementation. */ >+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) >+ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define BINDTEXTDOMAIN __bindtextdomain >+# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset >+# ifndef strdup >+# define strdup(str) __strdup (str) >+# endif >+#else >+# define BINDTEXTDOMAIN libintl_bindtextdomain >+# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset >+#endif >+ >+/* Prototypes for local functions. */ >+static void set_binding_values PARAMS ((const char *domainname, >+ const char **dirnamep, >+ const char **codesetp)); >+ >+/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP >+ to be used for the DOMAINNAME message catalog. >+ If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not >+ modified, only the current value is returned. >+ If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither >+ modified nor returned. */ >+static void >+set_binding_values (domainname, dirnamep, codesetp) >+ const char *domainname; >+ const char **dirnamep; >+ const char **codesetp; >+{ >+ struct binding *binding; >+ int modified; >+ >+ /* Some sanity checks. */ >+ if (domainname == NULL || domainname[0] == '\0') >+ { >+ if (dirnamep) >+ *dirnamep = NULL; >+ if (codesetp) >+ *codesetp = NULL; >+ return; >+ } >+ >+ __libc_rwlock_wrlock (_nl_state_lock); >+ >+ modified = 0; >+ >+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) >+ { >+ int compare = strcmp (domainname, binding->domainname); >+ if (compare == 0) >+ /* We found it! */ >+ break; >+ if (compare < 0) >+ { >+ /* It is not in the list. */ >+ binding = NULL; >+ break; >+ } >+ } >+ >+ if (binding != NULL) >+ { >+ if (dirnamep) >+ { >+ const char *dirname = *dirnamep; >+ >+ if (dirname == NULL) >+ /* The current binding has be to returned. */ >+ *dirnamep = binding->dirname; >+ else >+ { >+ /* The domain is already bound. If the new value and the old >+ one are equal we simply do nothing. Otherwise replace the >+ old binding. */ >+ char *result = binding->dirname; >+ if (strcmp (dirname, result) != 0) >+ { >+ if (strcmp (dirname, _nl_default_dirname) == 0) >+ result = (char *) _nl_default_dirname; >+ else >+ { >+#if defined _LIBC || defined HAVE_STRDUP >+ result = strdup (dirname); >+#else >+ size_t len = strlen (dirname) + 1; >+ result = (char *) malloc (len); >+ if (__builtin_expect (result != NULL, 1)) >+ memcpy (result, dirname, len); >+#endif >+ } >+ >+ if (__builtin_expect (result != NULL, 1)) >+ { >+ if (binding->dirname != _nl_default_dirname) >+ free (binding->dirname); >+ >+ binding->dirname = result; >+ modified = 1; >+ } >+ } >+ *dirnamep = result; >+ } >+ } >+ >+ if (codesetp) >+ { >+ const char *codeset = *codesetp; >+ >+ if (codeset == NULL) >+ /* The current binding has be to returned. */ >+ *codesetp = binding->codeset; >+ else >+ { >+ /* The domain is already bound. If the new value and the old >+ one are equal we simply do nothing. Otherwise replace the >+ old binding. */ >+ char *result = binding->codeset; >+ if (result == NULL || strcmp (codeset, result) != 0) >+ { >+#if defined _LIBC || defined HAVE_STRDUP >+ result = strdup (codeset); >+#else >+ size_t len = strlen (codeset) + 1; >+ result = (char *) malloc (len); >+ if (__builtin_expect (result != NULL, 1)) >+ memcpy (result, codeset, len); >+#endif >+ >+ if (__builtin_expect (result != NULL, 1)) >+ { >+ if (binding->codeset != NULL) >+ free (binding->codeset); >+ >+ binding->codeset = result; >+ binding->codeset_cntr++; >+ modified = 1; >+ } >+ } >+ *codesetp = result; >+ } >+ } >+ } >+ else if ((dirnamep == NULL || *dirnamep == NULL) >+ && (codesetp == NULL || *codesetp == NULL)) >+ { >+ /* Simply return the default values. */ >+ if (dirnamep) >+ *dirnamep = _nl_default_dirname; >+ if (codesetp) >+ *codesetp = NULL; >+ } >+ else >+ { >+ /* We have to create a new binding. */ >+ size_t len = strlen (domainname) + 1; >+ struct binding *new_binding = >+ (struct binding *) malloc (offsetof (struct binding, domainname) + len); >+ >+ if (__builtin_expect (new_binding == NULL, 0)) >+ goto failed; >+ >+ memcpy (new_binding->domainname, domainname, len); >+ >+ if (dirnamep) >+ { >+ const char *dirname = *dirnamep; >+ >+ if (dirname == NULL) >+ /* The default value. */ >+ dirname = _nl_default_dirname; >+ else >+ { >+ if (strcmp (dirname, _nl_default_dirname) == 0) >+ dirname = _nl_default_dirname; >+ else >+ { >+ char *result; >+#if defined _LIBC || defined HAVE_STRDUP >+ result = strdup (dirname); >+ if (__builtin_expect (result == NULL, 0)) >+ goto failed_dirname; >+#else >+ size_t len = strlen (dirname) + 1; >+ result = (char *) malloc (len); >+ if (__builtin_expect (result == NULL, 0)) >+ goto failed_dirname; >+ memcpy (result, dirname, len); >+#endif >+ dirname = result; >+ } >+ } >+ *dirnamep = dirname; >+ new_binding->dirname = (char *) dirname; >+ } >+ else >+ /* The default value. */ >+ new_binding->dirname = (char *) _nl_default_dirname; >+ >+ new_binding->codeset_cntr = 0; >+ >+ if (codesetp) >+ { >+ const char *codeset = *codesetp; >+ >+ if (codeset != NULL) >+ { >+ char *result; >+ >+#if defined _LIBC || defined HAVE_STRDUP >+ result = strdup (codeset); >+ if (__builtin_expect (result == NULL, 0)) >+ goto failed_codeset; >+#else >+ size_t len = strlen (codeset) + 1; >+ result = (char *) malloc (len); >+ if (__builtin_expect (result == NULL, 0)) >+ goto failed_codeset; >+ memcpy (result, codeset, len); >+#endif >+ codeset = result; >+ new_binding->codeset_cntr++; >+ } >+ *codesetp = codeset; >+ new_binding->codeset = (char *) codeset; >+ } >+ else >+ new_binding->codeset = NULL; >+ >+ /* Now enqueue it. */ >+ if (_nl_domain_bindings == NULL >+ || strcmp (domainname, _nl_domain_bindings->domainname) < 0) >+ { >+ new_binding->next = _nl_domain_bindings; >+ _nl_domain_bindings = new_binding; >+ } >+ else >+ { >+ binding = _nl_domain_bindings; >+ while (binding->next != NULL >+ && strcmp (domainname, binding->next->domainname) > 0) >+ binding = binding->next; >+ >+ new_binding->next = binding->next; >+ binding->next = new_binding; >+ } >+ >+ modified = 1; >+ >+ /* Here we deal with memory allocation failures. */ >+ if (0) >+ { >+ failed_codeset: >+ if (new_binding->dirname != _nl_default_dirname) >+ free (new_binding->dirname); >+ failed_dirname: >+ free (new_binding); >+ failed: >+ if (dirnamep) >+ *dirnamep = NULL; >+ if (codesetp) >+ *codesetp = NULL; >+ } >+ } >+ >+ /* If we modified any binding, we flush the caches. */ >+ if (modified) >+ ++_nl_msg_cat_cntr; >+ >+ __libc_rwlock_unlock (_nl_state_lock); >+} >+ >+/* Specify that the DOMAINNAME message catalog will be found >+ in DIRNAME rather than in the system locale data base. */ >+char * >+BINDTEXTDOMAIN (domainname, dirname) >+ const char *domainname; >+ const char *dirname; >+{ >+ set_binding_values (domainname, &dirname, NULL); >+ return (char *) dirname; >+} >+ >+/* Specify the character encoding in which the messages from the >+ DOMAINNAME message catalog will be returned. */ >+char * >+BIND_TEXTDOMAIN_CODESET (domainname, codeset) >+ const char *domainname; >+ const char *codeset; >+{ >+ set_binding_values (domainname, NULL, &codeset); >+ return (char *) codeset; >+} >+ >+#ifdef _LIBC >+/* Aliases for function names in GNU C Library. */ >+weak_alias (__bindtextdomain, bindtextdomain); >+weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); >+#endif >diff -Naupr hercules-3.05/intl/ChangeLog hercules-20070717/intl/ChangeLog >--- hercules-3.05/intl/ChangeLog 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/ChangeLog 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,4 @@ >+2002-08-06 GNU <bug-gnu-gettext@gnu.org> >+ >+ * Version 0.11.5 released. >+ >diff -Naupr hercules-3.05/intl/config.charset hercules-20070717/intl/config.charset >--- hercules-3.05/intl/config.charset 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/config.charset 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,466 @@ >+#! /bin/sh >+# Output a system dependent table of character encoding aliases. >+# >+# Copyright (C) 2000-2002 Free Software Foundation, Inc. >+# >+# This program is free software; you can redistribute it and/or modify it >+# under the terms of the GNU Library General Public License as published >+# by the Free Software Foundation; either version 2, or (at your option) >+# any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+# Library General Public License for more details. >+# >+# You should have received a copy of the GNU Library General Public >+# License along with this program; if not, write to the Free Software >+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+# USA. >+# >+# The table consists of lines of the form >+# ALIAS CANONICAL >+# >+# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". >+# ALIAS is compared in a case sensitive way. >+# >+# CANONICAL is the GNU canonical name for this character encoding. >+# It must be an encoding supported by libiconv. Support by GNU libc is >+# also desirable. CANONICAL is case insensitive. Usually an upper case >+# MIME charset name is preferred. >+# The current list of GNU canonical charset names is as follows. >+# >+# name used by which systems a MIME name? >+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd >+# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes >+# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes >+# ISO-8859-3 glibc solaris yes >+# ISO-8859-4 osf solaris freebsd yes >+# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes >+# ISO-8859-6 glibc aix hpux solaris yes >+# ISO-8859-7 glibc aix hpux irix osf solaris yes >+# ISO-8859-8 glibc aix hpux osf solaris yes >+# ISO-8859-9 glibc aix hpux irix osf solaris yes >+# ISO-8859-13 glibc >+# ISO-8859-14 glibc >+# ISO-8859-15 glibc aix osf solaris freebsd >+# KOI8-R glibc solaris freebsd yes >+# KOI8-U glibc freebsd yes >+# KOI8-T glibc >+# CP437 dos >+# CP775 dos >+# CP850 aix osf dos >+# CP852 dos >+# CP855 dos >+# CP856 aix >+# CP857 dos >+# CP861 dos >+# CP862 dos >+# CP864 dos >+# CP865 dos >+# CP866 freebsd dos >+# CP869 dos >+# CP874 woe32 dos >+# CP922 aix >+# CP932 aix woe32 dos >+# CP943 aix >+# CP949 osf woe32 dos >+# CP950 woe32 dos >+# CP1046 aix >+# CP1124 aix >+# CP1125 dos >+# CP1129 aix >+# CP1250 woe32 >+# CP1251 glibc woe32 >+# CP1252 aix woe32 >+# CP1253 woe32 >+# CP1254 woe32 >+# CP1255 glibc woe32 >+# CP1256 woe32 >+# CP1257 woe32 >+# GB2312 glibc aix hpux irix solaris freebsd yes >+# EUC-JP glibc aix hpux irix osf solaris freebsd yes >+# EUC-KR glibc aix hpux irix osf solaris freebsd yes >+# EUC-TW glibc aix hpux irix osf solaris >+# BIG5 glibc aix hpux osf solaris freebsd yes >+# BIG5-HKSCS glibc solaris >+# GBK glibc aix osf solaris woe32 dos >+# GB18030 glibc solaris >+# SHIFT_JIS hpux osf solaris freebsd yes >+# JOHAB glibc solaris woe32 >+# TIS-620 glibc aix hpux osf solaris >+# VISCII glibc yes >+# TCVN5712-1 glibc >+# GEORGIAN-PS glibc >+# HP-ROMAN8 hpux >+# HP-ARABIC8 hpux >+# HP-GREEK8 hpux >+# HP-HEBREW8 hpux >+# HP-TURKISH8 hpux >+# HP-KANA8 hpux >+# DEC-KANJI osf >+# DEC-HANYU osf >+# UTF-8 glibc aix hpux osf solaris yes >+# >+# Note: Names which are not marked as being a MIME name should not be used in >+# Internet protocols for information interchange (mail, news, etc.). >+# >+# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications >+# must understand both names and treat them as equivalent. >+# >+# The first argument passed to this file is the canonical host specification, >+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM >+# or >+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM >+ >+host="$1" >+os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` >+echo "# This file contains a table of character encoding aliases," >+echo "# suitable for operating system '${os}'." >+echo "# It was automatically generated from config.charset." >+# List of references, updated during installation: >+echo "# Packages using this file: " >+case "$os" in >+ linux* | *-gnu*) >+ # With glibc-2.1 or newer, we don't need any canonicalization, >+ # because glibc has iconv and both glibc and libiconv support all >+ # GNU canonical names directly. Therefore, the Makefile does not >+ # need to install the alias file at all. >+ # The following applies only to glibc-2.0.x and older libcs. >+ echo "ISO_646.IRV:1983 ASCII" >+ ;; >+ aix*) >+ echo "ISO8859-1 ISO-8859-1" >+ echo "ISO8859-2 ISO-8859-2" >+ echo "ISO8859-5 ISO-8859-5" >+ echo "ISO8859-6 ISO-8859-6" >+ echo "ISO8859-7 ISO-8859-7" >+ echo "ISO8859-8 ISO-8859-8" >+ echo "ISO8859-9 ISO-8859-9" >+ echo "ISO8859-15 ISO-8859-15" >+ echo "IBM-850 CP850" >+ echo "IBM-856 CP856" >+ echo "IBM-921 ISO-8859-13" >+ echo "IBM-922 CP922" >+ echo "IBM-932 CP932" >+ echo "IBM-943 CP943" >+ echo "IBM-1046 CP1046" >+ echo "IBM-1124 CP1124" >+ echo "IBM-1129 CP1129" >+ echo "IBM-1252 CP1252" >+ echo "IBM-eucCN GB2312" >+ echo "IBM-eucJP EUC-JP" >+ echo "IBM-eucKR EUC-KR" >+ echo "IBM-eucTW EUC-TW" >+ echo "big5 BIG5" >+ echo "GBK GBK" >+ echo "TIS-620 TIS-620" >+ echo "UTF-8 UTF-8" >+ ;; >+ hpux*) >+ echo "iso88591 ISO-8859-1" >+ echo "iso88592 ISO-8859-2" >+ echo "iso88595 ISO-8859-5" >+ echo "iso88596 ISO-8859-6" >+ echo "iso88597 ISO-8859-7" >+ echo "iso88598 ISO-8859-8" >+ echo "iso88599 ISO-8859-9" >+ echo "iso885915 ISO-8859-15" >+ echo "roman8 HP-ROMAN8" >+ echo "arabic8 HP-ARABIC8" >+ echo "greek8 HP-GREEK8" >+ echo "hebrew8 HP-HEBREW8" >+ echo "turkish8 HP-TURKISH8" >+ echo "kana8 HP-KANA8" >+ echo "tis620 TIS-620" >+ echo "big5 BIG5" >+ echo "eucJP EUC-JP" >+ echo "eucKR EUC-KR" >+ echo "eucTW EUC-TW" >+ echo "hp15CN GB2312" >+ #echo "ccdc ?" # what is this? >+ echo "SJIS SHIFT_JIS" >+ echo "utf8 UTF-8" >+ ;; >+ irix*) >+ echo "ISO8859-1 ISO-8859-1" >+ echo "ISO8859-2 ISO-8859-2" >+ echo "ISO8859-5 ISO-8859-5" >+ echo "ISO8859-7 ISO-8859-7" >+ echo "ISO8859-9 ISO-8859-9" >+ echo "eucCN GB2312" >+ echo "eucJP EUC-JP" >+ echo "eucKR EUC-KR" >+ echo "eucTW EUC-TW" >+ ;; >+ osf*) >+ echo "ISO8859-1 ISO-8859-1" >+ echo "ISO8859-2 ISO-8859-2" >+ echo "ISO8859-4 ISO-8859-4" >+ echo "ISO8859-5 ISO-8859-5" >+ echo "ISO8859-7 ISO-8859-7" >+ echo "ISO8859-8 ISO-8859-8" >+ echo "ISO8859-9 ISO-8859-9" >+ echo "ISO8859-15 ISO-8859-15" >+ echo "cp850 CP850" >+ echo "big5 BIG5" >+ echo "dechanyu DEC-HANYU" >+ echo "dechanzi GB2312" >+ echo "deckanji DEC-KANJI" >+ echo "deckorean EUC-KR" >+ echo "eucJP EUC-JP" >+ echo "eucKR EUC-KR" >+ echo "eucTW EUC-TW" >+ echo "GBK GBK" >+ echo "KSC5601 CP949" >+ echo "sdeckanji EUC-JP" >+ echo "SJIS SHIFT_JIS" >+ echo "TACTIS TIS-620" >+ echo "UTF-8 UTF-8" >+ ;; >+ solaris*) >+ echo "646 ASCII" >+ echo "ISO8859-1 ISO-8859-1" >+ echo "ISO8859-2 ISO-8859-2" >+ echo "ISO8859-3 ISO-8859-3" >+ echo "ISO8859-4 ISO-8859-4" >+ echo "ISO8859-5 ISO-8859-5" >+ echo "ISO8859-6 ISO-8859-6" >+ echo "ISO8859-7 ISO-8859-7" >+ echo "ISO8859-8 ISO-8859-8" >+ echo "ISO8859-9 ISO-8859-9" >+ echo "ISO8859-15 ISO-8859-15" >+ echo "koi8-r KOI8-R" >+ echo "BIG5 BIG5" >+ echo "Big5-HKSCS BIG5-HKSCS" >+ echo "gb2312 GB2312" >+ echo "GBK GBK" >+ echo "GB18030 GB18030" >+ echo "cns11643 EUC-TW" >+ echo "5601 EUC-KR" >+ echo "ko_KR.johap92 JOHAB" >+ echo "eucJP EUC-JP" >+ echo "PCK SHIFT_JIS" >+ echo "TIS620.2533 TIS-620" >+ #echo "sun_eu_greek ?" # what is this? >+ echo "UTF-8 UTF-8" >+ ;; >+ freebsd* | os2*) >+ # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore >+ # localcharset.c falls back to using the full locale name >+ # from the environment variables. >+ # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just >+ # reuse FreeBSD's locale data for OS/2. >+ echo "C ASCII" >+ echo "US-ASCII ASCII" >+ for l in la_LN lt_LN; do >+ echo "$l.ASCII ASCII" >+ done >+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ >+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ >+ lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do >+ echo "$l.ISO_8859-1 ISO-8859-1" >+ echo "$l.DIS_8859-15 ISO-8859-15" >+ done >+ for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do >+ echo "$l.ISO_8859-2 ISO-8859-2" >+ done >+ for l in la_LN lt_LT; do >+ echo "$l.ISO_8859-4 ISO-8859-4" >+ done >+ for l in ru_RU ru_SU; do >+ echo "$l.KOI8-R KOI8-R" >+ echo "$l.ISO_8859-5 ISO-8859-5" >+ echo "$l.CP866 CP866" >+ done >+ echo "uk_UA.KOI8-U KOI8-U" >+ echo "zh_TW.BIG5 BIG5" >+ echo "zh_TW.Big5 BIG5" >+ echo "zh_CN.EUC GB2312" >+ echo "ja_JP.EUC EUC-JP" >+ echo "ja_JP.SJIS SHIFT_JIS" >+ echo "ja_JP.Shift_JIS SHIFT_JIS" >+ echo "ko_KR.EUC EUC-KR" >+ ;; >+ netbsd*) >+ echo "646 ASCII" >+ echo "ISO8859-1 ISO-8859-1" >+ echo "ISO8859-2 ISO-8859-2" >+ echo "ISO8859-4 ISO-8859-4" >+ echo "ISO8859-5 ISO-8859-5" >+ echo "ISO8859-15 ISO-8859-15" >+ echo "eucCN GB2312" >+ echo "eucJP EUC-JP" >+ echo "eucKR EUC-KR" >+ echo "eucTW EUC-TW" >+ echo "BIG5 BIG5" >+ echo "SJIS SHIFT_JIS" >+ ;; >+ beos*) >+ # BeOS has a single locale, and it has UTF-8 encoding. >+ echo "* UTF-8" >+ ;; >+ msdosdjgpp*) >+ # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore >+ # localcharset.c falls back to using the full locale name >+ # from the environment variables. >+ echo "#" >+ echo "# The encodings given here may not all be correct." >+ echo "# If you find that the encoding given for your language and" >+ echo "# country is not the one your DOS machine actually uses, just" >+ echo "# correct it in this file, and send a mail to" >+ echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>" >+ echo "# and Bruno Haible <bruno@clisp.org>." >+ echo "#" >+ echo "C ASCII" >+ # ISO-8859-1 languages >+ echo "ca CP850" >+ echo "ca_ES CP850" >+ echo "da CP865" # not CP850 ?? >+ echo "da_DK CP865" # not CP850 ?? >+ echo "de CP850" >+ echo "de_AT CP850" >+ echo "de_CH CP850" >+ echo "de_DE CP850" >+ echo "en CP850" >+ echo "en_AU CP850" # not CP437 ?? >+ echo "en_CA CP850" >+ echo "en_GB CP850" >+ echo "en_NZ CP437" >+ echo "en_US CP437" >+ echo "en_ZA CP850" # not CP437 ?? >+ echo "es CP850" >+ echo "es_AR CP850" >+ echo "es_BO CP850" >+ echo "es_CL CP850" >+ echo "es_CO CP850" >+ echo "es_CR CP850" >+ echo "es_CU CP850" >+ echo "es_DO CP850" >+ echo "es_EC CP850" >+ echo "es_ES CP850" >+ echo "es_GT CP850" >+ echo "es_HN CP850" >+ echo "es_MX CP850" >+ echo "es_NI CP850" >+ echo "es_PA CP850" >+ echo "es_PY CP850" >+ echo "es_PE CP850" >+ echo "es_SV CP850" >+ echo "es_UY CP850" >+ echo "es_VE CP850" >+ echo "et CP850" >+ echo "et_EE CP850" >+ echo "eu CP850" >+ echo "eu_ES CP850" >+ echo "fi CP850" >+ echo "fi_FI CP850" >+ echo "fr CP850" >+ echo "fr_BE CP850" >+ echo "fr_CA CP850" >+ echo "fr_CH CP850" >+ echo "fr_FR CP850" >+ echo "ga CP850" >+ echo "ga_IE CP850" >+ echo "gd CP850" >+ echo "gd_GB CP850" >+ echo "gl CP850" >+ echo "gl_ES CP850" >+ echo "id CP850" # not CP437 ?? >+ echo "id_ID CP850" # not CP437 ?? >+ echo "is CP861" # not CP850 ?? >+ echo "is_IS CP861" # not CP850 ?? >+ echo "it CP850" >+ echo "it_CH CP850" >+ echo "it_IT CP850" >+ echo "lt CP775" >+ echo "lt_LT CP775" >+ echo "lv CP775" >+ echo "lv_LV CP775" >+ echo "nb CP865" # not CP850 ?? >+ echo "nb_NO CP865" # not CP850 ?? >+ echo "nl CP850" >+ echo "nl_BE CP850" >+ echo "nl_NL CP850" >+ echo "nn CP865" # not CP850 ?? >+ echo "nn_NO CP865" # not CP850 ?? >+ echo "no CP865" # not CP850 ?? >+ echo "no_NO CP865" # not CP850 ?? >+ echo "pt CP850" >+ echo "pt_BR CP850" >+ echo "pt_PT CP850" >+ echo "sv CP850" >+ echo "sv_SE CP850" >+ # ISO-8859-2 languages >+ echo "cs CP852" >+ echo "cs_CZ CP852" >+ echo "hr CP852" >+ echo "hr_HR CP852" >+ echo "hu CP852" >+ echo "hu_HU CP852" >+ echo "pl CP852" >+ echo "pl_PL CP852" >+ echo "ro CP852" >+ echo "ro_RO CP852" >+ echo "sk CP852" >+ echo "sk_SK CP852" >+ echo "sl CP852" >+ echo "sl_SI CP852" >+ echo "sq CP852" >+ echo "sq_AL CP852" >+ echo "sr CP852" # CP852 or CP866 or CP855 ?? >+ echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? >+ # ISO-8859-3 languages >+ echo "mt CP850" >+ echo "mt_MT CP850" >+ # ISO-8859-5 languages >+ echo "be CP866" >+ echo "be_BE CP866" >+ echo "bg CP866" # not CP855 ?? >+ echo "bg_BG CP866" # not CP855 ?? >+ echo "mk CP866" # not CP855 ?? >+ echo "mk_MK CP866" # not CP855 ?? >+ echo "ru CP866" >+ echo "ru_RU CP866" >+ echo "uk CP1125" >+ echo "uk_UA CP1125" >+ # ISO-8859-6 languages >+ echo "ar CP864" >+ echo "ar_AE CP864" >+ echo "ar_DZ CP864" >+ echo "ar_EG CP864" >+ echo "ar_IQ CP864" >+ echo "ar_IR CP864" >+ echo "ar_JO CP864" >+ echo "ar_KW CP864" >+ echo "ar_MA CP864" >+ echo "ar_OM CP864" >+ echo "ar_QA CP864" >+ echo "ar_SA CP864" >+ echo "ar_SY CP864" >+ # ISO-8859-7 languages >+ echo "el CP869" >+ echo "el_GR CP869" >+ # ISO-8859-8 languages >+ echo "he CP862" >+ echo "he_IL CP862" >+ # ISO-8859-9 languages >+ echo "tr CP857" >+ echo "tr_TR CP857" >+ # Japanese >+ echo "ja CP932" >+ echo "ja_JP CP932" >+ # Chinese >+ echo "zh_CN GBK" >+ echo "zh_TW CP950" # not CP938 ?? >+ # Korean >+ echo "kr CP949" # not CP934 ?? >+ echo "kr_KR CP949" # not CP934 ?? >+ # Thai >+ echo "th CP874" >+ echo "th_TH CP874" >+ # Other >+ echo "eo CP850" >+ echo "eo_EO CP850" >+ ;; >+esac >diff -Naupr hercules-3.05/intl/.cvsignore hercules-20070717/intl/.cvsignore >--- hercules-3.05/intl/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+Makefile >+.libs bindtextdom.lo charset.alias dcgettext.lo dcigettext.lo dcngettext.lo dgettext.lo dngettext.lo explodename.lo finddomain.lo gettext.lo intl-compat.lo l10nflist.lo libintl.h libintl.la loadmsgcat.lo localcharset.lo localealias.lo localename.lo ngettext.lo osdep.lo plural-exp.lo plural.lo ref-add.sed ref-del.sed textdomain.lo >\ No newline at end of file >diff -Naupr hercules-3.05/intl/dcgettext.c hercules-20070717/intl/dcgettext.c >--- hercules-3.05/intl/dcgettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/dcgettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,59 @@ >+/* Implementation of the dcgettext(3) function. >+ Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define DCGETTEXT __dcgettext >+# define DCIGETTEXT __dcigettext >+#else >+# define DCGETTEXT libintl_dcgettext >+# define DCIGETTEXT libintl_dcigettext >+#endif >+ >+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY >+ locale. */ >+char * >+DCGETTEXT (domainname, msgid, category) >+ const char *domainname; >+ const char *msgid; >+ int category; >+{ >+ return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+INTDEF(__dcgettext) >+weak_alias (__dcgettext, dcgettext); >+#endif >diff -Naupr hercules-3.05/intl/dcigettext.c hercules-20070717/intl/dcigettext.c >--- hercules-3.05/intl/dcigettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/dcigettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,1206 @@ >+/* Implementation of the internal dcigettext function. >+ Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* Tell glibc's <string.h> to provide a prototype for mempcpy(). >+ This must come before <config.h> because <config.h> may include >+ <features.h>, and once <features.h> has been included, it's too late. */ >+#ifndef _GNU_SOURCE >+# define _GNU_SOURCE 1 >+#endif >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <sys/types.h> >+ >+#ifdef __GNUC__ >+# define alloca __builtin_alloca >+# define HAVE_ALLOCA 1 >+#else >+# if defined HAVE_ALLOCA_H || defined _LIBC >+# include <alloca.h> >+# else >+# ifdef _AIX >+ #pragma alloca >+# else >+# ifndef alloca >+char *alloca (); >+# endif >+# endif >+# endif >+#endif >+ >+#include <errno.h> >+#ifndef errno >+extern int errno; >+#endif >+#ifndef __set_errno >+# define __set_errno(val) errno = (val) >+#endif >+ >+#include <stddef.h> >+#include <stdlib.h> >+#include <string.h> >+ >+#if defined HAVE_UNISTD_H || defined _LIBC >+# include <unistd.h> >+#endif >+ >+#include <locale.h> >+ >+#ifdef _LIBC >+ /* Guess whether integer division by zero raises signal SIGFPE. >+ Set to 1 only if you know for sure. In case of doubt, set to 0. */ >+# if defined __alpha__ || defined __arm__ || defined __i386__ \ >+ || defined __m68k__ || defined __s390__ >+# define INTDIV0_RAISES_SIGFPE 1 >+# else >+# define INTDIV0_RAISES_SIGFPE 0 >+# endif >+#endif >+#if !INTDIV0_RAISES_SIGFPE >+# include <signal.h> >+#endif >+ >+#if defined HAVE_SYS_PARAM_H || defined _LIBC >+# include <sys/param.h> >+#endif >+ >+#include "gettextP.h" >+#include "plural-exp.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+#include "hash-string.h" >+ >+/* Thread safetyness. */ >+#ifdef _LIBC >+# include <bits/libc-lock.h> >+#else >+/* Provide dummy implementation if this is outside glibc. */ >+# define __libc_lock_define_initialized(CLASS, NAME) >+# define __libc_lock_lock(NAME) >+# define __libc_lock_unlock(NAME) >+# define __libc_rwlock_define_initialized(CLASS, NAME) >+# define __libc_rwlock_rdlock(NAME) >+# define __libc_rwlock_unlock(NAME) >+#endif >+ >+/* Alignment of types. */ >+#if defined __GNUC__ && __GNUC__ >= 2 >+# define alignof(TYPE) __alignof__ (TYPE) >+#else >+# define alignof(TYPE) \ >+ ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) >+#endif >+ >+/* The internal variables in the standalone libintl.a must have different >+ names than the internal variables in GNU libc, otherwise programs >+ using libintl.a cannot be linked statically. */ >+#if !defined _LIBC >+# define _nl_default_default_domain libintl_nl_default_default_domain >+# define _nl_current_default_domain libintl_nl_current_default_domain >+# define _nl_default_dirname libintl_nl_default_dirname >+# define _nl_domain_bindings libintl_nl_domain_bindings >+#endif >+ >+/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ >+#ifndef offsetof >+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+#ifdef _LIBC >+/* Rename the non ANSI C functions. This is required by the standard >+ because some ANSI C functions will require linking with this object >+ file and the name space must not be polluted. */ >+# define getcwd __getcwd >+# ifndef stpcpy >+# define stpcpy __stpcpy >+# endif >+# define tfind __tfind >+#else >+# if !defined HAVE_GETCWD >+char *getwd (); >+# define getcwd(buf, max) getwd (buf) >+# else >+char *getcwd (); >+# endif >+# ifndef HAVE_STPCPY >+static char *stpcpy PARAMS ((char *dest, const char *src)); >+# endif >+# ifndef HAVE_MEMPCPY >+static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); >+# endif >+#endif >+ >+/* Amount to increase buffer size by in each try. */ >+#define PATH_INCR 32 >+ >+/* The following is from pathmax.h. */ >+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define >+ PATH_MAX but might cause redefinition warnings when sys/param.h is >+ later included (as on MORE/BSD 4.3). */ >+#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) >+# include <limits.h> >+#endif >+ >+#ifndef _POSIX_PATH_MAX >+# define _POSIX_PATH_MAX 255 >+#endif >+ >+#if !defined PATH_MAX && defined _PC_PATH_MAX >+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) >+#endif >+ >+/* Don't include sys/param.h if it already has been. */ >+#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN >+# include <sys/param.h> >+#endif >+ >+#if !defined PATH_MAX && defined MAXPATHLEN >+# define PATH_MAX MAXPATHLEN >+#endif >+ >+#ifndef PATH_MAX >+# define PATH_MAX _POSIX_PATH_MAX >+#endif >+ >+/* Pathname support. >+ ISSLASH(C) tests whether C is a directory separator character. >+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, >+ it may be concatenated to a directory pathname. >+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. >+ */ >+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ >+ /* Win32, OS/2, DOS */ >+# define ISSLASH(C) ((C) == '/' || (C) == '\\') >+# define HAS_DEVICE(P) \ >+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ >+ && (P)[1] == ':') >+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) >+# define IS_PATH_WITH_DIR(P) \ >+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) >+#else >+ /* Unix */ >+# define ISSLASH(C) ((C) == '/') >+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) >+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) >+#endif >+ >+/* This is the type used for the search tree where known translations >+ are stored. */ >+struct known_translation_t >+{ >+ /* Domain in which to search. */ >+ char *domainname; >+ >+ /* The category. */ >+ int category; >+ >+ /* State of the catalog counter at the point the string was found. */ >+ int counter; >+ >+ /* Catalog where the string was found. */ >+ struct loaded_l10nfile *domain; >+ >+ /* And finally the translation. */ >+ const char *translation; >+ size_t translation_length; >+ >+ /* Pointer to the string in question. */ >+ char msgid[ZERO]; >+}; >+ >+/* Root of the search tree with known translations. We can use this >+ only if the system provides the `tsearch' function family. */ >+#if defined HAVE_TSEARCH || defined _LIBC >+# include <search.h> >+ >+static void *root; >+ >+# ifdef _LIBC >+# define tsearch __tsearch >+# endif >+ >+/* Function to compare two entries in the table of known translations. */ >+static int transcmp PARAMS ((const void *p1, const void *p2)); >+static int >+transcmp (p1, p2) >+ const void *p1; >+ const void *p2; >+{ >+ const struct known_translation_t *s1; >+ const struct known_translation_t *s2; >+ int result; >+ >+ s1 = (const struct known_translation_t *) p1; >+ s2 = (const struct known_translation_t *) p2; >+ >+ result = strcmp (s1->msgid, s2->msgid); >+ if (result == 0) >+ { >+ result = strcmp (s1->domainname, s2->domainname); >+ if (result == 0) >+ /* We compare the category last (though this is the cheapest >+ operation) since it is hopefully always the same (namely >+ LC_MESSAGES). */ >+ result = s1->category - s2->category; >+ } >+ >+ return result; >+} >+#endif >+ >+/* Name of the default domain used for gettext(3) prior any call to >+ textdomain(3). The default value for this is "messages". */ >+const char _nl_default_default_domain[] attribute_hidden = "messages"; >+ >+/* Value used as the default domain for gettext(3). */ >+const char *_nl_current_default_domain attribute_hidden >+ = _nl_default_default_domain; >+ >+/* Contains the default location of the message catalogs. */ >+#if defined __EMX__ >+extern const char _nl_default_dirname[]; >+#else >+const char _nl_default_dirname[] = LOCALEDIR; >+#endif >+ >+/* List with bindings of specific domains created by bindtextdomain() >+ calls. */ >+struct binding *_nl_domain_bindings; >+ >+/* Prototypes for local functions. */ >+static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, >+ unsigned long int n, >+ const char *translation, >+ size_t translation_len)) >+ internal_function; >+static const char *category_to_name PARAMS ((int category)) internal_function; >+static const char *guess_category_value PARAMS ((int category, >+ const char *categoryname)) >+ internal_function; >+ >+ >+/* For those loosing systems which don't have `alloca' we have to add >+ some additional code emulating it. */ >+#ifdef HAVE_ALLOCA >+/* Nothing has to be done. */ >+# define freea(p) /* nothing */ >+# define ADD_BLOCK(list, address) /* nothing */ >+# define FREE_BLOCKS(list) /* nothing */ >+#else >+struct block_list >+{ >+ void *address; >+ struct block_list *next; >+}; >+# define ADD_BLOCK(list, addr) \ >+ do { \ >+ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ >+ /* If we cannot get a free block we cannot add the new element to \ >+ the list. */ \ >+ if (newp != NULL) { \ >+ newp->address = (addr); \ >+ newp->next = (list); \ >+ (list) = newp; \ >+ } \ >+ } while (0) >+# define FREE_BLOCKS(list) \ >+ do { \ >+ while (list != NULL) { \ >+ struct block_list *old = list; \ >+ list = list->next; \ >+ free (old->address); \ >+ free (old); \ >+ } \ >+ } while (0) >+# undef alloca >+# define alloca(size) (malloc (size)) >+# define freea(p) free (p) >+#endif /* have alloca */ >+ >+ >+#ifdef _LIBC >+/* List of blocks allocated for translations. */ >+typedef struct transmem_list >+{ >+ struct transmem_list *next; >+ char data[ZERO]; >+} transmem_block_t; >+static struct transmem_list *transmem_list; >+#else >+typedef unsigned char transmem_block_t; >+#endif >+ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define DCIGETTEXT __dcigettext >+#else >+# define DCIGETTEXT libintl_dcigettext >+#endif >+ >+/* Lock variable to protect the global data in the gettext implementation. */ >+#ifdef _LIBC >+__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden) >+#endif >+ >+/* Checking whether the binaries runs SUID must be done and glibc provides >+ easier methods therefore we make a difference here. */ >+#ifdef _LIBC >+# define ENABLE_SECURE __libc_enable_secure >+# define DETERMINE_SECURE >+#else >+# ifndef HAVE_GETUID >+# define getuid() 0 >+# endif >+# ifndef HAVE_GETGID >+# define getgid() 0 >+# endif >+# ifndef HAVE_GETEUID >+# define geteuid() getuid() >+# endif >+# ifndef HAVE_GETEGID >+# define getegid() getgid() >+# endif >+static int enable_secure; >+# define ENABLE_SECURE (enable_secure == 1) >+# define DETERMINE_SECURE \ >+ if (enable_secure == 0) \ >+ { \ >+ if (getuid () != geteuid () || getgid () != getegid ()) \ >+ enable_secure = 1; \ >+ else \ >+ enable_secure = -1; \ >+ } >+#endif >+ >+/* Get the function to evaluate the plural expression. */ >+#include "eval-plural.h" >+ >+/* Look up MSGID in the DOMAINNAME message catalog for the current >+ CATEGORY locale and, if PLURAL is nonzero, search over string >+ depending on the plural form determined by N. */ >+char * >+DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) >+ const char *domainname; >+ const char *msgid1; >+ const char *msgid2; >+ int plural; >+ unsigned long int n; >+ int category; >+{ >+#ifndef HAVE_ALLOCA >+ struct block_list *block_list = NULL; >+#endif >+ struct loaded_l10nfile *domain; >+ struct binding *binding; >+ const char *categoryname; >+ const char *categoryvalue; >+ char *dirname, *xdomainname; >+ char *single_locale; >+ char *retval; >+ size_t retlen; >+ int saved_errno; >+#if defined HAVE_TSEARCH || defined _LIBC >+ struct known_translation_t *search; >+ struct known_translation_t **foundp = NULL; >+ size_t msgid_len; >+#endif >+ size_t domainname_len; >+ >+ /* If no real MSGID is given return NULL. */ >+ if (msgid1 == NULL) >+ return NULL; >+ >+ __libc_rwlock_rdlock (_nl_state_lock); >+ >+ /* If DOMAINNAME is NULL, we are interested in the default domain. If >+ CATEGORY is not LC_MESSAGES this might not make much sense but the >+ definition left this undefined. */ >+ if (domainname == NULL) >+ domainname = _nl_current_default_domain; >+ >+ /* OS/2 specific: backward compatibility with older libintl versions */ >+#ifdef LC_MESSAGES_COMPAT >+ if (category == LC_MESSAGES_COMPAT) >+ category = LC_MESSAGES; >+#endif >+ >+#if defined HAVE_TSEARCH || defined _LIBC >+ msgid_len = strlen (msgid1) + 1; >+ >+ /* Try to find the translation among those which we found at >+ some time. */ >+ search = (struct known_translation_t *) >+ alloca (offsetof (struct known_translation_t, msgid) + msgid_len); >+ memcpy (search->msgid, msgid1, msgid_len); >+ search->domainname = (char *) domainname; >+ search->category = category; >+ >+ foundp = (struct known_translation_t **) tfind (search, &root, transcmp); >+ freea (search); >+ if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) >+ { >+ /* Now deal with plural. */ >+ if (plural) >+ retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, >+ (*foundp)->translation_length); >+ else >+ retval = (char *) (*foundp)->translation; >+ >+ __libc_rwlock_unlock (_nl_state_lock); >+ return retval; >+ } >+#endif >+ >+ /* Preserve the `errno' value. */ >+ saved_errno = errno; >+ >+ /* See whether this is a SUID binary or not. */ >+ DETERMINE_SECURE; >+ >+ /* First find matching binding. */ >+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) >+ { >+ int compare = strcmp (domainname, binding->domainname); >+ if (compare == 0) >+ /* We found it! */ >+ break; >+ if (compare < 0) >+ { >+ /* It is not in the list. */ >+ binding = NULL; >+ break; >+ } >+ } >+ >+ if (binding == NULL) >+ dirname = (char *) _nl_default_dirname; >+ else if (IS_ABSOLUTE_PATH (binding->dirname)) >+ dirname = binding->dirname; >+ else >+ { >+ /* We have a relative path. Make it absolute now. */ >+ size_t dirname_len = strlen (binding->dirname) + 1; >+ size_t path_max; >+ char *ret; >+ >+ path_max = (unsigned int) PATH_MAX; >+ path_max += 2; /* The getcwd docs say to do this. */ >+ >+ for (;;) >+ { >+ dirname = (char *) alloca (path_max + dirname_len); >+ ADD_BLOCK (block_list, dirname); >+ >+ __set_errno (0); >+ ret = getcwd (dirname, path_max); >+ if (ret != NULL || errno != ERANGE) >+ break; >+ >+ path_max += path_max / 2; >+ path_max += PATH_INCR; >+ } >+ >+ if (ret == NULL) >+ { >+ /* We cannot get the current working directory. Don't signal an >+ error but simply return the default string. */ >+ FREE_BLOCKS (block_list); >+ __libc_rwlock_unlock (_nl_state_lock); >+ __set_errno (saved_errno); >+ return (plural == 0 >+ ? (char *) msgid1 >+ /* Use the Germanic plural rule. */ >+ : n == 1 ? (char *) msgid1 : (char *) msgid2); >+ } >+ >+ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); >+ } >+ >+ /* Now determine the symbolic name of CATEGORY and its value. */ >+ categoryname = category_to_name (category); >+ categoryvalue = guess_category_value (category, categoryname); >+ >+ domainname_len = strlen (domainname); >+ xdomainname = (char *) alloca (strlen (categoryname) >+ + domainname_len + 5); >+ ADD_BLOCK (block_list, xdomainname); >+ >+ stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), >+ domainname, domainname_len), >+ ".mo"); >+ >+ /* Creating working area. */ >+ single_locale = (char *) alloca (strlen (categoryvalue) + 1); >+ ADD_BLOCK (block_list, single_locale); >+ >+ >+ /* Search for the given string. This is a loop because we perhaps >+ got an ordered list of languages to consider for the translation. */ >+ while (1) >+ { >+ /* Make CATEGORYVALUE point to the next element of the list. */ >+ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') >+ ++categoryvalue; >+ if (categoryvalue[0] == '\0') >+ { >+ /* The whole contents of CATEGORYVALUE has been searched but >+ no valid entry has been found. We solve this situation >+ by implicitly appending a "C" entry, i.e. no translation >+ will take place. */ >+ single_locale[0] = 'C'; >+ single_locale[1] = '\0'; >+ } >+ else >+ { >+ char *cp = single_locale; >+ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') >+ *cp++ = *categoryvalue++; >+ *cp = '\0'; >+ >+ /* When this is a SUID binary we must not allow accessing files >+ outside the dedicated directories. */ >+ if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) >+ /* Ingore this entry. */ >+ continue; >+ } >+ >+ /* If the current locale value is C (or POSIX) we don't load a >+ domain. Return the MSGID. */ >+ if (strcmp (single_locale, "C") == 0 >+ || strcmp (single_locale, "POSIX") == 0) >+ { >+ FREE_BLOCKS (block_list); >+ __libc_rwlock_unlock (_nl_state_lock); >+ __set_errno (saved_errno); >+ return (plural == 0 >+ ? (char *) msgid1 >+ /* Use the Germanic plural rule. */ >+ : n == 1 ? (char *) msgid1 : (char *) msgid2); >+ } >+ >+ >+ /* Find structure describing the message catalog matching the >+ DOMAINNAME and CATEGORY. */ >+ domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); >+ >+ if (domain != NULL) >+ { >+ retval = _nl_find_msg (domain, binding, msgid1, &retlen); >+ >+ if (retval == NULL) >+ { >+ int cnt; >+ >+ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) >+ { >+ retval = _nl_find_msg (domain->successor[cnt], binding, >+ msgid1, &retlen); >+ >+ if (retval != NULL) >+ { >+ domain = domain->successor[cnt]; >+ break; >+ } >+ } >+ } >+ >+ if (retval != NULL) >+ { >+ /* Found the translation of MSGID1 in domain DOMAIN: >+ starting at RETVAL, RETLEN bytes. */ >+ FREE_BLOCKS (block_list); >+ __set_errno (saved_errno); >+#if defined HAVE_TSEARCH || defined _LIBC >+ if (foundp == NULL) >+ { >+ /* Create a new entry and add it to the search tree. */ >+ struct known_translation_t *newp; >+ >+ newp = (struct known_translation_t *) >+ malloc (offsetof (struct known_translation_t, msgid) >+ + msgid_len + domainname_len + 1); >+ if (newp != NULL) >+ { >+ newp->domainname = >+ mempcpy (newp->msgid, msgid1, msgid_len); >+ memcpy (newp->domainname, domainname, domainname_len + 1); >+ newp->category = category; >+ newp->counter = _nl_msg_cat_cntr; >+ newp->domain = domain; >+ newp->translation = retval; >+ newp->translation_length = retlen; >+ >+ /* Insert the entry in the search tree. */ >+ foundp = (struct known_translation_t **) >+ tsearch (newp, &root, transcmp); >+ if (foundp == NULL >+ || __builtin_expect (*foundp != newp, 0)) >+ /* The insert failed. */ >+ free (newp); >+ } >+ } >+ else >+ { >+ /* We can update the existing entry. */ >+ (*foundp)->counter = _nl_msg_cat_cntr; >+ (*foundp)->domain = domain; >+ (*foundp)->translation = retval; >+ (*foundp)->translation_length = retlen; >+ } >+#endif >+ /* Now deal with plural. */ >+ if (plural) >+ retval = plural_lookup (domain, n, retval, retlen); >+ >+ __libc_rwlock_unlock (_nl_state_lock); >+ return retval; >+ } >+ } >+ } >+ /* NOTREACHED */ >+} >+ >+ >+char * >+internal_function >+_nl_find_msg (domain_file, domainbinding, msgid, lengthp) >+ struct loaded_l10nfile *domain_file; >+ struct binding *domainbinding; >+ const char *msgid; >+ size_t *lengthp; >+{ >+ struct loaded_domain *domain; >+ nls_uint32 nstrings; >+ size_t act; >+ char *result; >+ size_t resultlen; >+ >+ if (domain_file->decided == 0) >+ _nl_load_domain (domain_file, domainbinding); >+ >+ if (domain_file->data == NULL) >+ return NULL; >+ >+ domain = (struct loaded_domain *) domain_file->data; >+ >+ nstrings = domain->nstrings; >+ >+ /* Locate the MSGID and its translation. */ >+ if (domain->hash_tab != NULL) >+ { >+ /* Use the hashing table. */ >+ nls_uint32 len = strlen (msgid); >+ nls_uint32 hash_val = hash_string (msgid); >+ nls_uint32 idx = hash_val % domain->hash_size; >+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); >+ >+ while (1) >+ { >+ nls_uint32 nstr = >+ W (domain->must_swap_hash_tab, domain->hash_tab[idx]); >+ >+ if (nstr == 0) >+ /* Hash table entry is empty. */ >+ return NULL; >+ >+ nstr--; >+ >+ /* Compare msgid with the original string at index nstr. >+ We compare the lengths with >=, not ==, because plural entries >+ are represented by strings with an embedded NUL. */ >+ if (nstr < nstrings >+ ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len >+ && (strcmp (msgid, >+ domain->data + W (domain->must_swap, >+ domain->orig_tab[nstr].offset)) >+ == 0) >+ : domain->orig_sysdep_tab[nstr - nstrings].length > len >+ && (strcmp (msgid, >+ domain->orig_sysdep_tab[nstr - nstrings].pointer) >+ == 0)) >+ { >+ act = nstr; >+ goto found; >+ } >+ >+ if (idx >= domain->hash_size - incr) >+ idx -= domain->hash_size - incr; >+ else >+ idx += incr; >+ } >+ /* NOTREACHED */ >+ } >+ else >+ { >+ /* Try the default method: binary search in the sorted array of >+ messages. */ >+ size_t top, bottom; >+ >+ bottom = 0; >+ top = nstrings; >+ while (bottom < top) >+ { >+ int cmp_val; >+ >+ act = (bottom + top) / 2; >+ cmp_val = strcmp (msgid, (domain->data >+ + W (domain->must_swap, >+ domain->orig_tab[act].offset))); >+ if (cmp_val < 0) >+ top = act; >+ else if (cmp_val > 0) >+ bottom = act + 1; >+ else >+ goto found; >+ } >+ /* No translation was found. */ >+ return NULL; >+ } >+ >+ found: >+ /* The translation was found at index ACT. If we have to convert the >+ string to use a different character set, this is the time. */ >+ if (act < nstrings) >+ { >+ result = (char *) >+ (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); >+ resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; >+ } >+ else >+ { >+ result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; >+ resultlen = domain->trans_sysdep_tab[act - nstrings].length; >+ } >+ >+#if defined _LIBC || HAVE_ICONV >+ if (domain->codeset_cntr >+ != (domainbinding != NULL ? domainbinding->codeset_cntr : 0)) >+ { >+ /* The domain's codeset has changed through bind_textdomain_codeset() >+ since the message catalog was initialized or last accessed. We >+ have to reinitialize the converter. */ >+ _nl_free_domain_conv (domain); >+ _nl_init_domain_conv (domain_file, domain, domainbinding); >+ } >+ >+ if ( >+# ifdef _LIBC >+ domain->conv != (__gconv_t) -1 >+# else >+# if HAVE_ICONV >+ domain->conv != (iconv_t) -1 >+# endif >+# endif >+ ) >+ { >+ /* We are supposed to do a conversion. First allocate an >+ appropriate table with the same structure as the table >+ of translations in the file, where we can put the pointers >+ to the converted strings in. >+ There is a slight complication with plural entries. They >+ are represented by consecutive NUL terminated strings. We >+ handle this case by converting RESULTLEN bytes, including >+ NULs. */ >+ >+ if (domain->conv_tab == NULL >+ && ((domain->conv_tab = >+ (char **) calloc (nstrings + domain->n_sysdep_strings, >+ sizeof (char *))) >+ == NULL)) >+ /* Mark that we didn't succeed allocating a table. */ >+ domain->conv_tab = (char **) -1; >+ >+ if (__builtin_expect (domain->conv_tab == (char **) -1, 0)) >+ /* Nothing we can do, no more memory. */ >+ goto converted; >+ >+ if (domain->conv_tab[act] == NULL) >+ { >+ /* We haven't used this string so far, so it is not >+ translated yet. Do this now. */ >+ /* We use a bit more efficient memory handling. >+ We allocate always larger blocks which get used over >+ time. This is faster than many small allocations. */ >+ __libc_lock_define_initialized (static, lock) >+# define INITIAL_BLOCK_SIZE 4080 >+ static unsigned char *freemem; >+ static size_t freemem_size; >+ >+ const unsigned char *inbuf; >+ unsigned char *outbuf; >+ int malloc_count; >+# ifndef _LIBC >+ transmem_block_t *transmem_list = NULL; >+# endif >+ >+ __libc_lock_lock (lock); >+ >+ inbuf = (const unsigned char *) result; >+ outbuf = freemem + sizeof (size_t); >+ >+ malloc_count = 0; >+ while (1) >+ { >+ transmem_block_t *newmem; >+# ifdef _LIBC >+ size_t non_reversible; >+ int res; >+ >+ if (freemem_size < sizeof (size_t)) >+ goto resize_freemem; >+ >+ res = __gconv (domain->conv, >+ &inbuf, inbuf + resultlen, >+ &outbuf, >+ outbuf + freemem_size - sizeof (size_t), >+ &non_reversible); >+ >+ if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) >+ break; >+ >+ if (res != __GCONV_FULL_OUTPUT) >+ { >+ __libc_lock_unlock (lock); >+ goto converted; >+ } >+ >+ inbuf = result; >+# else >+# if HAVE_ICONV >+ const char *inptr = (const char *) inbuf; >+ size_t inleft = resultlen; >+ char *outptr = (char *) outbuf; >+ size_t outleft; >+ >+ if (freemem_size < sizeof (size_t)) >+ goto resize_freemem; >+ >+ outleft = freemem_size - sizeof (size_t); >+ if (iconv (domain->conv, >+ (ICONV_CONST char **) &inptr, &inleft, >+ &outptr, &outleft) >+ != (size_t) (-1)) >+ { >+ outbuf = (unsigned char *) outptr; >+ break; >+ } >+ if (errno != E2BIG) >+ { >+ __libc_lock_unlock (lock); >+ goto converted; >+ } >+# endif >+# endif >+ >+ resize_freemem: >+ /* We must allocate a new buffer or resize the old one. */ >+ if (malloc_count > 0) >+ { >+ ++malloc_count; >+ freemem_size = malloc_count * INITIAL_BLOCK_SIZE; >+ newmem = (transmem_block_t *) realloc (transmem_list, >+ freemem_size); >+# ifdef _LIBC >+ if (newmem != NULL) >+ transmem_list = transmem_list->next; >+ else >+ { >+ struct transmem_list *old = transmem_list; >+ >+ transmem_list = transmem_list->next; >+ free (old); >+ } >+# endif >+ } >+ else >+ { >+ malloc_count = 1; >+ freemem_size = INITIAL_BLOCK_SIZE; >+ newmem = (transmem_block_t *) malloc (freemem_size); >+ } >+ if (__builtin_expect (newmem == NULL, 0)) >+ { >+ freemem = NULL; >+ freemem_size = 0; >+ __libc_lock_unlock (lock); >+ goto converted; >+ } >+ >+# ifdef _LIBC >+ /* Add the block to the list of blocks we have to free >+ at some point. */ >+ newmem->next = transmem_list; >+ transmem_list = newmem; >+ >+ freemem = newmem->data; >+ freemem_size -= offsetof (struct transmem_list, data); >+# else >+ transmem_list = newmem; >+ freemem = newmem; >+# endif >+ >+ outbuf = freemem + sizeof (size_t); >+ } >+ >+ /* We have now in our buffer a converted string. Put this >+ into the table of conversions. */ >+ *(size_t *) freemem = outbuf - freemem - sizeof (size_t); >+ domain->conv_tab[act] = (char *) freemem; >+ /* Shrink freemem, but keep it aligned. */ >+ freemem_size -= outbuf - freemem; >+ freemem = outbuf; >+ freemem += freemem_size & (alignof (size_t) - 1); >+ freemem_size = freemem_size & ~ (alignof (size_t) - 1); >+ >+ __libc_lock_unlock (lock); >+ } >+ >+ /* Now domain->conv_tab[act] contains the translation of all >+ the plural variants. */ >+ result = domain->conv_tab[act] + sizeof (size_t); >+ resultlen = *(size_t *) domain->conv_tab[act]; >+ } >+ >+ converted: >+ /* The result string is converted. */ >+ >+#endif /* _LIBC || HAVE_ICONV */ >+ >+ *lengthp = resultlen; >+ return result; >+} >+ >+ >+/* Look up a plural variant. */ >+static char * >+internal_function >+plural_lookup (domain, n, translation, translation_len) >+ struct loaded_l10nfile *domain; >+ unsigned long int n; >+ const char *translation; >+ size_t translation_len; >+{ >+ struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; >+ unsigned long int index; >+ const char *p; >+ >+ index = plural_eval (domaindata->plural, n); >+ if (index >= domaindata->nplurals) >+ /* This should never happen. It means the plural expression and the >+ given maximum value do not match. */ >+ index = 0; >+ >+ /* Skip INDEX strings at TRANSLATION. */ >+ p = translation; >+ while (index-- > 0) >+ { >+#ifdef _LIBC >+ p = __rawmemchr (p, '\0'); >+#else >+ p = strchr (p, '\0'); >+#endif >+ /* And skip over the NUL byte. */ >+ p++; >+ >+ if (p >= translation + translation_len) >+ /* This should never happen. It means the plural expression >+ evaluated to a value larger than the number of variants >+ available for MSGID1. */ >+ return (char *) translation; >+ } >+ return (char *) p; >+} >+ >+ >+/* Return string representation of locale CATEGORY. */ >+static const char * >+internal_function >+category_to_name (category) >+ int category; >+{ >+ const char *retval; >+ >+ switch (category) >+ { >+#ifdef LC_COLLATE >+ case LC_COLLATE: >+ retval = "LC_COLLATE"; >+ break; >+#endif >+#ifdef LC_CTYPE >+ case LC_CTYPE: >+ retval = "LC_CTYPE"; >+ break; >+#endif >+#ifdef LC_MONETARY >+ case LC_MONETARY: >+ retval = "LC_MONETARY"; >+ break; >+#endif >+#ifdef LC_NUMERIC >+ case LC_NUMERIC: >+ retval = "LC_NUMERIC"; >+ break; >+#endif >+#ifdef LC_TIME >+ case LC_TIME: >+ retval = "LC_TIME"; >+ break; >+#endif >+#ifdef LC_MESSAGES >+ case LC_MESSAGES: >+ retval = "LC_MESSAGES"; >+ break; >+#endif >+#ifdef LC_RESPONSE >+ case LC_RESPONSE: >+ retval = "LC_RESPONSE"; >+ break; >+#endif >+#ifdef LC_ALL >+ case LC_ALL: >+ /* This might not make sense but is perhaps better than any other >+ value. */ >+ retval = "LC_ALL"; >+ break; >+#endif >+ default: >+ /* If you have a better idea for a default value let me know. */ >+ retval = "LC_XXX"; >+ } >+ >+ return retval; >+} >+ >+/* Guess value of current locale from value of the environment variables. */ >+static const char * >+internal_function >+guess_category_value (category, categoryname) >+ int category; >+ const char *categoryname; >+{ >+ const char *language; >+ const char *retval; >+ >+ /* The highest priority value is the `LANGUAGE' environment >+ variable. But we don't use the value if the currently selected >+ locale is the C locale. This is a GNU extension. */ >+ language = getenv ("LANGUAGE"); >+ if (language != NULL && language[0] == '\0') >+ language = NULL; >+ >+ /* We have to proceed with the POSIX methods of looking to `LC_ALL', >+ `LC_xxx', and `LANG'. On some systems this can be done by the >+ `setlocale' function itself. */ >+#ifdef _LIBC >+ retval = setlocale (category, NULL); >+#else >+ retval = _nl_locale_name (category, categoryname); >+#endif >+ >+ /* Ignore LANGUAGE if the locale is set to "C" because >+ 1. "C" locale usually uses the ASCII encoding, and most international >+ messages use non-ASCII characters. These characters get displayed >+ as question marks (if using glibc's iconv()) or as invalid 8-bit >+ characters (because other iconv()s refuse to convert most non-ASCII >+ characters to ASCII). In any case, the output is ugly. >+ 2. The precise output of some programs in the "C" locale is specified >+ by POSIX and should not depend on environment variables like >+ "LANGUAGE". We allow such programs to use gettext(). */ >+ return language != NULL && strcmp (retval, "C") != 0 ? language : retval; >+} >+ >+/* @@ begin of epilog @@ */ >+ >+/* We don't want libintl.a to depend on any other library. So we >+ avoid the non-standard function stpcpy. In GNU C Library this >+ function is available, though. Also allow the symbol HAVE_STPCPY >+ to be defined. */ >+#if !_LIBC && !HAVE_STPCPY >+static char * >+stpcpy (dest, src) >+ char *dest; >+ const char *src; >+{ >+ while ((*dest++ = *src++) != '\0') >+ /* Do nothing. */ ; >+ return dest - 1; >+} >+#endif >+ >+#if !_LIBC && !HAVE_MEMPCPY >+static void * >+mempcpy (dest, src, n) >+ void *dest; >+ const void *src; >+ size_t n; >+{ >+ return (void *) ((char *) memcpy (dest, src, n) + n); >+} >+#endif >+ >+ >+#ifdef _LIBC >+/* If we want to free all resources we have to do some work at >+ program's end. */ >+static void __attribute__ ((unused)) >+free_mem (void) >+{ >+ void *old; >+ >+ while (_nl_domain_bindings != NULL) >+ { >+ struct binding *oldp = _nl_domain_bindings; >+ _nl_domain_bindings = _nl_domain_bindings->next; >+ if (oldp->dirname != _nl_default_dirname) >+ /* Yes, this is a pointer comparison. */ >+ free (oldp->dirname); >+ free (oldp->codeset); >+ free (oldp); >+ } >+ >+ if (_nl_current_default_domain != _nl_default_default_domain) >+ /* Yes, again a pointer comparison. */ >+ free ((char *) _nl_current_default_domain); >+ >+ /* Remove the search tree with the known translations. */ >+ __tdestroy (root, free); >+ root = NULL; >+ >+ while (transmem_list != NULL) >+ { >+ old = transmem_list; >+ transmem_list = transmem_list->next; >+ free (old); >+ } >+} >+ >+text_set_element (__libc_subfreeres, free_mem); >+#endif >diff -Naupr hercules-3.05/intl/dcngettext.c hercules-20070717/intl/dcngettext.c >--- hercules-3.05/intl/dcngettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/dcngettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,61 @@ >+/* Implementation of the dcngettext(3) function. >+ Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define DCNGETTEXT __dcngettext >+# define DCIGETTEXT __dcigettext >+#else >+# define DCNGETTEXT libintl_dcngettext >+# define DCIGETTEXT libintl_dcigettext >+#endif >+ >+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY >+ locale. */ >+char * >+DCNGETTEXT (domainname, msgid1, msgid2, n, category) >+ const char *domainname; >+ const char *msgid1; >+ const char *msgid2; >+ unsigned long int n; >+ int category; >+{ >+ return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+INTDEF(__dcngettext) >+weak_alias (__dcngettext, dcngettext); >+#endif >diff -Naupr hercules-3.05/intl/dgettext.c hercules-20070717/intl/dgettext.c >--- hercules-3.05/intl/dgettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/dgettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,59 @@ >+/* Implementation of the dgettext(3) function. >+ Copyright (C) 1995-1997, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <locale.h> >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define DGETTEXT __dgettext >+# define DCGETTEXT INTUSE(__dcgettext) >+#else >+# define DGETTEXT libintl_dgettext >+# define DCGETTEXT libintl_dcgettext >+#endif >+ >+/* Look up MSGID in the DOMAINNAME message catalog of the current >+ LC_MESSAGES locale. */ >+char * >+DGETTEXT (domainname, msgid) >+ const char *domainname; >+ const char *msgid; >+{ >+ return DCGETTEXT (domainname, msgid, LC_MESSAGES); >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+weak_alias (__dgettext, dgettext); >+#endif >diff -Naupr hercules-3.05/intl/dngettext.c hercules-20070717/intl/dngettext.c >--- hercules-3.05/intl/dngettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/dngettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,61 @@ >+/* Implementation of the dngettext(3) function. >+ Copyright (C) 1995-1997, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <locale.h> >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define DNGETTEXT __dngettext >+# define DCNGETTEXT INTUSE(__dcngettext) >+#else >+# define DNGETTEXT libintl_dngettext >+# define DCNGETTEXT libintl_dcngettext >+#endif >+ >+/* Look up MSGID in the DOMAINNAME message catalog of the current >+ LC_MESSAGES locale and skip message according to the plural form. */ >+char * >+DNGETTEXT (domainname, msgid1, msgid2, n) >+ const char *domainname; >+ const char *msgid1; >+ const char *msgid2; >+ unsigned long int n; >+{ >+ return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+weak_alias (__dngettext, dngettext); >+#endif >diff -Naupr hercules-3.05/intl/eval-plural.h hercules-20070717/intl/eval-plural.h >--- hercules-3.05/intl/eval-plural.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/eval-plural.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,114 @@ >+/* Plural expression evaluation. >+ Copyright (C) 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifndef STATIC >+#define STATIC static >+#endif >+ >+/* Evaluate the plural expression and return an index value. */ >+STATIC unsigned long int plural_eval PARAMS ((struct expression *pexp, >+ unsigned long int n)) >+ internal_function; >+ >+STATIC >+unsigned long int >+internal_function >+plural_eval (pexp, n) >+ struct expression *pexp; >+ unsigned long int n; >+{ >+ switch (pexp->nargs) >+ { >+ case 0: >+ switch (pexp->operation) >+ { >+ case var: >+ return n; >+ case num: >+ return pexp->val.num; >+ default: >+ break; >+ } >+ /* NOTREACHED */ >+ break; >+ case 1: >+ { >+ /* pexp->operation must be lnot. */ >+ unsigned long int arg = plural_eval (pexp->val.args[0], n); >+ return ! arg; >+ } >+ case 2: >+ { >+ unsigned long int leftarg = plural_eval (pexp->val.args[0], n); >+ if (pexp->operation == lor) >+ return leftarg || plural_eval (pexp->val.args[1], n); >+ else if (pexp->operation == land) >+ return leftarg && plural_eval (pexp->val.args[1], n); >+ else >+ { >+ unsigned long int rightarg = plural_eval (pexp->val.args[1], n); >+ >+ switch (pexp->operation) >+ { >+ case mult: >+ return leftarg * rightarg; >+ case divide: >+#if !INTDIV0_RAISES_SIGFPE >+ if (rightarg == 0) >+ raise (SIGFPE); >+#endif >+ return leftarg / rightarg; >+ case module: >+#if !INTDIV0_RAISES_SIGFPE >+ if (rightarg == 0) >+ raise (SIGFPE); >+#endif >+ return leftarg % rightarg; >+ case plus: >+ return leftarg + rightarg; >+ case minus: >+ return leftarg - rightarg; >+ case less_than: >+ return leftarg < rightarg; >+ case greater_than: >+ return leftarg > rightarg; >+ case less_or_equal: >+ return leftarg <= rightarg; >+ case greater_or_equal: >+ return leftarg >= rightarg; >+ case equal: >+ return leftarg == rightarg; >+ case not_equal: >+ return leftarg != rightarg; >+ default: >+ break; >+ } >+ } >+ /* NOTREACHED */ >+ break; >+ } >+ case 3: >+ { >+ /* pexp->operation must be qmop. */ >+ unsigned long int boolarg = plural_eval (pexp->val.args[0], n); >+ return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); >+ } >+ } >+ /* NOTREACHED */ >+ return 0; >+} >diff -Naupr hercules-3.05/intl/explodename.c hercules-20070717/intl/explodename.c >--- hercules-3.05/intl/explodename.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/explodename.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,192 @@ >+/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. >+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stdlib.h> >+#include <string.h> >+#include <sys/types.h> >+ >+#include "loadinfo.h" >+ >+/* On some strange systems still no definition of NULL is found. Sigh! */ >+#ifndef NULL >+# if defined __STDC__ && __STDC__ >+# define NULL ((void *) 0) >+# else >+# define NULL 0 >+# endif >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+char * >+_nl_find_language (name) >+ const char *name; >+{ >+ while (name[0] != '\0' && name[0] != '_' && name[0] != '@' >+ && name[0] != '+' && name[0] != ',') >+ ++name; >+ >+ return (char *) name; >+} >+ >+ >+int >+_nl_explode_name (name, language, modifier, territory, codeset, >+ normalized_codeset, special, sponsor, revision) >+ char *name; >+ const char **language; >+ const char **modifier; >+ const char **territory; >+ const char **codeset; >+ const char **normalized_codeset; >+ const char **special; >+ const char **sponsor; >+ const char **revision; >+{ >+ enum { undecided, xpg, cen } syntax; >+ char *cp; >+ int mask; >+ >+ *modifier = NULL; >+ *territory = NULL; >+ *codeset = NULL; >+ *normalized_codeset = NULL; >+ *special = NULL; >+ *sponsor = NULL; >+ *revision = NULL; >+ >+ /* Now we determine the single parts of the locale name. First >+ look for the language. Termination symbols are `_' and `@' if >+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ >+ mask = 0; >+ syntax = undecided; >+ *language = cp = name; >+ cp = _nl_find_language (*language); >+ >+ if (*language == cp) >+ /* This does not make sense: language has to be specified. Use >+ this entry as it is without exploding. Perhaps it is an alias. */ >+ cp = strchr (*language, '\0'); >+ else if (cp[0] == '_') >+ { >+ /* Next is the territory. */ >+ cp[0] = '\0'; >+ *territory = ++cp; >+ >+ while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' >+ && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') >+ ++cp; >+ >+ mask |= TERRITORY; >+ >+ if (cp[0] == '.') >+ { >+ /* Next is the codeset. */ >+ syntax = xpg; >+ cp[0] = '\0'; >+ *codeset = ++cp; >+ >+ while (cp[0] != '\0' && cp[0] != '@') >+ ++cp; >+ >+ mask |= XPG_CODESET; >+ >+ if (*codeset != cp && (*codeset)[0] != '\0') >+ { >+ *normalized_codeset = _nl_normalize_codeset (*codeset, >+ cp - *codeset); >+ if (strcmp (*codeset, *normalized_codeset) == 0) >+ free ((char *) *normalized_codeset); >+ else >+ mask |= XPG_NORM_CODESET; >+ } >+ } >+ } >+ >+ if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) >+ { >+ /* Next is the modifier. */ >+ syntax = cp[0] == '@' ? xpg : cen; >+ cp[0] = '\0'; >+ *modifier = ++cp; >+ >+ while (syntax == cen && cp[0] != '\0' && cp[0] != '+' >+ && cp[0] != ',' && cp[0] != '_') >+ ++cp; >+ >+ mask |= XPG_MODIFIER | CEN_AUDIENCE; >+ } >+ >+ if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) >+ { >+ syntax = cen; >+ >+ if (cp[0] == '+') >+ { >+ /* Next is special application (CEN syntax). */ >+ cp[0] = '\0'; >+ *special = ++cp; >+ >+ while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') >+ ++cp; >+ >+ mask |= CEN_SPECIAL; >+ } >+ >+ if (cp[0] == ',') >+ { >+ /* Next is sponsor (CEN syntax). */ >+ cp[0] = '\0'; >+ *sponsor = ++cp; >+ >+ while (cp[0] != '\0' && cp[0] != '_') >+ ++cp; >+ >+ mask |= CEN_SPONSOR; >+ } >+ >+ if (cp[0] == '_') >+ { >+ /* Next is revision (CEN syntax). */ >+ cp[0] = '\0'; >+ *revision = ++cp; >+ >+ mask |= CEN_REVISION; >+ } >+ } >+ >+ /* For CEN syntax values it might be important to have the >+ separator character in the file name, not for XPG syntax. */ >+ if (syntax == xpg) >+ { >+ if (*territory != NULL && (*territory)[0] == '\0') >+ mask &= ~TERRITORY; >+ >+ if (*codeset != NULL && (*codeset)[0] == '\0') >+ mask &= ~XPG_CODESET; >+ >+ if (*modifier != NULL && (*modifier)[0] == '\0') >+ mask &= ~XPG_MODIFIER; >+ } >+ >+ return mask; >+} >diff -Naupr hercules-3.05/intl/finddomain.c hercules-20070717/intl/finddomain.c >--- hercules-3.05/intl/finddomain.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/finddomain.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,198 @@ >+/* Handle list of needed message catalogs >+ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. >+ Written by Ulrich Drepper <drepper@gnu.org>, 1995. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stdio.h> >+#include <sys/types.h> >+#include <stdlib.h> >+#include <string.h> >+ >+#if defined HAVE_UNISTD_H || defined _LIBC >+# include <unistd.h> >+#endif >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+/* @@ end of prolog @@ */ >+/* List of already loaded domains. */ >+static struct loaded_l10nfile *_nl_loaded_domains; >+ >+ >+/* Return a data structure describing the message catalog described by >+ the DOMAINNAME and CATEGORY parameters with respect to the currently >+ established bindings. */ >+struct loaded_l10nfile * >+internal_function >+_nl_find_domain (dirname, locale, domainname, domainbinding) >+ const char *dirname; >+ char *locale; >+ const char *domainname; >+ struct binding *domainbinding; >+{ >+ struct loaded_l10nfile *retval; >+ const char *language; >+ const char *modifier; >+ const char *territory; >+ const char *codeset; >+ const char *normalized_codeset; >+ const char *special; >+ const char *sponsor; >+ const char *revision; >+ const char *alias_value; >+ int mask; >+ >+ /* LOCALE can consist of up to four recognized parts for the XPG syntax: >+ >+ language[_territory[.codeset]][@modifier] >+ >+ and six parts for the CEN syntax: >+ >+ language[_territory][+audience][+special][,[sponsor][_revision]] >+ >+ Beside the first part all of them are allowed to be missing. If >+ the full specified locale is not found, the less specific one are >+ looked for. The various parts will be stripped off according to >+ the following order: >+ (1) revision >+ (2) sponsor >+ (3) special >+ (4) codeset >+ (5) normalized codeset >+ (6) territory >+ (7) audience/modifier >+ */ >+ >+ /* If we have already tested for this locale entry there has to >+ be one data set in the list of loaded domains. */ >+ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, >+ strlen (dirname) + 1, 0, locale, NULL, NULL, >+ NULL, NULL, NULL, NULL, NULL, domainname, 0); >+ if (retval != NULL) >+ { >+ /* We know something about this locale. */ >+ int cnt; >+ >+ if (retval->decided == 0) >+ _nl_load_domain (retval, domainbinding); >+ >+ if (retval->data != NULL) >+ return retval; >+ >+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) >+ { >+ if (retval->successor[cnt]->decided == 0) >+ _nl_load_domain (retval->successor[cnt], domainbinding); >+ >+ if (retval->successor[cnt]->data != NULL) >+ break; >+ } >+ return cnt >= 0 ? retval : NULL; >+ /* NOTREACHED */ >+ } >+ >+ /* See whether the locale value is an alias. If yes its value >+ *overwrites* the alias name. No test for the original value is >+ done. */ >+ alias_value = _nl_expand_alias (locale); >+ if (alias_value != NULL) >+ { >+#if defined _LIBC || defined HAVE_STRDUP >+ locale = strdup (alias_value); >+ if (locale == NULL) >+ return NULL; >+#else >+ size_t len = strlen (alias_value) + 1; >+ locale = (char *) malloc (len); >+ if (locale == NULL) >+ return NULL; >+ >+ memcpy (locale, alias_value, len); >+#endif >+ } >+ >+ /* Now we determine the single parts of the locale name. First >+ look for the language. Termination symbols are `_' and `@' if >+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ >+ mask = _nl_explode_name (locale, &language, &modifier, &territory, >+ &codeset, &normalized_codeset, &special, >+ &sponsor, &revision); >+ >+ /* Create all possible locale entries which might be interested in >+ generalization. */ >+ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, >+ strlen (dirname) + 1, mask, language, territory, >+ codeset, normalized_codeset, modifier, special, >+ sponsor, revision, domainname, 1); >+ if (retval == NULL) >+ /* This means we are out of core. */ >+ return NULL; >+ >+ if (retval->decided == 0) >+ _nl_load_domain (retval, domainbinding); >+ if (retval->data == NULL) >+ { >+ int cnt; >+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) >+ { >+ if (retval->successor[cnt]->decided == 0) >+ _nl_load_domain (retval->successor[cnt], domainbinding); >+ if (retval->successor[cnt]->data != NULL) >+ break; >+ } >+ } >+ >+ /* The room for an alias was dynamically allocated. Free it now. */ >+ if (alias_value != NULL) >+ free (locale); >+ >+ /* The space for normalized_codeset is dynamically allocated. Free it. */ >+ if (mask & XPG_NORM_CODESET) >+ free ((void *) normalized_codeset); >+ >+ return retval; >+} >+ >+ >+#ifdef _LIBC >+static void __attribute__ ((unused)) >+free_mem (void) >+{ >+ struct loaded_l10nfile *runp = _nl_loaded_domains; >+ >+ while (runp != NULL) >+ { >+ struct loaded_l10nfile *here = runp; >+ if (runp->data != NULL) >+ _nl_unload_domain ((struct loaded_domain *) runp->data); >+ runp = runp->next; >+ free ((char *) here->filename); >+ free (here); >+ } >+} >+ >+text_set_element (__libc_subfreeres, free_mem); >+#endif >diff -Naupr hercules-3.05/intl/gettext.c hercules-20070717/intl/gettext.c >--- hercules-3.05/intl/gettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/gettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,64 @@ >+/* Implementation of gettext(3) function. >+ Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#ifdef _LIBC >+# define __need_NULL >+# include <stddef.h> >+#else >+# include <stdlib.h> /* Just for NULL. */ >+#endif >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define GETTEXT __gettext >+# define DCGETTEXT INTUSE(__dcgettext) >+#else >+# define GETTEXT libintl_gettext >+# define DCGETTEXT libintl_dcgettext >+#endif >+ >+/* Look up MSGID in the current default message catalog for the current >+ LC_MESSAGES locale. If not found, returns MSGID itself (the default >+ text). */ >+char * >+GETTEXT (msgid) >+ const char *msgid; >+{ >+ return DCGETTEXT (NULL, msgid, LC_MESSAGES); >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+weak_alias (__gettext, gettext); >+#endif >diff -Naupr hercules-3.05/intl/gettextP.h hercules-20070717/intl/gettextP.h >--- hercules-3.05/intl/gettextP.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/gettextP.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,242 @@ >+/* Header describing internals of libintl library. >+ Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. >+ Written by Ulrich Drepper <drepper@cygnus.com>, 1995. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifndef _GETTEXTP_H >+#define _GETTEXTP_H >+ >+#include <stddef.h> /* Get size_t. */ >+ >+#ifdef _LIBC >+# include "../iconv/gconv_int.h" >+#else >+# if HAVE_ICONV >+# include <iconv.h> >+# endif >+#endif >+ >+#include "loadinfo.h" >+ >+#include "gmo.h" /* Get nls_uint32. */ >+ >+/* @@ end of prolog @@ */ >+ >+#ifndef PARAMS >+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES >+# define PARAMS(args) args >+# else >+# define PARAMS(args) () >+# endif >+#endif >+ >+#ifndef internal_function >+# define internal_function >+#endif >+ >+#ifndef attribute_hidden >+# define attribute_hidden >+#endif >+ >+/* Tell the compiler when a conditional or integer expression is >+ almost always true or almost always false. */ >+#ifndef HAVE_BUILTIN_EXPECT >+# define __builtin_expect(expr, val) (expr) >+#endif >+ >+#ifndef W >+# define W(flag, data) ((flag) ? SWAP (data) : (data)) >+#endif >+ >+ >+#ifdef _LIBC >+# include <byteswap.h> >+# define SWAP(i) bswap_32 (i) >+#else >+static inline nls_uint32 >+SWAP (i) >+ nls_uint32 i; >+{ >+ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); >+} >+#endif >+ >+ >+/* In-memory representation of system dependent string. */ >+struct sysdep_string_desc >+{ >+ /* Length of addressed string, including the trailing NUL. */ >+ size_t length; >+ /* Pointer to addressed string. */ >+ const char *pointer; >+}; >+ >+/* The representation of an opened message catalog. */ >+struct loaded_domain >+{ >+ /* Pointer to memory containing the .mo file. */ >+ const char *data; >+ /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ >+ int use_mmap; >+ /* Size of mmap()ed memory. */ >+ size_t mmap_size; >+ /* 1 if the .mo file uses a different endianness than this machine. */ >+ int must_swap; >+ /* Pointer to additional malloc()ed memory. */ >+ void *malloced; >+ >+ /* Number of static strings pairs. */ >+ nls_uint32 nstrings; >+ /* Pointer to descriptors of original strings in the file. */ >+ const struct string_desc *orig_tab; >+ /* Pointer to descriptors of translated strings in the file. */ >+ const struct string_desc *trans_tab; >+ >+ /* Number of system dependent strings pairs. */ >+ nls_uint32 n_sysdep_strings; >+ /* Pointer to descriptors of original sysdep strings. */ >+ const struct sysdep_string_desc *orig_sysdep_tab; >+ /* Pointer to descriptors of translated sysdep strings. */ >+ const struct sysdep_string_desc *trans_sysdep_tab; >+ >+ /* Size of hash table. */ >+ nls_uint32 hash_size; >+ /* Pointer to hash table. */ >+ const nls_uint32 *hash_tab; >+ /* 1 if the hash table uses a different endianness than this machine. */ >+ int must_swap_hash_tab; >+ >+ int codeset_cntr; >+#ifdef _LIBC >+ __gconv_t conv; >+#else >+# if HAVE_ICONV >+ iconv_t conv; >+# endif >+#endif >+ char **conv_tab; >+ >+ struct expression *plural; >+ unsigned long int nplurals; >+}; >+ >+/* We want to allocate a string at the end of the struct. But ISO C >+ doesn't allow zero sized arrays. */ >+#ifdef __GNUC__ >+# define ZERO 0 >+#else >+# define ZERO 1 >+#endif >+ >+/* A set of settings bound to a message domain. Used to store settings >+ from bindtextdomain() and bind_textdomain_codeset(). */ >+struct binding >+{ >+ struct binding *next; >+ char *dirname; >+ int codeset_cntr; /* Incremented each time codeset changes. */ >+ char *codeset; >+ char domainname[ZERO]; >+}; >+ >+/* A counter which is incremented each time some previous translations >+ become invalid. >+ This variable is part of the external ABI of the GNU libintl. */ >+extern int _nl_msg_cat_cntr; >+ >+#ifndef _LIBC >+const char *_nl_locale_name PARAMS ((int category, const char *categoryname)); >+#endif >+ >+struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, >+ char *__locale, >+ const char *__domainname, >+ struct binding *__domainbinding)) >+ internal_function; >+void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain, >+ struct binding *__domainbinding)) >+ internal_function; >+void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) >+ internal_function; >+const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file, >+ struct loaded_domain *__domain, >+ struct binding *__domainbinding)) >+ internal_function; >+void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain)) >+ internal_function; >+ >+char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, >+ struct binding *domainbinding, >+ const char *msgid, size_t *lengthp)) >+ internal_function; >+ >+#ifdef _LIBC >+extern char *__gettext PARAMS ((const char *__msgid)); >+extern char *__dgettext PARAMS ((const char *__domainname, >+ const char *__msgid)); >+extern char *__dcgettext PARAMS ((const char *__domainname, >+ const char *__msgid, int __category)); >+extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2, >+ unsigned long int __n)); >+extern char *__dngettext PARAMS ((const char *__domainname, >+ const char *__msgid1, const char *__msgid2, >+ unsigned long int n)); >+extern char *__dcngettext PARAMS ((const char *__domainname, >+ const char *__msgid1, const char *__msgid2, >+ unsigned long int __n, int __category)); >+extern char *__dcigettext PARAMS ((const char *__domainname, >+ const char *__msgid1, const char *__msgid2, >+ int __plural, unsigned long int __n, >+ int __category)); >+extern char *__textdomain PARAMS ((const char *__domainname)); >+extern char *__bindtextdomain PARAMS ((const char *__domainname, >+ const char *__dirname)); >+extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname, >+ const char *__codeset)); >+#else >+extern char *libintl_gettext PARAMS ((const char *__msgid)); >+extern char *libintl_dgettext PARAMS ((const char *__domainname, >+ const char *__msgid)); >+extern char *libintl_dcgettext PARAMS ((const char *__domainname, >+ const char *__msgid, int __category)); >+extern char *libintl_ngettext PARAMS ((const char *__msgid1, >+ const char *__msgid2, >+ unsigned long int __n)); >+extern char *libintl_dngettext PARAMS ((const char *__domainname, >+ const char *__msgid1, >+ const char *__msgid2, >+ unsigned long int __n)); >+extern char *libintl_dcngettext PARAMS ((const char *__domainname, >+ const char *__msgid1, >+ const char *__msgid2, >+ unsigned long int __n, >+ int __category)); >+extern char *libintl_dcigettext PARAMS ((const char *__domainname, >+ const char *__msgid1, >+ const char *__msgid2, >+ int __plural, unsigned long int __n, >+ int __category)); >+extern char *libintl_textdomain PARAMS ((const char *__domainname)); >+extern char *libintl_bindtextdomain PARAMS ((const char *__domainname, >+ const char *__dirname)); >+extern char *libintl_bind_textdomain_codeset PARAMS ((const char *__domainname, >+ const char *__codeset)); >+#endif >+ >+/* @@ begin of epilog @@ */ >+ >+#endif /* gettextP.h */ >diff -Naupr hercules-3.05/intl/gmo.h hercules-20070717/intl/gmo.h >--- hercules-3.05/intl/gmo.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/gmo.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,148 @@ >+/* Description of GNU message catalog format: general file layout. >+ Copyright (C) 1995, 1997, 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifndef _GETTEXT_H >+#define _GETTEXT_H 1 >+ >+#include <limits.h> >+ >+/* @@ end of prolog @@ */ >+ >+/* The magic number of the GNU message catalog format. */ >+#define _MAGIC 0x950412de >+#define _MAGIC_SWAPPED 0xde120495 >+ >+/* Revision number of the currently used .mo (binary) file format. */ >+#define MO_REVISION_NUMBER 0 >+ >+/* The following contortions are an attempt to use the C preprocessor >+ to determine an unsigned integral type that is 32 bits wide. An >+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but >+ as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work >+ when cross-compiling. */ >+ >+#if __STDC__ >+# define UINT_MAX_32_BITS 4294967295U >+#else >+# define UINT_MAX_32_BITS 0xFFFFFFFF >+#endif >+ >+/* If UINT_MAX isn't defined, assume it's a 32-bit type. >+ This should be valid for all systems GNU cares about because >+ that doesn't include 16-bit systems, and only modern systems >+ (that certainly have <limits.h>) have 64+-bit integral types. */ >+ >+#ifndef UINT_MAX >+# define UINT_MAX UINT_MAX_32_BITS >+#endif >+ >+#if UINT_MAX == UINT_MAX_32_BITS >+typedef unsigned nls_uint32; >+#else >+# if USHRT_MAX == UINT_MAX_32_BITS >+typedef unsigned short nls_uint32; >+# else >+# if ULONG_MAX == UINT_MAX_32_BITS >+typedef unsigned long nls_uint32; >+# else >+ /* The following line is intended to throw an error. Using #error is >+ not portable enough. */ >+ "Cannot determine unsigned 32-bit data type." >+# endif >+# endif >+#endif >+ >+ >+/* Header for binary .mo file format. */ >+struct mo_file_header >+{ >+ /* The magic number. */ >+ nls_uint32 magic; >+ /* The revision number of the file format. */ >+ nls_uint32 revision; >+ >+ /* The following are only used in .mo files with major revision 0. */ >+ >+ /* The number of strings pairs. */ >+ nls_uint32 nstrings; >+ /* Offset of table with start offsets of original strings. */ >+ nls_uint32 orig_tab_offset; >+ /* Offset of table with start offsets of translated strings. */ >+ nls_uint32 trans_tab_offset; >+ /* Size of hash table. */ >+ nls_uint32 hash_tab_size; >+ /* Offset of first hash table entry. */ >+ nls_uint32 hash_tab_offset; >+ >+ /* The following are only used in .mo files with minor revision >= 1. */ >+ >+ /* The number of system dependent segments. */ >+ nls_uint32 n_sysdep_segments; >+ /* Offset of table describing system dependent segments. */ >+ nls_uint32 sysdep_segments_offset; >+ /* The number of system dependent strings pairs. */ >+ nls_uint32 n_sysdep_strings; >+ /* Offset of table with start offsets of original sysdep strings. */ >+ nls_uint32 orig_sysdep_tab_offset; >+ /* Offset of table with start offsets of translated sysdep strings. */ >+ nls_uint32 trans_sysdep_tab_offset; >+}; >+ >+/* Descriptor for static string contained in the binary .mo file. */ >+struct string_desc >+{ >+ /* Length of addressed string, not including the trailing NUL. */ >+ nls_uint32 length; >+ /* Offset of string in file. */ >+ nls_uint32 offset; >+}; >+ >+/* The following are only used in .mo files with minor revision >= 1. */ >+ >+/* Descriptor for system dependent string segment. */ >+struct sysdep_segment >+{ >+ /* Length of addressed string, including the trailing NUL. */ >+ nls_uint32 length; >+ /* Offset of string in file. */ >+ nls_uint32 offset; >+}; >+ >+/* Descriptor for system dependent string. */ >+struct sysdep_string >+{ >+ /* Offset of static string segments in file. */ >+ nls_uint32 offset; >+ /* Alternating sequence of static and system dependent segments. >+ The last segment is a static segment, including the trailing NUL. */ >+ struct segment_pair >+ { >+ /* Size of static segment. */ >+ nls_uint32 segsize; >+ /* Reference to system dependent string segment, or ~0 at the end. */ >+ nls_uint32 sysdepref; >+ } segments[1]; >+}; >+ >+/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, >+ regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ >+#define SEGMENTS_END ((nls_uint32) ~0) >+ >+/* @@ begin of epilog @@ */ >+ >+#endif /* gettext.h */ >diff -Naupr hercules-3.05/intl/hash-string.h hercules-20070717/intl/hash-string.h >--- hercules-3.05/intl/hash-string.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/hash-string.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,59 @@ >+/* Description of GNU message catalog format: string hashing function. >+ Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* @@ end of prolog @@ */ >+ >+#ifndef PARAMS >+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES >+# define PARAMS(Args) Args >+# else >+# define PARAMS(Args) () >+# endif >+#endif >+ >+/* We assume to have `unsigned long int' value with at least 32 bits. */ >+#define HASHWORDBITS 32 >+ >+ >+/* Defines the so called `hashpjw' function by P.J. Weinberger >+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, >+ 1986, 1987 Bell Telephone Laboratories, Inc.] */ >+static unsigned long int hash_string PARAMS ((const char *__str_param)); >+ >+static inline unsigned long int >+hash_string (str_param) >+ const char *str_param; >+{ >+ unsigned long int hval, g; >+ const char *str = str_param; >+ >+ /* Compute the hash value for the given string. */ >+ hval = 0; >+ while (*str != '\0') >+ { >+ hval <<= 4; >+ hval += (unsigned long int) *str++; >+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); >+ if (g != 0) >+ { >+ hval ^= g >> (HASHWORDBITS - 8); >+ hval ^= g; >+ } >+ } >+ return hval; >+} >diff -Naupr hercules-3.05/intl/intl-compat.c hercules-20070717/intl/intl-compat.c >--- hercules-3.05/intl/intl-compat.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/intl-compat.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,131 @@ >+/* intl-compat.c - Stub functions to call gettext functions from GNU gettext >+ Library. >+ Copyright (C) 1995, 2000-2002 Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#define _INTL_REDIRECT_MACROS >+#include "libgnuintl.h" >+#include "gettextP.h" >+ >+/* @@ end of prolog @@ */ >+ >+/* This file redirects the gettext functions (without prefix) to those >+ defined in the included GNU libintl library (with "libintl_" prefix). >+ It is compiled into libintl in order to make the AM_GNU_GETTEXT test >+ of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which >+ has the redirections primarily in the <libintl.h> include file. */ >+ >+ >+#undef gettext >+#undef dgettext >+#undef dcgettext >+#undef ngettext >+#undef dngettext >+#undef dcngettext >+#undef textdomain >+#undef bindtextdomain >+#undef bind_textdomain_codeset >+ >+ >+char * >+gettext (msgid) >+ const char *msgid; >+{ >+ return libintl_gettext (msgid); >+} >+ >+ >+char * >+dgettext (domainname, msgid) >+ const char *domainname; >+ const char *msgid; >+{ >+ return libintl_dgettext (domainname, msgid); >+} >+ >+ >+char * >+dcgettext (domainname, msgid, category) >+ const char *domainname; >+ const char *msgid; >+ int category; >+{ >+ return libintl_dcgettext (domainname, msgid, category); >+} >+ >+ >+char * >+ngettext (msgid1, msgid2, n) >+ const char *msgid1; >+ const char *msgid2; >+ unsigned long int n; >+{ >+ return libintl_ngettext (msgid1, msgid2, n); >+} >+ >+ >+char * >+dngettext (domainname, msgid1, msgid2, n) >+ const char *domainname; >+ const char *msgid1; >+ const char *msgid2; >+ unsigned long int n; >+{ >+ return libintl_dngettext (domainname, msgid1, msgid2, n); >+} >+ >+ >+char * >+dcngettext (domainname, msgid1, msgid2, n, category) >+ const char *domainname; >+ const char *msgid1; >+ const char *msgid2; >+ unsigned long int n; >+ int category; >+{ >+ return libintl_dcngettext (domainname, msgid1, msgid2, n, category); >+} >+ >+ >+char * >+textdomain (domainname) >+ const char *domainname; >+{ >+ return libintl_textdomain (domainname); >+} >+ >+ >+char * >+bindtextdomain (domainname, dirname) >+ const char *domainname; >+ const char *dirname; >+{ >+ return libintl_bindtextdomain (domainname, dirname); >+} >+ >+ >+char * >+bind_textdomain_codeset (domainname, codeset) >+ const char *domainname; >+ const char *codeset; >+{ >+ return libintl_bind_textdomain_codeset (domainname, codeset); >+} >diff -Naupr hercules-3.05/intl/l10nflist.c hercules-20070717/intl/l10nflist.c >--- hercules-3.05/intl/l10nflist.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/l10nflist.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,453 @@ >+/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. >+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* Tell glibc's <string.h> to provide a prototype for stpcpy(). >+ This must come before <config.h> because <config.h> may include >+ <features.h>, and once <features.h> has been included, it's too late. */ >+#ifndef _GNU_SOURCE >+# define _GNU_SOURCE 1 >+#endif >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <string.h> >+ >+#if defined _LIBC || defined HAVE_ARGZ_H >+# include <argz.h> >+#endif >+#include <ctype.h> >+#include <sys/types.h> >+#include <stdlib.h> >+ >+#include "loadinfo.h" >+ >+/* On some strange systems still no definition of NULL is found. Sigh! */ >+#ifndef NULL >+# if defined __STDC__ && __STDC__ >+# define NULL ((void *) 0) >+# else >+# define NULL 0 >+# endif >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+#ifdef _LIBC >+/* Rename the non ANSI C functions. This is required by the standard >+ because some ANSI C functions will require linking with this object >+ file and the name space must not be polluted. */ >+# ifndef stpcpy >+# define stpcpy(dest, src) __stpcpy(dest, src) >+# endif >+#else >+# ifndef HAVE_STPCPY >+static char *stpcpy PARAMS ((char *dest, const char *src)); >+# endif >+#endif >+ >+/* Pathname support. >+ ISSLASH(C) tests whether C is a directory separator character. >+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, >+ it may be concatenated to a directory pathname. >+ */ >+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ >+ /* Win32, OS/2, DOS */ >+# define ISSLASH(C) ((C) == '/' || (C) == '\\') >+# define HAS_DEVICE(P) \ >+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ >+ && (P)[1] == ':') >+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) >+#else >+ /* Unix */ >+# define ISSLASH(C) ((C) == '/') >+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) >+#endif >+ >+/* Define function which are usually not available. */ >+ >+#if !defined _LIBC && !defined HAVE___ARGZ_COUNT >+/* Returns the number of strings in ARGZ. */ >+static size_t argz_count__ PARAMS ((const char *argz, size_t len)); >+ >+static size_t >+argz_count__ (argz, len) >+ const char *argz; >+ size_t len; >+{ >+ size_t count = 0; >+ while (len > 0) >+ { >+ size_t part_len = strlen (argz); >+ argz += part_len + 1; >+ len -= part_len + 1; >+ count++; >+ } >+ return count; >+} >+# undef __argz_count >+# define __argz_count(argz, len) argz_count__ (argz, len) >+#else >+# ifdef _LIBC >+# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) >+# endif >+#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ >+ >+#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY >+/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's >+ except the last into the character SEP. */ >+static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); >+ >+static void >+argz_stringify__ (argz, len, sep) >+ char *argz; >+ size_t len; >+ int sep; >+{ >+ while (len > 0) >+ { >+ size_t part_len = strlen (argz); >+ argz += part_len; >+ len -= part_len + 1; >+ if (len > 0) >+ *argz++ = sep; >+ } >+} >+# undef __argz_stringify >+# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) >+#else >+# ifdef _LIBC >+# define __argz_stringify(argz, len, sep) \ >+ INTUSE(__argz_stringify) (argz, len, sep) >+# endif >+#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ >+ >+#if !defined _LIBC && !defined HAVE___ARGZ_NEXT >+static char *argz_next__ PARAMS ((char *argz, size_t argz_len, >+ const char *entry)); >+ >+static char * >+argz_next__ (argz, argz_len, entry) >+ char *argz; >+ size_t argz_len; >+ const char *entry; >+{ >+ if (entry) >+ { >+ if (entry < argz + argz_len) >+ entry = strchr (entry, '\0') + 1; >+ >+ return entry >= argz + argz_len ? NULL : (char *) entry; >+ } >+ else >+ if (argz_len > 0) >+ return argz; >+ else >+ return 0; >+} >+# undef __argz_next >+# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) >+#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ >+ >+ >+/* Return number of bits set in X. */ >+static int pop PARAMS ((int x)); >+ >+static inline int >+pop (x) >+ int x; >+{ >+ /* We assume that no more than 16 bits are used. */ >+ x = ((x & ~0x5555) >> 1) + (x & 0x5555); >+ x = ((x & ~0x3333) >> 2) + (x & 0x3333); >+ x = ((x >> 4) + x) & 0x0f0f; >+ x = ((x >> 8) + x) & 0xff; >+ >+ return x; >+} >+ >+ >+struct loaded_l10nfile * >+_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, >+ territory, codeset, normalized_codeset, modifier, special, >+ sponsor, revision, filename, do_allocate) >+ struct loaded_l10nfile **l10nfile_list; >+ const char *dirlist; >+ size_t dirlist_len; >+ int mask; >+ const char *language; >+ const char *territory; >+ const char *codeset; >+ const char *normalized_codeset; >+ const char *modifier; >+ const char *special; >+ const char *sponsor; >+ const char *revision; >+ const char *filename; >+ int do_allocate; >+{ >+ char *abs_filename; >+ struct loaded_l10nfile **lastp; >+ struct loaded_l10nfile *retval; >+ char *cp; >+ size_t dirlist_count; >+ size_t entries; >+ int cnt; >+ >+ /* If LANGUAGE contains an absolute directory specification, we ignore >+ DIRLIST. */ >+ if (IS_ABSOLUTE_PATH (language)) >+ dirlist_len = 0; >+ >+ /* Allocate room for the full file name. */ >+ abs_filename = (char *) malloc (dirlist_len >+ + strlen (language) >+ + ((mask & TERRITORY) != 0 >+ ? strlen (territory) + 1 : 0) >+ + ((mask & XPG_CODESET) != 0 >+ ? strlen (codeset) + 1 : 0) >+ + ((mask & XPG_NORM_CODESET) != 0 >+ ? strlen (normalized_codeset) + 1 : 0) >+ + (((mask & XPG_MODIFIER) != 0 >+ || (mask & CEN_AUDIENCE) != 0) >+ ? strlen (modifier) + 1 : 0) >+ + ((mask & CEN_SPECIAL) != 0 >+ ? strlen (special) + 1 : 0) >+ + (((mask & CEN_SPONSOR) != 0 >+ || (mask & CEN_REVISION) != 0) >+ ? (1 + ((mask & CEN_SPONSOR) != 0 >+ ? strlen (sponsor) : 0) >+ + ((mask & CEN_REVISION) != 0 >+ ? strlen (revision) + 1 : 0)) : 0) >+ + 1 + strlen (filename) + 1); >+ >+ if (abs_filename == NULL) >+ return NULL; >+ >+ /* Construct file name. */ >+ cp = abs_filename; >+ if (dirlist_len > 0) >+ { >+ memcpy (cp, dirlist, dirlist_len); >+ __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); >+ cp += dirlist_len; >+ cp[-1] = '/'; >+ } >+ >+ cp = stpcpy (cp, language); >+ >+ if ((mask & TERRITORY) != 0) >+ { >+ *cp++ = '_'; >+ cp = stpcpy (cp, territory); >+ } >+ if ((mask & XPG_CODESET) != 0) >+ { >+ *cp++ = '.'; >+ cp = stpcpy (cp, codeset); >+ } >+ if ((mask & XPG_NORM_CODESET) != 0) >+ { >+ *cp++ = '.'; >+ cp = stpcpy (cp, normalized_codeset); >+ } >+ if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) >+ { >+ /* This component can be part of both syntaces but has different >+ leading characters. For CEN we use `+', else `@'. */ >+ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; >+ cp = stpcpy (cp, modifier); >+ } >+ if ((mask & CEN_SPECIAL) != 0) >+ { >+ *cp++ = '+'; >+ cp = stpcpy (cp, special); >+ } >+ if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) >+ { >+ *cp++ = ','; >+ if ((mask & CEN_SPONSOR) != 0) >+ cp = stpcpy (cp, sponsor); >+ if ((mask & CEN_REVISION) != 0) >+ { >+ *cp++ = '_'; >+ cp = stpcpy (cp, revision); >+ } >+ } >+ >+ *cp++ = '/'; >+ stpcpy (cp, filename); >+ >+ /* Look in list of already loaded domains whether it is already >+ available. */ >+ lastp = l10nfile_list; >+ for (retval = *l10nfile_list; retval != NULL; retval = retval->next) >+ if (retval->filename != NULL) >+ { >+ int compare = strcmp (retval->filename, abs_filename); >+ if (compare == 0) >+ /* We found it! */ >+ break; >+ if (compare < 0) >+ { >+ /* It's not in the list. */ >+ retval = NULL; >+ break; >+ } >+ >+ lastp = &retval->next; >+ } >+ >+ if (retval != NULL || do_allocate == 0) >+ { >+ free (abs_filename); >+ return retval; >+ } >+ >+ dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); >+ >+ /* Allocate a new loaded_l10nfile. */ >+ retval = >+ (struct loaded_l10nfile *) >+ malloc (sizeof (*retval) >+ + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) >+ * sizeof (struct loaded_l10nfile *))); >+ if (retval == NULL) >+ return NULL; >+ >+ retval->filename = abs_filename; >+ >+ /* We set retval->data to NULL here; it is filled in later. >+ Setting retval->decided to 1 here means that retval does not >+ correspond to a real file (dirlist_count > 1) or is not worth >+ looking up (if an unnormalized codeset was specified). */ >+ retval->decided = (dirlist_count > 1 >+ || ((mask & XPG_CODESET) != 0 >+ && (mask & XPG_NORM_CODESET) != 0)); >+ retval->data = NULL; >+ >+ retval->next = *lastp; >+ *lastp = retval; >+ >+ entries = 0; >+ /* Recurse to fill the inheritance list of RETVAL. >+ If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL >+ entry does not correspond to a real file; retval->filename contains >+ colons. In this case we loop across all elements of DIRLIST and >+ across all bit patterns dominated by MASK. >+ If the DIRLIST is a single directory or entirely redundant (i.e. >+ DIRLIST_COUNT == 1), we loop across all bit patterns dominated by >+ MASK, excluding MASK itself. >+ In either case, we loop down from MASK to 0. This has the effect >+ that the extra bits in the locale name are dropped in this order: >+ first the modifier, then the territory, then the codeset, then the >+ normalized_codeset. */ >+ for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) >+ if ((cnt & ~mask) == 0 >+ && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) >+ && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) >+ { >+ if (dirlist_count > 1) >+ { >+ /* Iterate over all elements of the DIRLIST. */ >+ char *dir = NULL; >+ >+ while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) >+ != NULL) >+ retval->successor[entries++] >+ = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, >+ cnt, language, territory, codeset, >+ normalized_codeset, modifier, special, >+ sponsor, revision, filename, 1); >+ } >+ else >+ retval->successor[entries++] >+ = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, >+ cnt, language, territory, codeset, >+ normalized_codeset, modifier, special, >+ sponsor, revision, filename, 1); >+ } >+ retval->successor[entries] = NULL; >+ >+ return retval; >+} >+ >+/* Normalize codeset name. There is no standard for the codeset >+ names. Normalization allows the user to use any of the common >+ names. The return value is dynamically allocated and has to be >+ freed by the caller. */ >+const char * >+_nl_normalize_codeset (codeset, name_len) >+ const char *codeset; >+ size_t name_len; >+{ >+ int len = 0; >+ int only_digit = 1; >+ char *retval; >+ char *wp; >+ size_t cnt; >+ >+ for (cnt = 0; cnt < name_len; ++cnt) >+ if (isalnum ((unsigned char) codeset[cnt])) >+ { >+ ++len; >+ >+ if (isalpha ((unsigned char) codeset[cnt])) >+ only_digit = 0; >+ } >+ >+ retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); >+ >+ if (retval != NULL) >+ { >+ if (only_digit) >+ wp = stpcpy (retval, "iso"); >+ else >+ wp = retval; >+ >+ for (cnt = 0; cnt < name_len; ++cnt) >+ if (isalpha ((unsigned char) codeset[cnt])) >+ *wp++ = tolower ((unsigned char) codeset[cnt]); >+ else if (isdigit ((unsigned char) codeset[cnt])) >+ *wp++ = codeset[cnt]; >+ >+ *wp = '\0'; >+ } >+ >+ return (const char *) retval; >+} >+ >+ >+/* @@ begin of epilog @@ */ >+ >+/* We don't want libintl.a to depend on any other library. So we >+ avoid the non-standard function stpcpy. In GNU C Library this >+ function is available, though. Also allow the symbol HAVE_STPCPY >+ to be defined. */ >+#if !_LIBC && !HAVE_STPCPY >+static char * >+stpcpy (dest, src) >+ char *dest; >+ const char *src; >+{ >+ while ((*dest++ = *src++) != '\0') >+ /* Do nothing. */ ; >+ return dest - 1; >+} >+#endif >diff -Naupr hercules-3.05/intl/libgnuintl.h hercules-20070717/intl/libgnuintl.h >--- hercules-3.05/intl/libgnuintl.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/libgnuintl.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,296 @@ >+/* Message catalogs for internationalization. >+ Copyright (C) 1995-1997, 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifndef _LIBINTL_H >+#define _LIBINTL_H 1 >+ >+#include <locale.h> >+ >+/* The LC_MESSAGES locale category is the category used by the functions >+ gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. >+ On systems that don't define it, use an arbitrary value instead. >+ On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) >+ then includes <libintl.h> (i.e. this file!) and then only defines >+ LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES >+ in this case. */ >+#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) >+# define LC_MESSAGES 1729 >+#endif >+ >+/* We define an additional symbol to signal that we use the GNU >+ implementation of gettext. */ >+#define __USE_GNU_GETTEXT 1 >+ >+/* Provide information about the supported file formats. Returns the >+ maximum minor revision number supported for a given major revision. */ >+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ >+ ((major) == 0 ? 1 : -1) >+ >+/* Resolve a platform specific conflict on DJGPP. GNU gettext takes >+ precedence over _conio_gettext. */ >+#ifdef __DJGPP__ >+# undef gettext >+#endif >+ >+/* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers >+ used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */ >+#ifndef _INTL_PARAMS >+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES >+# define _INTL_PARAMS(args) args >+# else >+# define _INTL_PARAMS(args) () >+# endif >+#endif >+ >+#ifdef __cplusplus >+extern "C" { >+#endif >+ >+ >+/* We redirect the functions to those prefixed with "libintl_". This is >+ necessary, because some systems define gettext/textdomain/... in the C >+ library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). >+ If we used the unprefixed names, there would be cases where the >+ definition in the C library would override the one in the libintl.so >+ shared library. Recall that on ELF systems, the symbols are looked >+ up in the following order: >+ 1. in the executable, >+ 2. in the shared libraries specified on the link command line, in order, >+ 3. in the dependencies of the shared libraries specified on the link >+ command line, >+ 4. in the dlopen()ed shared libraries, in the order in which they were >+ dlopen()ed. >+ The definition in the C library would override the one in libintl.so if >+ either >+ * -lc is given on the link command line and -lintl isn't, or >+ * -lc is given on the link command line before -lintl, or >+ * libintl.so is a dependency of a dlopen()ed shared library but not >+ linked to the executable at link time. >+ Since Solaris gettext() behaves differently than GNU gettext(), this >+ would be unacceptable. >+ >+ The redirection happens by default through macros in C, so that &gettext >+ is independent of the compilation unit, but through inline functions in >+ C++, in order not to interfere with the name mangling of class fields or >+ class methods called 'gettext'. */ >+ >+/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. >+ If he doesn't, we choose the method. A third possible method is >+ _INTL_REDIRECT_ASM, supported only by GCC. */ >+#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) >+# if __GNUC__ >= 2 && (defined __STDC__ || defined __cplusplus) >+# define _INTL_REDIRECT_ASM >+# else >+# ifdef __cplusplus >+# define _INTL_REDIRECT_INLINE >+# else >+# define _INTL_REDIRECT_MACROS >+# endif >+# endif >+#endif >+/* Auxiliary macros. */ >+#ifdef _INTL_REDIRECT_ASM >+# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) >+# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring >+# define _INTL_STRINGIFY(prefix) #prefix >+#else >+# define _INTL_ASM(cname) >+#endif >+ >+/* Look up MSGID in the current default message catalog for the current >+ LC_MESSAGES locale. If not found, returns MSGID itself (the default >+ text). */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_gettext (const char *__msgid); >+static inline char *gettext (const char *__msgid) >+{ >+ return libintl_gettext (__msgid); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define gettext libintl_gettext >+#endif >+extern char *gettext _INTL_PARAMS ((const char *__msgid)) >+ _INTL_ASM (libintl_gettext); >+#endif >+ >+/* Look up MSGID in the DOMAINNAME message catalog for the current >+ LC_MESSAGES locale. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_dgettext (const char *__domainname, const char *__msgid); >+static inline char *dgettext (const char *__domainname, const char *__msgid) >+{ >+ return libintl_dgettext (__domainname, __msgid); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define dgettext libintl_dgettext >+#endif >+extern char *dgettext _INTL_PARAMS ((const char *__domainname, >+ const char *__msgid)) >+ _INTL_ASM (libintl_dgettext); >+#endif >+ >+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY >+ locale. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, >+ int __category); >+static inline char *dcgettext (const char *__domainname, const char *__msgid, >+ int __category) >+{ >+ return libintl_dcgettext (__domainname, __msgid, __category); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define dcgettext libintl_dcgettext >+#endif >+extern char *dcgettext _INTL_PARAMS ((const char *__domainname, >+ const char *__msgid, >+ int __category)) >+ _INTL_ASM (libintl_dcgettext); >+#endif >+ >+ >+/* Similar to `gettext' but select the plural form corresponding to the >+ number N. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, >+ unsigned long int __n); >+static inline char *ngettext (const char *__msgid1, const char *__msgid2, >+ unsigned long int __n) >+{ >+ return libintl_ngettext (__msgid1, __msgid2, __n); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define ngettext libintl_ngettext >+#endif >+extern char *ngettext _INTL_PARAMS ((const char *__msgid1, >+ const char *__msgid2, >+ unsigned long int __n)) >+ _INTL_ASM (libintl_ngettext); >+#endif >+ >+/* Similar to `dgettext' but select the plural form corresponding to the >+ number N. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, >+ const char *__msgid2, unsigned long int __n); >+static inline char *dngettext (const char *__domainname, const char *__msgid1, >+ const char *__msgid2, unsigned long int __n) >+{ >+ return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define dngettext libintl_dngettext >+#endif >+extern char *dngettext _INTL_PARAMS ((const char *__domainname, >+ const char *__msgid1, >+ const char *__msgid2, >+ unsigned long int __n)) >+ _INTL_ASM (libintl_dngettext); >+#endif >+ >+/* Similar to `dcgettext' but select the plural form corresponding to the >+ number N. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_dcngettext (const char *__domainname, >+ const char *__msgid1, const char *__msgid2, >+ unsigned long int __n, int __category); >+static inline char *dcngettext (const char *__domainname, >+ const char *__msgid1, const char *__msgid2, >+ unsigned long int __n, int __category) >+{ >+ return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define dcngettext libintl_dcngettext >+#endif >+extern char *dcngettext _INTL_PARAMS ((const char *__domainname, >+ const char *__msgid1, >+ const char *__msgid2, >+ unsigned long int __n, >+ int __category)) >+ _INTL_ASM (libintl_dcngettext); >+#endif >+ >+ >+/* Set the current default message catalog to DOMAINNAME. >+ If DOMAINNAME is null, return the current default. >+ If DOMAINNAME is "", reset to the default of "messages". */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_textdomain (const char *__domainname); >+static inline char *textdomain (const char *__domainname) >+{ >+ return libintl_textdomain (__domainname); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define textdomain libintl_textdomain >+#endif >+extern char *textdomain _INTL_PARAMS ((const char *__domainname)) >+ _INTL_ASM (libintl_textdomain); >+#endif >+ >+/* Specify that the DOMAINNAME message catalog will be found >+ in DIRNAME rather than in the system locale data base. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_bindtextdomain (const char *__domainname, >+ const char *__dirname); >+static inline char *bindtextdomain (const char *__domainname, >+ const char *__dirname) >+{ >+ return libintl_bindtextdomain (__domainname, __dirname); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define bindtextdomain libintl_bindtextdomain >+#endif >+extern char *bindtextdomain _INTL_PARAMS ((const char *__domainname, >+ const char *__dirname)) >+ _INTL_ASM (libintl_bindtextdomain); >+#endif >+ >+/* Specify the character encoding in which the messages from the >+ DOMAINNAME message catalog will be returned. */ >+#ifdef _INTL_REDIRECT_INLINE >+extern char *libintl_bind_textdomain_codeset (const char *__domainname, >+ const char *__codeset); >+static inline char *bind_textdomain_codeset (const char *__domainname, >+ const char *__codeset) >+{ >+ return libintl_bind_textdomain_codeset (__domainname, __codeset); >+} >+#else >+#ifdef _INTL_REDIRECT_MACROS >+# define bind_textdomain_codeset libintl_bind_textdomain_codeset >+#endif >+extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname, >+ const char *__codeset)) >+ _INTL_ASM (libintl_bind_textdomain_codeset); >+#endif >+ >+ >+#ifdef __cplusplus >+} >+#endif >+ >+#endif /* libintl.h */ >diff -Naupr hercules-3.05/intl/loadinfo.h hercules-20070717/intl/loadinfo.h >--- hercules-3.05/intl/loadinfo.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/loadinfo.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,156 @@ >+/* Copyright (C) 1996-1999, 2000-2002 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifndef _LOADINFO_H >+#define _LOADINFO_H 1 >+ >+/* Declarations of locale dependent catalog lookup functions. >+ Implemented in >+ >+ localealias.c Possibly replace a locale name by another. >+ explodename.c Split a locale name into its various fields. >+ l10nflist.c Generate a list of filenames of possible message catalogs. >+ finddomain.c Find and open the relevant message catalogs. >+ >+ The main function _nl_find_domain() in finddomain.c is declared >+ in gettextP.h. >+ */ >+ >+#ifndef PARAMS >+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES >+# define PARAMS(args) args >+# else >+# define PARAMS(args) () >+# endif >+#endif >+ >+#ifndef internal_function >+# define internal_function >+#endif >+ >+/* Tell the compiler when a conditional or integer expression is >+ almost always true or almost always false. */ >+#ifndef HAVE_BUILTIN_EXPECT >+# define __builtin_expect(expr, val) (expr) >+#endif >+ >+/* Separator in PATH like lists of pathnames. */ >+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ >+ /* Win32, OS/2, DOS */ >+# define PATH_SEPARATOR ';' >+#else >+ /* Unix */ >+# define PATH_SEPARATOR ':' >+#endif >+ >+/* Encoding of locale name parts. */ >+#define CEN_REVISION 1 >+#define CEN_SPONSOR 2 >+#define CEN_SPECIAL 4 >+#define XPG_NORM_CODESET 8 >+#define XPG_CODESET 16 >+#define TERRITORY 32 >+#define CEN_AUDIENCE 64 >+#define XPG_MODIFIER 128 >+ >+#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) >+#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) >+ >+ >+struct loaded_l10nfile >+{ >+ const char *filename; >+ int decided; >+ >+ const void *data; >+ >+ struct loaded_l10nfile *next; >+ struct loaded_l10nfile *successor[1]; >+}; >+ >+ >+/* Normalize codeset name. There is no standard for the codeset >+ names. Normalization allows the user to use any of the common >+ names. The return value is dynamically allocated and has to be >+ freed by the caller. */ >+extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, >+ size_t name_len)); >+ >+/* Lookup a locale dependent file. >+ *L10NFILE_LIST denotes a pool of lookup results of locale dependent >+ files of the same kind, sorted in decreasing order of ->filename. >+ DIRLIST and DIRLIST_LEN are an argz list of directories in which to >+ look, containing at least one directory (i.e. DIRLIST_LEN > 0). >+ MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER, >+ SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as >+ produced by _nl_explode_name(). FILENAME is the filename suffix. >+ The return value is the lookup result, either found in *L10NFILE_LIST, >+ or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. >+ If the return value is non-NULL, it is added to *L10NFILE_LIST, and >+ its ->next field denotes the chaining inside *L10NFILE_LIST, and >+ furthermore its ->successor[] field contains a list of other lookup >+ results from which this lookup result inherits. */ >+extern struct loaded_l10nfile * >+_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, >+ const char *dirlist, size_t dirlist_len, int mask, >+ const char *language, const char *territory, >+ const char *codeset, >+ const char *normalized_codeset, >+ const char *modifier, const char *special, >+ const char *sponsor, const char *revision, >+ const char *filename, int do_allocate)); >+ >+/* Lookup the real locale name for a locale alias NAME, or NULL if >+ NAME is not a locale alias (but possibly a real locale name). >+ The return value is statically allocated and must not be freed. */ >+extern const char *_nl_expand_alias PARAMS ((const char *name)); >+ >+/* Split a locale name NAME into its pieces: language, modifier, >+ territory, codeset, special, sponsor, revision. >+ NAME gets destructively modified: NUL bytes are inserted here and >+ there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, >+ *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a >+ pointer into the old NAME string, or NULL. *NORMALIZED_CODESET >+ gets assigned the expanded *CODESET, if it is different from *CODESET; >+ this one is dynamically allocated and has to be freed by the caller. >+ The return value is a bitmask, where each bit corresponds to one >+ filled-in value: >+ XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER, >+ TERRITORY for *TERRITORY, >+ XPG_CODESET for *CODESET, >+ XPG_NORM_CODESET for *NORMALIZED_CODESET, >+ CEN_SPECIAL for *SPECIAL, >+ CEN_SPONSOR for *SPONSOR, >+ CEN_REVISION for *REVISION. >+ */ >+extern int _nl_explode_name PARAMS ((char *name, const char **language, >+ const char **modifier, >+ const char **territory, >+ const char **codeset, >+ const char **normalized_codeset, >+ const char **special, >+ const char **sponsor, >+ const char **revision)); >+ >+/* Split a locale name NAME into a leading language part and all the >+ rest. Return a pointer to the first character after the language, >+ i.e. to the first byte of the rest. */ >+extern char *_nl_find_language PARAMS ((const char *name)); >+ >+#endif /* loadinfo.h */ >diff -Naupr hercules-3.05/intl/loadmsgcat.c hercules-20070717/intl/loadmsgcat.c >--- hercules-3.05/intl/loadmsgcat.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/loadmsgcat.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,1318 @@ >+/* Load needed message catalogs. >+ Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* Tell glibc's <string.h> to provide a prototype for mempcpy(). >+ This must come before <config.h> because <config.h> may include >+ <features.h>, and once <features.h> has been included, it's too late. */ >+#ifndef _GNU_SOURCE >+# define _GNU_SOURCE 1 >+#endif >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <ctype.h> >+#include <errno.h> >+#include <fcntl.h> >+#include <sys/types.h> >+#include <sys/stat.h> >+ >+typedef unsigned long long uintmax_t; // fishfix >+ >+#ifdef __GNUC__ >+# define alloca __builtin_alloca >+# define HAVE_ALLOCA 1 >+#else >+# if defined HAVE_ALLOCA_H || defined _LIBC >+# include <alloca.h> >+# else >+# ifdef _AIX >+ #pragma alloca >+# else >+# ifndef alloca >+char *alloca (); >+# endif >+# endif >+# endif >+#endif >+ >+#include <stdlib.h> >+#include <string.h> >+ >+#if defined HAVE_UNISTD_H || defined _LIBC >+# include <unistd.h> >+#endif >+ >+#ifdef _LIBC >+# include <langinfo.h> >+# include <locale.h> >+#endif >+ >+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ >+ || (defined _LIBC && defined _POSIX_MAPPED_FILES) >+# include <sys/mman.h> >+# undef HAVE_MMAP >+# define HAVE_MMAP 1 >+#else >+# undef HAVE_MMAP >+#endif >+ >+#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC >+# include <stdint.h> >+#endif >+#if defined HAVE_INTTYPES_H || defined _LIBC >+# include <inttypes.h> >+#endif >+ >+#include "gmo.h" >+#include "gettextP.h" >+#include "hash-string.h" >+#include "plural-exp.h" >+ >+#ifdef _LIBC >+# include "../locale/localeinfo.h" >+#endif >+ >+/* Provide fallback values for macros that ought to be defined in <inttypes.h>. >+ Note that our fallback values need not be literal strings, because we don't >+ use them with preprocessor string concatenation. */ >+#if !defined PRId8 || PRI_MACROS_BROKEN >+# undef PRId8 >+# define PRId8 "d" >+#endif >+#if !defined PRIi8 || PRI_MACROS_BROKEN >+# undef PRIi8 >+# define PRIi8 "i" >+#endif >+#if !defined PRIo8 || PRI_MACROS_BROKEN >+# undef PRIo8 >+# define PRIo8 "o" >+#endif >+#if !defined PRIu8 || PRI_MACROS_BROKEN >+# undef PRIu8 >+# define PRIu8 "u" >+#endif >+#if !defined PRIx8 || PRI_MACROS_BROKEN >+# undef PRIx8 >+# define PRIx8 "x" >+#endif >+#if !defined PRIX8 || PRI_MACROS_BROKEN >+# undef PRIX8 >+# define PRIX8 "X" >+#endif >+#if !defined PRId16 || PRI_MACROS_BROKEN >+# undef PRId16 >+# define PRId16 "d" >+#endif >+#if !defined PRIi16 || PRI_MACROS_BROKEN >+# undef PRIi16 >+# define PRIi16 "i" >+#endif >+#if !defined PRIo16 || PRI_MACROS_BROKEN >+# undef PRIo16 >+# define PRIo16 "o" >+#endif >+#if !defined PRIu16 || PRI_MACROS_BROKEN >+# undef PRIu16 >+# define PRIu16 "u" >+#endif >+#if !defined PRIx16 || PRI_MACROS_BROKEN >+# undef PRIx16 >+# define PRIx16 "x" >+#endif >+#if !defined PRIX16 || PRI_MACROS_BROKEN >+# undef PRIX16 >+# define PRIX16 "X" >+#endif >+#if !defined PRId32 || PRI_MACROS_BROKEN >+# undef PRId32 >+# define PRId32 "d" >+#endif >+#if !defined PRIi32 || PRI_MACROS_BROKEN >+# undef PRIi32 >+# define PRIi32 "i" >+#endif >+#if !defined PRIo32 || PRI_MACROS_BROKEN >+# undef PRIo32 >+# define PRIo32 "o" >+#endif >+#if !defined PRIu32 || PRI_MACROS_BROKEN >+# undef PRIu32 >+# define PRIu32 "u" >+#endif >+#if !defined PRIx32 || PRI_MACROS_BROKEN >+# undef PRIx32 >+# define PRIx32 "x" >+#endif >+#if !defined PRIX32 || PRI_MACROS_BROKEN >+# undef PRIX32 >+# define PRIX32 "X" >+#endif >+#if !defined PRId64 || PRI_MACROS_BROKEN >+# undef PRId64 >+# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") >+#endif >+#if !defined PRIi64 || PRI_MACROS_BROKEN >+# undef PRIi64 >+# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") >+#endif >+#if !defined PRIo64 || PRI_MACROS_BROKEN >+# undef PRIo64 >+# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") >+#endif >+#if !defined PRIu64 || PRI_MACROS_BROKEN >+# undef PRIu64 >+# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") >+#endif >+#if !defined PRIx64 || PRI_MACROS_BROKEN >+# undef PRIx64 >+# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") >+#endif >+#if !defined PRIX64 || PRI_MACROS_BROKEN >+# undef PRIX64 >+# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") >+#endif >+#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN >+# undef PRIdLEAST8 >+# define PRIdLEAST8 "d" >+#endif >+#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN >+# undef PRIiLEAST8 >+# define PRIiLEAST8 "i" >+#endif >+#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN >+# undef PRIoLEAST8 >+# define PRIoLEAST8 "o" >+#endif >+#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN >+# undef PRIuLEAST8 >+# define PRIuLEAST8 "u" >+#endif >+#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN >+# undef PRIxLEAST8 >+# define PRIxLEAST8 "x" >+#endif >+#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN >+# undef PRIXLEAST8 >+# define PRIXLEAST8 "X" >+#endif >+#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN >+# undef PRIdLEAST16 >+# define PRIdLEAST16 "d" >+#endif >+#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN >+# undef PRIiLEAST16 >+# define PRIiLEAST16 "i" >+#endif >+#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN >+# undef PRIoLEAST16 >+# define PRIoLEAST16 "o" >+#endif >+#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN >+# undef PRIuLEAST16 >+# define PRIuLEAST16 "u" >+#endif >+#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN >+# undef PRIxLEAST16 >+# define PRIxLEAST16 "x" >+#endif >+#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN >+# undef PRIXLEAST16 >+# define PRIXLEAST16 "X" >+#endif >+#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN >+# undef PRIdLEAST32 >+# define PRIdLEAST32 "d" >+#endif >+#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN >+# undef PRIiLEAST32 >+# define PRIiLEAST32 "i" >+#endif >+#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN >+# undef PRIoLEAST32 >+# define PRIoLEAST32 "o" >+#endif >+#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN >+# undef PRIuLEAST32 >+# define PRIuLEAST32 "u" >+#endif >+#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN >+# undef PRIxLEAST32 >+# define PRIxLEAST32 "x" >+#endif >+#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN >+# undef PRIXLEAST32 >+# define PRIXLEAST32 "X" >+#endif >+#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN >+# undef PRIdLEAST64 >+# define PRIdLEAST64 PRId64 >+#endif >+#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN >+# undef PRIiLEAST64 >+# define PRIiLEAST64 PRIi64 >+#endif >+#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN >+# undef PRIoLEAST64 >+# define PRIoLEAST64 PRIo64 >+#endif >+#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN >+# undef PRIuLEAST64 >+# define PRIuLEAST64 PRIu64 >+#endif >+#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN >+# undef PRIxLEAST64 >+# define PRIxLEAST64 PRIx64 >+#endif >+#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN >+# undef PRIXLEAST64 >+# define PRIXLEAST64 PRIX64 >+#endif >+#if !defined PRIdFAST8 || PRI_MACROS_BROKEN >+# undef PRIdFAST8 >+# define PRIdFAST8 "d" >+#endif >+#if !defined PRIiFAST8 || PRI_MACROS_BROKEN >+# undef PRIiFAST8 >+# define PRIiFAST8 "i" >+#endif >+#if !defined PRIoFAST8 || PRI_MACROS_BROKEN >+# undef PRIoFAST8 >+# define PRIoFAST8 "o" >+#endif >+#if !defined PRIuFAST8 || PRI_MACROS_BROKEN >+# undef PRIuFAST8 >+# define PRIuFAST8 "u" >+#endif >+#if !defined PRIxFAST8 || PRI_MACROS_BROKEN >+# undef PRIxFAST8 >+# define PRIxFAST8 "x" >+#endif >+#if !defined PRIXFAST8 || PRI_MACROS_BROKEN >+# undef PRIXFAST8 >+# define PRIXFAST8 "X" >+#endif >+#if !defined PRIdFAST16 || PRI_MACROS_BROKEN >+# undef PRIdFAST16 >+# define PRIdFAST16 "d" >+#endif >+#if !defined PRIiFAST16 || PRI_MACROS_BROKEN >+# undef PRIiFAST16 >+# define PRIiFAST16 "i" >+#endif >+#if !defined PRIoFAST16 || PRI_MACROS_BROKEN >+# undef PRIoFAST16 >+# define PRIoFAST16 "o" >+#endif >+#if !defined PRIuFAST16 || PRI_MACROS_BROKEN >+# undef PRIuFAST16 >+# define PRIuFAST16 "u" >+#endif >+#if !defined PRIxFAST16 || PRI_MACROS_BROKEN >+# undef PRIxFAST16 >+# define PRIxFAST16 "x" >+#endif >+#if !defined PRIXFAST16 || PRI_MACROS_BROKEN >+# undef PRIXFAST16 >+# define PRIXFAST16 "X" >+#endif >+#if !defined PRIdFAST32 || PRI_MACROS_BROKEN >+# undef PRIdFAST32 >+# define PRIdFAST32 "d" >+#endif >+#if !defined PRIiFAST32 || PRI_MACROS_BROKEN >+# undef PRIiFAST32 >+# define PRIiFAST32 "i" >+#endif >+#if !defined PRIoFAST32 || PRI_MACROS_BROKEN >+# undef PRIoFAST32 >+# define PRIoFAST32 "o" >+#endif >+#if !defined PRIuFAST32 || PRI_MACROS_BROKEN >+# undef PRIuFAST32 >+# define PRIuFAST32 "u" >+#endif >+#if !defined PRIxFAST32 || PRI_MACROS_BROKEN >+# undef PRIxFAST32 >+# define PRIxFAST32 "x" >+#endif >+#if !defined PRIXFAST32 || PRI_MACROS_BROKEN >+# undef PRIXFAST32 >+# define PRIXFAST32 "X" >+#endif >+#if !defined PRIdFAST64 || PRI_MACROS_BROKEN >+# undef PRIdFAST64 >+# define PRIdFAST64 PRId64 >+#endif >+#if !defined PRIiFAST64 || PRI_MACROS_BROKEN >+# undef PRIiFAST64 >+# define PRIiFAST64 PRIi64 >+#endif >+#if !defined PRIoFAST64 || PRI_MACROS_BROKEN >+# undef PRIoFAST64 >+# define PRIoFAST64 PRIo64 >+#endif >+#if !defined PRIuFAST64 || PRI_MACROS_BROKEN >+# undef PRIuFAST64 >+# define PRIuFAST64 PRIu64 >+#endif >+#if !defined PRIxFAST64 || PRI_MACROS_BROKEN >+# undef PRIxFAST64 >+# define PRIxFAST64 PRIx64 >+#endif >+#if !defined PRIXFAST64 || PRI_MACROS_BROKEN >+# undef PRIXFAST64 >+# define PRIXFAST64 PRIX64 >+#endif >+#if !defined PRIdMAX || PRI_MACROS_BROKEN >+# undef PRIdMAX >+# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") >+#endif >+#if !defined PRIiMAX || PRI_MACROS_BROKEN >+# undef PRIiMAX >+# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") >+#endif >+#if !defined PRIoMAX || PRI_MACROS_BROKEN >+# undef PRIoMAX >+# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") >+#endif >+#if !defined PRIuMAX || PRI_MACROS_BROKEN >+# undef PRIuMAX >+# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") >+#endif >+#if !defined PRIxMAX || PRI_MACROS_BROKEN >+# undef PRIxMAX >+# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") >+#endif >+#if !defined PRIXMAX || PRI_MACROS_BROKEN >+# undef PRIXMAX >+# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") >+#endif >+#if !defined PRIdPTR || PRI_MACROS_BROKEN >+# undef PRIdPTR >+# define PRIdPTR \ >+ (sizeof (void *) == sizeof (long) ? "ld" : \ >+ sizeof (void *) == sizeof (int) ? "d" : \ >+ "lld") >+#endif >+#if !defined PRIiPTR || PRI_MACROS_BROKEN >+# undef PRIiPTR >+# define PRIiPTR \ >+ (sizeof (void *) == sizeof (long) ? "li" : \ >+ sizeof (void *) == sizeof (int) ? "i" : \ >+ "lli") >+#endif >+#if !defined PRIoPTR || PRI_MACROS_BROKEN >+# undef PRIoPTR >+# define PRIoPTR \ >+ (sizeof (void *) == sizeof (long) ? "lo" : \ >+ sizeof (void *) == sizeof (int) ? "o" : \ >+ "llo") >+#endif >+#if !defined PRIuPTR || PRI_MACROS_BROKEN >+# undef PRIuPTR >+# define PRIuPTR \ >+ (sizeof (void *) == sizeof (long) ? "lu" : \ >+ sizeof (void *) == sizeof (int) ? "u" : \ >+ "llu") >+#endif >+#if !defined PRIxPTR || PRI_MACROS_BROKEN >+# undef PRIxPTR >+# define PRIxPTR \ >+ (sizeof (void *) == sizeof (long) ? "lx" : \ >+ sizeof (void *) == sizeof (int) ? "x" : \ >+ "llx") >+#endif >+#if !defined PRIXPTR || PRI_MACROS_BROKEN >+# undef PRIXPTR >+# define PRIXPTR \ >+ (sizeof (void *) == sizeof (long) ? "lX" : \ >+ sizeof (void *) == sizeof (int) ? "X" : \ >+ "llX") >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+#ifdef _LIBC >+/* Rename the non ISO C functions. This is required by the standard >+ because some ISO C functions will require linking with this object >+ file and the name space must not be polluted. */ >+# define open __open >+# define close __close >+# define read __read >+# define mmap __mmap >+# define munmap __munmap >+#endif >+ >+/* For those losing systems which don't have `alloca' we have to add >+ some additional code emulating it. */ >+#ifdef HAVE_ALLOCA >+# define freea(p) /* nothing */ >+#else >+# define alloca(n) malloc (n) >+# define freea(p) free (p) >+#endif >+ >+/* For systems that distinguish between text and binary I/O. >+ O_BINARY is usually declared in <fcntl.h>. */ >+#if !defined O_BINARY && defined _O_BINARY >+ /* For MSC-compatible compilers. */ >+# define O_BINARY _O_BINARY >+# define O_TEXT _O_TEXT >+#endif >+#ifdef __BEOS__ >+ /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ >+# undef O_BINARY >+# undef O_TEXT >+#endif >+/* On reasonable systems, binary I/O is the default. */ >+#ifndef O_BINARY >+# define O_BINARY 0 >+#endif >+ >+ >+/* Prototypes for local functions. Needed to ensure compiler checking of >+ function argument counts despite of K&R C function definition syntax. */ >+static const char *get_sysdep_segment_value PARAMS ((const char *name)); >+ >+ >+/* We need a sign, whether a new catalog was loaded, which can be associated >+ with all translations. This is important if the translations are >+ cached by one of GCC's features. */ >+int _nl_msg_cat_cntr; >+ >+ >+/* Expand a system dependent string segment. Return NULL if unsupported. */ >+static const char * >+get_sysdep_segment_value (name) >+ const char *name; >+{ >+ /* Test for an ISO C 99 section 7.8.1 format string directive. >+ Syntax: >+ P R I { d | i | o | u | x | X } >+ { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ >+ /* We don't use a table of 14 times 6 'const char *' strings here, because >+ data relocations cost startup time. */ >+ if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') >+ { >+ if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' >+ || name[3] == 'x' || name[3] == 'X') >+ { >+ if (name[4] == '8' && name[5] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRId8; >+ if (name[3] == 'i') >+ return PRIi8; >+ if (name[3] == 'o') >+ return PRIo8; >+ if (name[3] == 'u') >+ return PRIu8; >+ if (name[3] == 'x') >+ return PRIx8; >+ if (name[3] == 'X') >+ return PRIX8; >+ abort (); >+ } >+ if (name[4] == '1' && name[5] == '6' && name[6] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRId16; >+ if (name[3] == 'i') >+ return PRIi16; >+ if (name[3] == 'o') >+ return PRIo16; >+ if (name[3] == 'u') >+ return PRIu16; >+ if (name[3] == 'x') >+ return PRIx16; >+ if (name[3] == 'X') >+ return PRIX16; >+ abort (); >+ } >+ if (name[4] == '3' && name[5] == '2' && name[6] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRId32; >+ if (name[3] == 'i') >+ return PRIi32; >+ if (name[3] == 'o') >+ return PRIo32; >+ if (name[3] == 'u') >+ return PRIu32; >+ if (name[3] == 'x') >+ return PRIx32; >+ if (name[3] == 'X') >+ return PRIX32; >+ abort (); >+ } >+ if (name[4] == '6' && name[5] == '4' && name[6] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRId64; >+ if (name[3] == 'i') >+ return PRIi64; >+ if (name[3] == 'o') >+ return PRIo64; >+ if (name[3] == 'u') >+ return PRIu64; >+ if (name[3] == 'x') >+ return PRIx64; >+ if (name[3] == 'X') >+ return PRIX64; >+ abort (); >+ } >+ if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' >+ && name[7] == 'S' && name[8] == 'T') >+ { >+ if (name[9] == '8' && name[10] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdLEAST8; >+ if (name[3] == 'i') >+ return PRIiLEAST8; >+ if (name[3] == 'o') >+ return PRIoLEAST8; >+ if (name[3] == 'u') >+ return PRIuLEAST8; >+ if (name[3] == 'x') >+ return PRIxLEAST8; >+ if (name[3] == 'X') >+ return PRIXLEAST8; >+ abort (); >+ } >+ if (name[9] == '1' && name[10] == '6' && name[11] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdLEAST16; >+ if (name[3] == 'i') >+ return PRIiLEAST16; >+ if (name[3] == 'o') >+ return PRIoLEAST16; >+ if (name[3] == 'u') >+ return PRIuLEAST16; >+ if (name[3] == 'x') >+ return PRIxLEAST16; >+ if (name[3] == 'X') >+ return PRIXLEAST16; >+ abort (); >+ } >+ if (name[9] == '3' && name[10] == '2' && name[11] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdLEAST32; >+ if (name[3] == 'i') >+ return PRIiLEAST32; >+ if (name[3] == 'o') >+ return PRIoLEAST32; >+ if (name[3] == 'u') >+ return PRIuLEAST32; >+ if (name[3] == 'x') >+ return PRIxLEAST32; >+ if (name[3] == 'X') >+ return PRIXLEAST32; >+ abort (); >+ } >+ if (name[9] == '6' && name[10] == '4' && name[11] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdLEAST64; >+ if (name[3] == 'i') >+ return PRIiLEAST64; >+ if (name[3] == 'o') >+ return PRIoLEAST64; >+ if (name[3] == 'u') >+ return PRIuLEAST64; >+ if (name[3] == 'x') >+ return PRIxLEAST64; >+ if (name[3] == 'X') >+ return PRIXLEAST64; >+ abort (); >+ } >+ } >+ if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' >+ && name[7] == 'T') >+ { >+ if (name[8] == '8' && name[9] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdFAST8; >+ if (name[3] == 'i') >+ return PRIiFAST8; >+ if (name[3] == 'o') >+ return PRIoFAST8; >+ if (name[3] == 'u') >+ return PRIuFAST8; >+ if (name[3] == 'x') >+ return PRIxFAST8; >+ if (name[3] == 'X') >+ return PRIXFAST8; >+ abort (); >+ } >+ if (name[8] == '1' && name[9] == '6' && name[10] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdFAST16; >+ if (name[3] == 'i') >+ return PRIiFAST16; >+ if (name[3] == 'o') >+ return PRIoFAST16; >+ if (name[3] == 'u') >+ return PRIuFAST16; >+ if (name[3] == 'x') >+ return PRIxFAST16; >+ if (name[3] == 'X') >+ return PRIXFAST16; >+ abort (); >+ } >+ if (name[8] == '3' && name[9] == '2' && name[10] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdFAST32; >+ if (name[3] == 'i') >+ return PRIiFAST32; >+ if (name[3] == 'o') >+ return PRIoFAST32; >+ if (name[3] == 'u') >+ return PRIuFAST32; >+ if (name[3] == 'x') >+ return PRIxFAST32; >+ if (name[3] == 'X') >+ return PRIXFAST32; >+ abort (); >+ } >+ if (name[8] == '6' && name[9] == '4' && name[10] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdFAST64; >+ if (name[3] == 'i') >+ return PRIiFAST64; >+ if (name[3] == 'o') >+ return PRIoFAST64; >+ if (name[3] == 'u') >+ return PRIuFAST64; >+ if (name[3] == 'x') >+ return PRIxFAST64; >+ if (name[3] == 'X') >+ return PRIXFAST64; >+ abort (); >+ } >+ } >+ if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' >+ && name[7] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdMAX; >+ if (name[3] == 'i') >+ return PRIiMAX; >+ if (name[3] == 'o') >+ return PRIoMAX; >+ if (name[3] == 'u') >+ return PRIuMAX; >+ if (name[3] == 'x') >+ return PRIxMAX; >+ if (name[3] == 'X') >+ return PRIXMAX; >+ abort (); >+ } >+ if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' >+ && name[7] == '\0') >+ { >+ if (name[3] == 'd') >+ return PRIdPTR; >+ if (name[3] == 'i') >+ return PRIiPTR; >+ if (name[3] == 'o') >+ return PRIoPTR; >+ if (name[3] == 'u') >+ return PRIuPTR; >+ if (name[3] == 'x') >+ return PRIxPTR; >+ if (name[3] == 'X') >+ return PRIXPTR; >+ abort (); >+ } >+ } >+ } >+ /* Other system dependent strings are not valid. */ >+ return NULL; >+} >+ >+/* Initialize the codeset dependent parts of an opened message catalog. >+ Return the header entry. */ >+const char * >+internal_function >+_nl_init_domain_conv (domain_file, domain, domainbinding) >+ struct loaded_l10nfile *domain_file; >+ struct loaded_domain *domain; >+ struct binding *domainbinding; >+{ >+ /* Find out about the character set the file is encoded with. >+ This can be found (in textual form) in the entry "". If this >+ entry does not exist or if this does not contain the `charset=' >+ information, we will assume the charset matches the one the >+ current locale and we don't have to perform any conversion. */ >+ char *nullentry; >+ size_t nullentrylen; >+ >+ /* Preinitialize fields, to avoid recursion during _nl_find_msg. */ >+ domain->codeset_cntr = >+ (domainbinding != NULL ? domainbinding->codeset_cntr : 0); >+#ifdef _LIBC >+ domain->conv = (__gconv_t) -1; >+#else >+# if HAVE_ICONV >+ domain->conv = (iconv_t) -1; >+# endif >+#endif >+ domain->conv_tab = NULL; >+ >+ /* Get the header entry. */ >+ nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); >+ >+ if (nullentry != NULL) >+ { >+#if defined _LIBC || HAVE_ICONV >+ const char *charsetstr; >+ >+ charsetstr = strstr (nullentry, "charset="); >+ if (charsetstr != NULL) >+ { >+ size_t len; >+ char *charset; >+ const char *outcharset; >+ >+ charsetstr += strlen ("charset="); >+ len = strcspn (charsetstr, " \t\n"); >+ >+ charset = (char *) alloca (len + 1); >+# if defined _LIBC || HAVE_MEMPCPY >+ *((char *) mempcpy (charset, charsetstr, len)) = '\0'; >+# else >+ memcpy (charset, charsetstr, len); >+ charset[len] = '\0'; >+# endif >+ >+ /* The output charset should normally be determined by the >+ locale. But sometimes the locale is not used or not correctly >+ set up, so we provide a possibility for the user to override >+ this. Moreover, the value specified through >+ bind_textdomain_codeset overrides both. */ >+ if (domainbinding != NULL && domainbinding->codeset != NULL) >+ outcharset = domainbinding->codeset; >+ else >+ { >+ outcharset = getenv ("OUTPUT_CHARSET"); >+ if (outcharset == NULL || outcharset[0] == '\0') >+ { >+# ifdef _LIBC >+ outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string; >+# else >+# if HAVE_ICONV >+ extern const char *locale_charset PARAMS ((void)); >+ outcharset = locale_charset (); >+# endif >+# endif >+ } >+ } >+ >+# ifdef _LIBC >+ /* We always want to use transliteration. */ >+ outcharset = norm_add_slashes (outcharset, "TRANSLIT"); >+ charset = norm_add_slashes (charset, NULL); >+ if (__gconv_open (outcharset, charset, &domain->conv, >+ GCONV_AVOID_NOCONV) >+ != __GCONV_OK) >+ domain->conv = (__gconv_t) -1; >+# else >+# if HAVE_ICONV >+ /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, >+ we want to use transliteration. */ >+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ >+ || _LIBICONV_VERSION >= 0x0105 >+ if (strchr (outcharset, '/') == NULL) >+ { >+ char *tmp; >+ >+ len = strlen (outcharset); >+ tmp = (char *) alloca (len + 10 + 1); >+ memcpy (tmp, outcharset, len); >+ memcpy (tmp + len, "//TRANSLIT", 10 + 1); >+ outcharset = tmp; >+ >+ domain->conv = iconv_open (outcharset, charset); >+ >+ freea (outcharset); >+ } >+ else >+# endif >+ domain->conv = iconv_open (outcharset, charset); >+# endif >+# endif >+ >+ freea (charset); >+ } >+#endif /* _LIBC || HAVE_ICONV */ >+ } >+ >+ return nullentry; >+} >+ >+/* Frees the codeset dependent parts of an opened message catalog. */ >+void >+internal_function >+_nl_free_domain_conv (domain) >+ struct loaded_domain *domain; >+{ >+ if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) >+ free (domain->conv_tab); >+ >+#ifdef _LIBC >+ if (domain->conv != (__gconv_t) -1) >+ __gconv_close (domain->conv); >+#else >+# if HAVE_ICONV >+ if (domain->conv != (iconv_t) -1) >+ iconv_close (domain->conv); >+# endif >+#endif >+} >+ >+/* Load the message catalogs specified by FILENAME. If it is no valid >+ message catalog do nothing. */ >+void >+internal_function >+_nl_load_domain (domain_file, domainbinding) >+ struct loaded_l10nfile *domain_file; >+ struct binding *domainbinding; >+{ >+ int fd; >+ size_t size; >+#ifdef _LIBC >+ struct stat64 st; >+#else >+ struct stat st; >+#endif >+ struct mo_file_header *data = (struct mo_file_header *) -1; >+ int use_mmap = 0; >+ struct loaded_domain *domain; >+ int revision; >+ const char *nullentry; >+ >+ domain_file->decided = 1; >+ domain_file->data = NULL; >+ >+ /* Note that it would be useless to store domainbinding in domain_file >+ because domainbinding might be == NULL now but != NULL later (after >+ a call to bind_textdomain_codeset). */ >+ >+ /* If the record does not represent a valid locale the FILENAME >+ might be NULL. This can happen when according to the given >+ specification the locale file name is different for XPG and CEN >+ syntax. */ >+ if (domain_file->filename == NULL) >+ return; >+ >+ /* Try to open the addressed file. */ >+ fd = open (domain_file->filename, O_RDONLY | O_BINARY); >+ if (fd == -1) >+ return; >+ >+ /* We must know about the size of the file. */ >+ if ( >+#ifdef _LIBC >+ __builtin_expect (fstat64 (fd, &st) != 0, 0) >+#else >+ __builtin_expect (fstat (fd, &st) != 0, 0) >+#endif >+ || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) >+ || __builtin_expect (size < sizeof (struct mo_file_header), 0)) >+ { >+ /* Something went wrong. */ >+ close (fd); >+ return; >+ } >+ >+#ifdef HAVE_MMAP >+ /* Now we are ready to load the file. If mmap() is available we try >+ this first. If not available or it failed we try to load it. */ >+ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, >+ MAP_PRIVATE, fd, 0); >+ >+ if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) >+ { >+ /* mmap() call was successful. */ >+ close (fd); >+ use_mmap = 1; >+ } >+#endif >+ >+ /* If the data is not yet available (i.e. mmap'ed) we try to load >+ it manually. */ >+ if (data == (struct mo_file_header *) -1) >+ { >+ size_t to_read; >+ char *read_ptr; >+ >+ data = (struct mo_file_header *) malloc (size); >+ if (data == NULL) >+ return; >+ >+ to_read = size; >+ read_ptr = (char *) data; >+ do >+ { >+ long int nb = (long int) read (fd, read_ptr, to_read); >+ if (nb <= 0) >+ { >+#ifdef EINTR >+ if (nb == -1 && errno == EINTR) >+ continue; >+#endif >+ close (fd); >+ return; >+ } >+ read_ptr += nb; >+ to_read -= nb; >+ } >+ while (to_read > 0); >+ >+ close (fd); >+ } >+ >+ /* Using the magic number we can test whether it really is a message >+ catalog file. */ >+ if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, >+ 0)) >+ { >+ /* The magic number is wrong: not a message catalog file. */ >+#ifdef HAVE_MMAP >+ if (use_mmap) >+ munmap ((caddr_t) data, size); >+ else >+#endif >+ free (data); >+ return; >+ } >+ >+ domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); >+ if (domain == NULL) >+ return; >+ domain_file->data = domain; >+ >+ domain->data = (char *) data; >+ domain->use_mmap = use_mmap; >+ domain->mmap_size = size; >+ domain->must_swap = data->magic != _MAGIC; >+ domain->malloced = NULL; >+ >+ /* Fill in the information about the available tables. */ >+ revision = W (domain->must_swap, data->revision); >+ /* We support only the major revision 0. */ >+ switch (revision >> 16) >+ { >+ case 0: >+ domain->nstrings = W (domain->must_swap, data->nstrings); >+ domain->orig_tab = (const struct string_desc *) >+ ((char *) data + W (domain->must_swap, data->orig_tab_offset)); >+ domain->trans_tab = (const struct string_desc *) >+ ((char *) data + W (domain->must_swap, data->trans_tab_offset)); >+ domain->hash_size = W (domain->must_swap, data->hash_tab_size); >+ domain->hash_tab = >+ (domain->hash_size > 2 >+ ? (const nls_uint32 *) >+ ((char *) data + W (domain->must_swap, data->hash_tab_offset)) >+ : NULL); >+ domain->must_swap_hash_tab = domain->must_swap; >+ >+ /* Now dispatch on the minor revision. */ >+ switch (revision & 0xffff) >+ { >+ case 0: >+ domain->n_sysdep_strings = 0; >+ domain->orig_sysdep_tab = NULL; >+ domain->trans_sysdep_tab = NULL; >+ break; >+ case 1: >+ default: >+ { >+ nls_uint32 n_sysdep_strings; >+ >+ if (domain->hash_tab == NULL) >+ /* This is invalid. These minor revisions need a hash table. */ >+ goto invalid; >+ >+ n_sysdep_strings = >+ W (domain->must_swap, data->n_sysdep_strings); >+ if (n_sysdep_strings > 0) >+ { >+ nls_uint32 n_sysdep_segments; >+ const struct sysdep_segment *sysdep_segments; >+ const char **sysdep_segment_values; >+ const nls_uint32 *orig_sysdep_tab; >+ const nls_uint32 *trans_sysdep_tab; >+ size_t memneed; >+ char *mem; >+ struct sysdep_string_desc *inmem_orig_sysdep_tab; >+ struct sysdep_string_desc *inmem_trans_sysdep_tab; >+ nls_uint32 *inmem_hash_tab; >+ unsigned int i; >+ >+ /* Get the values of the system dependent segments. */ >+ n_sysdep_segments = >+ W (domain->must_swap, data->n_sysdep_segments); >+ sysdep_segments = (const struct sysdep_segment *) >+ ((char *) data >+ + W (domain->must_swap, data->sysdep_segments_offset)); >+ sysdep_segment_values = >+ alloca (n_sysdep_segments * sizeof (const char *)); >+ for (i = 0; i < n_sysdep_segments; i++) >+ { >+ const char *name = >+ (char *) data >+ + W (domain->must_swap, sysdep_segments[i].offset); >+ nls_uint32 namelen = >+ W (domain->must_swap, sysdep_segments[i].length); >+ >+ if (!(namelen > 0 && name[namelen - 1] == '\0')) >+ { >+ freea (sysdep_segment_values); >+ goto invalid; >+ } >+ >+ sysdep_segment_values[i] = get_sysdep_segment_value (name); >+ } >+ >+ orig_sysdep_tab = (const nls_uint32 *) >+ ((char *) data >+ + W (domain->must_swap, data->orig_sysdep_tab_offset)); >+ trans_sysdep_tab = (const nls_uint32 *) >+ ((char *) data >+ + W (domain->must_swap, data->trans_sysdep_tab_offset)); >+ >+ /* Compute the amount of additional memory needed for the >+ system dependent strings and the augmented hash table. */ >+ memneed = 2 * n_sysdep_strings >+ * sizeof (struct sysdep_string_desc) >+ + domain->hash_size * sizeof (nls_uint32); >+ for (i = 0; i < 2 * n_sysdep_strings; i++) >+ { >+ const struct sysdep_string *sysdep_string = >+ (const struct sysdep_string *) >+ ((char *) data >+ + W (domain->must_swap, >+ i < n_sysdep_strings >+ ? orig_sysdep_tab[i] >+ : trans_sysdep_tab[i - n_sysdep_strings])); >+ size_t need = 0; >+ const struct segment_pair *p = sysdep_string->segments; >+ >+ if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) >+ for (p = sysdep_string->segments;; p++) >+ { >+ nls_uint32 sysdepref; >+ >+ need += W (domain->must_swap, p->segsize); >+ >+ sysdepref = W (domain->must_swap, p->sysdepref); >+ if (sysdepref == SEGMENTS_END) >+ break; >+ >+ if (sysdepref >= n_sysdep_segments) >+ { >+ /* Invalid. */ >+ freea (sysdep_segment_values); >+ goto invalid; >+ } >+ >+ need += strlen (sysdep_segment_values[sysdepref]); >+ } >+ >+ memneed += need; >+ } >+ >+ /* Allocate additional memory. */ >+ mem = (char *) malloc (memneed); >+ if (mem == NULL) >+ goto invalid; >+ >+ domain->malloced = mem; >+ inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; >+ mem += n_sysdep_strings * sizeof (struct sysdep_string_desc); >+ inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; >+ mem += n_sysdep_strings * sizeof (struct sysdep_string_desc); >+ inmem_hash_tab = (nls_uint32 *) mem; >+ mem += domain->hash_size * sizeof (nls_uint32); >+ >+ /* Compute the system dependent strings. */ >+ for (i = 0; i < 2 * n_sysdep_strings; i++) >+ { >+ const struct sysdep_string *sysdep_string = >+ (const struct sysdep_string *) >+ ((char *) data >+ + W (domain->must_swap, >+ i < n_sysdep_strings >+ ? orig_sysdep_tab[i] >+ : trans_sysdep_tab[i - n_sysdep_strings])); >+ const char *static_segments = >+ (char *) data >+ + W (domain->must_swap, sysdep_string->offset); >+ const struct segment_pair *p = sysdep_string->segments; >+ >+ /* Concatenate the segments, and fill >+ inmem_orig_sysdep_tab[i] (for i < n_sysdep_strings) and >+ inmem_trans_sysdep_tab[i-n_sysdep_strings] (for >+ i >= n_sysdep_strings). */ >+ >+ if (W (domain->must_swap, p->sysdepref) == SEGMENTS_END) >+ { >+ /* Only one static segment. */ >+ inmem_orig_sysdep_tab[i].length = >+ W (domain->must_swap, p->segsize); >+ inmem_orig_sysdep_tab[i].pointer = static_segments; >+ } >+ else >+ { >+ inmem_orig_sysdep_tab[i].pointer = mem; >+ >+ for (p = sysdep_string->segments;; p++) >+ { >+ nls_uint32 segsize = >+ W (domain->must_swap, p->segsize); >+ nls_uint32 sysdepref = >+ W (domain->must_swap, p->sysdepref); >+ size_t n; >+ >+ if (segsize > 0) >+ { >+ memcpy (mem, static_segments, segsize); >+ mem += segsize; >+ static_segments += segsize; >+ } >+ >+ if (sysdepref == SEGMENTS_END) >+ break; >+ >+ n = strlen (sysdep_segment_values[sysdepref]); >+ memcpy (mem, sysdep_segment_values[sysdepref], n); >+ mem += n; >+ } >+ >+ inmem_orig_sysdep_tab[i].length = >+ mem - inmem_orig_sysdep_tab[i].pointer; >+ } >+ } >+ >+ /* Compute the augmented hash table. */ >+ for (i = 0; i < domain->hash_size; i++) >+ inmem_hash_tab[i] = >+ W (domain->must_swap_hash_tab, domain->hash_tab[i]); >+ for (i = 0; i < n_sysdep_strings; i++) >+ { >+ const char *msgid = inmem_orig_sysdep_tab[i].pointer; >+ nls_uint32 hash_val = hash_string (msgid); >+ nls_uint32 idx = hash_val % domain->hash_size; >+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); >+ >+ for (;;) >+ { >+ if (inmem_hash_tab[idx] == 0) >+ { >+ /* Hash table entry is empty. Use it. */ >+ inmem_hash_tab[idx] = 1 + domain->nstrings + i; >+ break; >+ } >+ >+ if (idx >= domain->hash_size - incr) >+ idx -= domain->hash_size - incr; >+ else >+ idx += incr; >+ } >+ } >+ >+ freea (sysdep_segment_values); >+ >+ domain->n_sysdep_strings = n_sysdep_strings; >+ domain->orig_sysdep_tab = inmem_orig_sysdep_tab; >+ domain->trans_sysdep_tab = inmem_trans_sysdep_tab; >+ >+ domain->hash_tab = inmem_hash_tab; >+ domain->must_swap_hash_tab = 0; >+ } >+ else >+ { >+ domain->n_sysdep_strings = 0; >+ domain->orig_sysdep_tab = NULL; >+ domain->trans_sysdep_tab = NULL; >+ } >+ } >+ break; >+ } >+ break; >+ default: >+ /* This is an invalid revision. */ >+ invalid: >+ /* This is an invalid .mo file. */ >+ if (domain->malloced) >+ free (domain->malloced); >+#ifdef HAVE_MMAP >+ if (use_mmap) >+ munmap ((caddr_t) data, size); >+ else >+#endif >+ free (data); >+ free (domain); >+ domain_file->data = NULL; >+ return; >+ } >+ >+ /* Now initialize the character set converter from the character set >+ the file is encoded with (found in the header entry) to the domain's >+ specified character set or the locale's character set. */ >+ nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding); >+ >+ /* Also look for a plural specification. */ >+ EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); >+} >+ >+ >+#ifdef _LIBC >+void >+internal_function >+_nl_unload_domain (domain) >+ struct loaded_domain *domain; >+{ >+ if (domain->plural != &__gettext_germanic_plural) >+ __gettext_free_exp (domain->plural); >+ >+ _nl_free_domain_conv (domain); >+ >+ if (domain->malloced) >+ free (domain->malloced); >+ >+# ifdef _POSIX_MAPPED_FILES >+ if (domain->use_mmap) >+ munmap ((caddr_t) domain->data, domain->mmap_size); >+ else >+# endif /* _POSIX_MAPPED_FILES */ >+ free ((void *) domain->data); >+ >+ free (domain); >+} >+#endif >diff -Naupr hercules-3.05/intl/localcharset.c hercules-20070717/intl/localcharset.c >--- hercules-3.05/intl/localcharset.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/localcharset.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,369 @@ >+/* Determine a canonical name for the current locale's character encoding. >+ >+ Copyright (C) 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* Written by Bruno Haible <bruno@clisp.org>. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#if HAVE_STDDEF_H >+# include <stddef.h> >+#endif >+ >+#include <stdio.h> >+#if HAVE_STRING_H >+# include <string.h> >+#else >+# include <strings.h> >+#endif >+#if HAVE_STDLIB_H >+# include <stdlib.h> >+#endif >+ >+#if defined _WIN32 || defined __WIN32__ >+# undef WIN32 /* avoid warning on mingw32 */ >+# define WIN32 >+#endif >+ >+#if defined __EMX__ >+/* Assume EMX program runs on OS/2, even if compiled under DOS. */ >+# define OS2 >+#endif >+ >+#if !defined WIN32 >+# if HAVE_LANGINFO_CODESET >+# include <langinfo.h> >+# else >+# if HAVE_SETLOCALE >+# include <locale.h> >+# endif >+# endif >+#elif defined WIN32 >+# define WIN32_LEAN_AND_MEAN >+# include <windows.h> >+#endif >+#if defined OS2 >+# define INCL_DOS >+# include <os2.h> >+#endif >+ >+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ >+ /* Win32, OS/2, DOS */ >+# define ISSLASH(C) ((C) == '/' || (C) == '\\') >+#endif >+ >+#ifndef DIRECTORY_SEPARATOR >+# define DIRECTORY_SEPARATOR '/' >+#endif >+ >+#ifndef ISSLASH >+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) >+#endif >+ >+#ifdef HAVE_GETC_UNLOCKED >+# undef getc >+# define getc getc_unlocked >+#endif >+ >+#ifdef __cplusplus >+/* When compiling with "gcc -x c++", produce a function with C linkage. */ >+extern "C" const char * locale_charset (void); >+#endif >+ >+/* The following static variable is declared 'volatile' to avoid a >+ possible multithread problem in the function get_charset_aliases. If we >+ are running in a threaded environment, and if two threads initialize >+ 'charset_aliases' simultaneously, both will produce the same value, >+ and everything will be ok if the two assignments to 'charset_aliases' >+ are atomic. But I don't know what will happen if the two assignments mix. */ >+#if __STDC__ != 1 >+# define volatile /* empty */ >+#endif >+/* Pointer to the contents of the charset.alias file, if it has already been >+ read, else NULL. Its format is: >+ ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ >+static const char * volatile charset_aliases; >+ >+/* Return a pointer to the contents of the charset.alias file. */ >+static const char * >+get_charset_aliases () >+{ >+ const char *cp; >+ >+ cp = charset_aliases; >+ if (cp == NULL) >+ { >+#if !defined WIN32 >+ FILE *fp; >+ const char *dir = LIBDIR; >+ const char *base = "charset.alias"; >+ char *file_name; >+ >+ /* Concatenate dir and base into freshly allocated file_name. */ >+ { >+ size_t dir_len = strlen (dir); >+ size_t base_len = strlen (base); >+ int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); >+ file_name = (char *) malloc (dir_len + add_slash + base_len + 1); >+ if (file_name != NULL) >+ { >+ memcpy (file_name, dir, dir_len); >+ if (add_slash) >+ file_name[dir_len] = DIRECTORY_SEPARATOR; >+ memcpy (file_name + dir_len + add_slash, base, base_len + 1); >+ } >+ } >+ >+ if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) >+ /* Out of memory or file not found, treat it as empty. */ >+ cp = ""; >+ else >+ { >+ /* Parse the file's contents. */ >+ int c; >+ char buf1[50+1]; >+ char buf2[50+1]; >+ char *res_ptr = NULL; >+ size_t res_size = 0; >+ size_t l1, l2; >+ >+ for (;;) >+ { >+ c = getc (fp); >+ if (c == EOF) >+ break; >+ if (c == '\n' || c == ' ' || c == '\t') >+ continue; >+ if (c == '#') >+ { >+ /* Skip comment, to end of line. */ >+ do >+ c = getc (fp); >+ while (!(c == EOF || c == '\n')); >+ if (c == EOF) >+ break; >+ continue; >+ } >+ ungetc (c, fp); >+ if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) >+ break; >+ l1 = strlen (buf1); >+ l2 = strlen (buf2); >+ if (res_size == 0) >+ { >+ res_size = l1 + 1 + l2 + 1; >+ res_ptr = (char *) malloc (res_size + 1); >+ } >+ else >+ { >+ res_size += l1 + 1 + l2 + 1; >+ res_ptr = (char *) realloc (res_ptr, res_size + 1); >+ } >+ if (res_ptr == NULL) >+ { >+ /* Out of memory. */ >+ res_size = 0; >+ break; >+ } >+ strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); >+ strcpy (res_ptr + res_size - (l2 + 1), buf2); >+ } >+ fclose (fp); >+ if (res_size == 0) >+ cp = ""; >+ else >+ { >+ *(res_ptr + res_size) = '\0'; >+ cp = res_ptr; >+ } >+ } >+ >+ if (file_name != NULL) >+ free (file_name); >+ >+#else >+ >+ /* To avoid the troubles of installing a separate file in the same >+ directory as the DLL and of retrieving the DLL's directory at >+ runtime, simply inline the aliases here. */ >+ >+# if defined WIN32 >+ cp = "CP936" "\0" "GBK" "\0" >+ "CP1361" "\0" "JOHAB" "\0" >+ "CP20127" "\0" "ASCII" "\0" >+ "CP20866" "\0" "KOI8-R" "\0" >+ "CP21866" "\0" "KOI8-RU" "\0" >+ "CP28591" "\0" "ISO-8859-1" "\0" >+ "CP28592" "\0" "ISO-8859-2" "\0" >+ "CP28593" "\0" "ISO-8859-3" "\0" >+ "CP28594" "\0" "ISO-8859-4" "\0" >+ "CP28595" "\0" "ISO-8859-5" "\0" >+ "CP28596" "\0" "ISO-8859-6" "\0" >+ "CP28597" "\0" "ISO-8859-7" "\0" >+ "CP28598" "\0" "ISO-8859-8" "\0" >+ "CP28599" "\0" "ISO-8859-9" "\0" >+ "CP28605" "\0" "ISO-8859-15" "\0"; >+# endif >+#endif >+ >+ charset_aliases = cp; >+ } >+ >+ return cp; >+} >+ >+/* Determine the current locale's character encoding, and canonicalize it >+ into one of the canonical names listed in config.charset. >+ The result must not be freed; it is statically allocated. >+ If the canonical name cannot be determined, the result is a non-canonical >+ name. */ >+ >+#ifdef STATIC >+STATIC >+#endif >+const char * >+locale_charset () >+{ >+ const char *codeset; >+ const char *aliases; >+ >+#if !(defined WIN32 || defined OS2) >+ >+# if HAVE_LANGINFO_CODESET >+ >+ /* Most systems support nl_langinfo (CODESET) nowadays. */ >+ codeset = nl_langinfo (CODESET); >+ >+# else >+ >+ /* On old systems which lack it, use setlocale or getenv. */ >+ const char *locale = NULL; >+ >+ /* But most old systems don't have a complete set of locales. Some >+ (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't >+ use setlocale here; it would return "C" when it doesn't support the >+ locale name the user has set. */ >+# if HAVE_SETLOCALE && 0 >+ locale = setlocale (LC_CTYPE, NULL); >+# endif >+ if (locale == NULL || locale[0] == '\0') >+ { >+ locale = getenv ("LC_ALL"); >+ if (locale == NULL || locale[0] == '\0') >+ { >+ locale = getenv ("LC_CTYPE"); >+ if (locale == NULL || locale[0] == '\0') >+ locale = getenv ("LANG"); >+ } >+ } >+ >+ /* On some old systems, one used to set locale = "iso8859_1". On others, >+ you set it to "language_COUNTRY.charset". In any case, we resolve it >+ through the charset.alias file. */ >+ codeset = locale; >+ >+# endif >+ >+#elif defined WIN32 >+ >+ static char buf[2 + 10 + 1]; >+ >+ /* Woe32 has a function returning the locale's codepage as a number. */ >+ sprintf (buf, "CP%u", GetACP ()); >+ codeset = buf; >+ >+#elif defined OS2 >+ >+ const char *locale; >+ static char buf[2 + 10 + 1]; >+ ULONG cp[3]; >+ ULONG cplen; >+ >+ /* Allow user to override the codeset, as set in the operating system, >+ with standard language environment variables. */ >+ locale = getenv ("LC_ALL"); >+ if (locale == NULL || locale[0] == '\0') >+ { >+ locale = getenv ("LC_CTYPE"); >+ if (locale == NULL || locale[0] == '\0') >+ locale = getenv ("LANG"); >+ } >+ if (locale != NULL && locale[0] != '\0') >+ { >+ /* If the locale name contains an encoding after the dot, return it. */ >+ const char *dot = strchr (locale, '.'); >+ >+ if (dot != NULL) >+ { >+ const char *modifier; >+ >+ dot++; >+ /* Look for the possible @... trailer and remove it, if any. */ >+ modifier = strchr (dot, '@'); >+ if (modifier == NULL) >+ return dot; >+ if (modifier - dot < sizeof (buf)) >+ { >+ memcpy (buf, dot, modifier - dot); >+ buf [modifier - dot] = '\0'; >+ return buf; >+ } >+ } >+ >+ /* Resolve through the charset.alias file. */ >+ codeset = locale; >+ } >+ else >+ { >+ /* OS/2 has a function returning the locale's codepage as a number. */ >+ if (DosQueryCp (sizeof (cp), cp, &cplen)) >+ codeset = ""; >+ else >+ { >+ sprintf (buf, "CP%u", cp[0]); >+ codeset = buf; >+ } >+ } >+ >+#endif >+ >+ if (codeset == NULL) >+ /* The canonical name cannot be determined. */ >+ codeset = ""; >+ >+ /* Resolve alias. */ >+ for (aliases = get_charset_aliases (); >+ *aliases != '\0'; >+ aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) >+ if (strcmp (codeset, aliases) == 0 >+ || (aliases[0] == '*' && aliases[1] == '\0')) >+ { >+ codeset = aliases + strlen (aliases) + 1; >+ break; >+ } >+ >+ /* Don't return an empty string. GNU libc and GNU libiconv interpret >+ the empty string as denoting "the locale's character encoding", >+ thus GNU libiconv would call this function a second time. */ >+ if (codeset[0] == '\0') >+ codeset = "ASCII"; >+ >+ return codeset; >+} >diff -Naupr hercules-3.05/intl/locale.alias hercules-20070717/intl/locale.alias >--- hercules-3.05/intl/locale.alias 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/locale.alias 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,78 @@ >+# Locale name alias data base. >+# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. >+# >+# This program is free software; you can redistribute it and/or modify it >+# under the terms of the GNU Library General Public License as published >+# by the Free Software Foundation; either version 2, or (at your option) >+# any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+# Library General Public License for more details. >+# >+# You should have received a copy of the GNU Library General Public >+# License along with this program; if not, write to the Free Software >+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+# USA. >+ >+# The format of this file is the same as for the corresponding file of >+# the X Window System, which normally can be found in >+# /usr/lib/X11/locale/locale.alias >+# A single line contains two fields: an alias and a substitution value. >+# All entries are case independent. >+ >+# Note: This file is far from being complete. If you have a value for >+# your own site which you think might be useful for others too, share >+# it with the rest of us. Send it using the `glibcbug' script to >+# bugs@gnu.org. >+ >+# Packages using this file: >+ >+bokmal no_NO.ISO-8859-1 >+bokmål no_NO.ISO-8859-1 >+catalan ca_ES.ISO-8859-1 >+croatian hr_HR.ISO-8859-2 >+czech cs_CZ.ISO-8859-2 >+danish da_DK.ISO-8859-1 >+dansk da_DK.ISO-8859-1 >+deutsch de_DE.ISO-8859-1 >+dutch nl_NL.ISO-8859-1 >+eesti et_EE.ISO-8859-1 >+estonian et_EE.ISO-8859-1 >+finnish fi_FI.ISO-8859-1 >+français fr_FR.ISO-8859-1 >+french fr_FR.ISO-8859-1 >+galego gl_ES.ISO-8859-1 >+galician gl_ES.ISO-8859-1 >+german de_DE.ISO-8859-1 >+greek el_GR.ISO-8859-7 >+hebrew he_IL.ISO-8859-8 >+hrvatski hr_HR.ISO-8859-2 >+hungarian hu_HU.ISO-8859-2 >+icelandic is_IS.ISO-8859-1 >+italian it_IT.ISO-8859-1 >+japanese ja_JP.eucJP >+japanese.euc ja_JP.eucJP >+ja_JP ja_JP.eucJP >+ja_JP.ujis ja_JP.eucJP >+japanese.sjis ja_JP.SJIS >+korean ko_KR.eucKR >+korean.euc ko_KR.eucKR >+ko_KR ko_KR.eucKR >+lithuanian lt_LT.ISO-8859-13 >+nb_NO no_NO.ISO-8859-1 >+nb_NO.ISO-8859-1 no_NO.ISO-8859-1 >+norwegian no_NO.ISO-8859-1 >+nynorsk nn_NO.ISO-8859-1 >+polish pl_PL.ISO-8859-2 >+portuguese pt_PT.ISO-8859-1 >+romanian ro_RO.ISO-8859-2 >+russian ru_RU.ISO-8859-5 >+slovak sk_SK.ISO-8859-2 >+slovene sl_SI.ISO-8859-2 >+slovenian sl_SI.ISO-8859-2 >+spanish es_ES.ISO-8859-1 >+swedish sv_SE.ISO-8859-1 >+thai th_TH.TIS-620 >+turkish tr_TR.ISO-8859-9 >diff -Naupr hercules-3.05/intl/localealias.c hercules-20070717/intl/localealias.c >--- hercules-3.05/intl/localealias.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/localealias.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,419 @@ >+/* Handle aliases for locale names. >+ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* Tell glibc's <string.h> to provide a prototype for mempcpy(). >+ This must come before <config.h> because <config.h> may include >+ <features.h>, and once <features.h> has been included, it's too late. */ >+#ifndef _GNU_SOURCE >+# define _GNU_SOURCE 1 >+#endif >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <ctype.h> >+#include <stdio.h> >+#if defined _LIBC || defined HAVE___FSETLOCKING >+# include <stdio_ext.h> >+#endif >+#include <sys/types.h> >+ >+#ifdef __GNUC__ >+# define alloca __builtin_alloca >+# define HAVE_ALLOCA 1 >+#else >+# if defined HAVE_ALLOCA_H || defined _LIBC >+# include <alloca.h> >+# else >+# ifdef _AIX >+ #pragma alloca >+# else >+# ifndef alloca >+char *alloca (); >+# endif >+# endif >+# endif >+#endif >+ >+#include <stdlib.h> >+#include <string.h> >+ >+#include "gettextP.h" >+ >+/* @@ end of prolog @@ */ >+ >+#ifdef _LIBC >+/* Rename the non ANSI C functions. This is required by the standard >+ because some ANSI C functions will require linking with this object >+ file and the name space must not be polluted. */ >+# define strcasecmp __strcasecmp >+ >+# ifndef mempcpy >+# define mempcpy __mempcpy >+# endif >+# define HAVE_MEMPCPY 1 >+# define HAVE___FSETLOCKING 1 >+ >+/* We need locking here since we can be called from different places. */ >+# include <bits/libc-lock.h> >+ >+__libc_lock_define_initialized (static, lock); >+#endif >+ >+#ifndef internal_function >+# define internal_function >+#endif >+ >+/* Some optimizations for glibc. */ >+#ifdef _LIBC >+# define FEOF(fp) feof_unlocked (fp) >+# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) >+#else >+# define FEOF(fp) feof (fp) >+# define FGETS(buf, n, fp) fgets (buf, n, fp) >+#endif >+ >+/* For those losing systems which don't have `alloca' we have to add >+ some additional code emulating it. */ >+#ifdef HAVE_ALLOCA >+# define freea(p) /* nothing */ >+#else >+# define alloca(n) malloc (n) >+# define freea(p) free (p) >+#endif >+ >+#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED >+# undef fgets >+# define fgets(buf, len, s) fgets_unlocked (buf, len, s) >+#endif >+#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED >+# undef feof >+# define feof(s) feof_unlocked (s) >+#endif >+ >+ >+struct alias_map >+{ >+ const char *alias; >+ const char *value; >+}; >+ >+ >+static char *string_space; >+static size_t string_space_act; >+static size_t string_space_max; >+static struct alias_map *map; >+static size_t nmap; >+static size_t maxmap; >+ >+ >+/* Prototypes for local functions. */ >+static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) >+ internal_function; >+static int extend_alias_table PARAMS ((void)); >+static int alias_compare PARAMS ((const struct alias_map *map1, >+ const struct alias_map *map2)); >+ >+ >+const char * >+_nl_expand_alias (name) >+ const char *name; >+{ >+ static const char *locale_alias_path; >+ struct alias_map *retval; >+ const char *result = NULL; >+ size_t added; >+ >+#ifdef _LIBC >+ __libc_lock_lock (lock); >+#endif >+ >+ if (locale_alias_path == NULL) >+ locale_alias_path = LOCALE_ALIAS_PATH; >+ >+ do >+ { >+ struct alias_map item; >+ >+ item.alias = name; >+ >+ if (nmap > 0) >+ retval = (struct alias_map *) bsearch (&item, map, nmap, >+ sizeof (struct alias_map), >+ (int (*) PARAMS ((const void *, >+ const void *)) >+ ) alias_compare); >+ else >+ retval = NULL; >+ >+ /* We really found an alias. Return the value. */ >+ if (retval != NULL) >+ { >+ result = retval->value; >+ break; >+ } >+ >+ /* Perhaps we can find another alias file. */ >+ added = 0; >+ while (added == 0 && locale_alias_path[0] != '\0') >+ { >+ const char *start; >+ >+ while (locale_alias_path[0] == PATH_SEPARATOR) >+ ++locale_alias_path; >+ start = locale_alias_path; >+ >+ while (locale_alias_path[0] != '\0' >+ && locale_alias_path[0] != PATH_SEPARATOR) >+ ++locale_alias_path; >+ >+ if (start < locale_alias_path) >+ added = read_alias_file (start, locale_alias_path - start); >+ } >+ } >+ while (added != 0); >+ >+#ifdef _LIBC >+ __libc_lock_unlock (lock); >+#endif >+ >+ return result; >+} >+ >+ >+static size_t >+internal_function >+read_alias_file (fname, fname_len) >+ const char *fname; >+ int fname_len; >+{ >+ FILE *fp; >+ char *full_fname; >+ size_t added; >+ static const char aliasfile[] = "/locale.alias"; >+ >+ full_fname = (char *) alloca (fname_len + sizeof aliasfile); >+#ifdef HAVE_MEMPCPY >+ mempcpy (mempcpy (full_fname, fname, fname_len), >+ aliasfile, sizeof aliasfile); >+#else >+ memcpy (full_fname, fname, fname_len); >+ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); >+#endif >+ >+ fp = fopen (full_fname, "r"); >+ freea (full_fname); >+ if (fp == NULL) >+ return 0; >+ >+#ifdef HAVE___FSETLOCKING >+ /* No threads present. */ >+ __fsetlocking (fp, FSETLOCKING_BYCALLER); >+#endif >+ >+ added = 0; >+ while (!FEOF (fp)) >+ { >+ /* It is a reasonable approach to use a fix buffer here because >+ a) we are only interested in the first two fields >+ b) these fields must be usable as file names and so must not >+ be that long >+ */ >+ char buf[BUFSIZ]; >+ char *alias; >+ char *value; >+ char *cp; >+ >+ if (FGETS (buf, sizeof buf, fp) == NULL) >+ /* EOF reached. */ >+ break; >+ >+ /* Possibly not the whole line fits into the buffer. Ignore >+ the rest of the line. */ >+ if (strchr (buf, '\n') == NULL) >+ { >+ char altbuf[BUFSIZ]; >+ do >+ if (FGETS (altbuf, sizeof altbuf, fp) == NULL) >+ /* Make sure the inner loop will be left. The outer loop >+ will exit at the `feof' test. */ >+ break; >+ while (strchr (altbuf, '\n') == NULL); >+ } >+ >+ cp = buf; >+ /* Ignore leading white space. */ >+ while (isspace ((unsigned char) cp[0])) >+ ++cp; >+ >+ /* A leading '#' signals a comment line. */ >+ if (cp[0] != '\0' && cp[0] != '#') >+ { >+ alias = cp++; >+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) >+ ++cp; >+ /* Terminate alias name. */ >+ if (cp[0] != '\0') >+ *cp++ = '\0'; >+ >+ /* Now look for the beginning of the value. */ >+ while (isspace ((unsigned char) cp[0])) >+ ++cp; >+ >+ if (cp[0] != '\0') >+ { >+ size_t alias_len; >+ size_t value_len; >+ >+ value = cp++; >+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) >+ ++cp; >+ /* Terminate value. */ >+ if (cp[0] == '\n') >+ { >+ /* This has to be done to make the following test >+ for the end of line possible. We are looking for >+ the terminating '\n' which do not overwrite here. */ >+ *cp++ = '\0'; >+ *cp = '\n'; >+ } >+ else if (cp[0] != '\0') >+ *cp++ = '\0'; >+ >+ if (nmap >= maxmap) >+ if (__builtin_expect (extend_alias_table (), 0)) >+ return added; >+ >+ alias_len = strlen (alias) + 1; >+ value_len = strlen (value) + 1; >+ >+ if (string_space_act + alias_len + value_len > string_space_max) >+ { >+ /* Increase size of memory pool. */ >+ size_t new_size = (string_space_max >+ + (alias_len + value_len > 1024 >+ ? alias_len + value_len : 1024)); >+ char *new_pool = (char *) realloc (string_space, new_size); >+ if (new_pool == NULL) >+ return added; >+ >+ if (__builtin_expect (string_space != new_pool, 0)) >+ { >+ size_t i; >+ >+ for (i = 0; i < nmap; i++) >+ { >+ map[i].alias += new_pool - string_space; >+ map[i].value += new_pool - string_space; >+ } >+ } >+ >+ string_space = new_pool; >+ string_space_max = new_size; >+ } >+ >+ map[nmap].alias = memcpy (&string_space[string_space_act], >+ alias, alias_len); >+ string_space_act += alias_len; >+ >+ map[nmap].value = memcpy (&string_space[string_space_act], >+ value, value_len); >+ string_space_act += value_len; >+ >+ ++nmap; >+ ++added; >+ } >+ } >+ } >+ >+ /* Should we test for ferror()? I think we have to silently ignore >+ errors. --drepper */ >+ fclose (fp); >+ >+ if (added > 0) >+ qsort (map, nmap, sizeof (struct alias_map), >+ (int (*) PARAMS ((const void *, const void *))) alias_compare); >+ >+ return added; >+} >+ >+ >+static int >+extend_alias_table () >+{ >+ size_t new_size; >+ struct alias_map *new_map; >+ >+ new_size = maxmap == 0 ? 100 : 2 * maxmap; >+ new_map = (struct alias_map *) realloc (map, (new_size >+ * sizeof (struct alias_map))); >+ if (new_map == NULL) >+ /* Simply don't extend: we don't have any more core. */ >+ return -1; >+ >+ map = new_map; >+ maxmap = new_size; >+ return 0; >+} >+ >+ >+#ifdef _LIBC >+static void __attribute__ ((unused)) >+free_mem (void) >+{ >+ if (string_space != NULL) >+ free (string_space); >+ if (map != NULL) >+ free (map); >+} >+text_set_element (__libc_subfreeres, free_mem); >+#endif >+ >+ >+static int >+alias_compare (map1, map2) >+ const struct alias_map *map1; >+ const struct alias_map *map2; >+{ >+#if defined _LIBC || defined HAVE_STRCASECMP >+ return strcasecmp (map1->alias, map2->alias); >+#else >+ const unsigned char *p1 = (const unsigned char *) map1->alias; >+ const unsigned char *p2 = (const unsigned char *) map2->alias; >+ unsigned char c1, c2; >+ >+ if (p1 == p2) >+ return 0; >+ >+ do >+ { >+ /* I know this seems to be odd but the tolower() function in >+ some systems libc cannot handle nonalpha characters. */ >+ c1 = isupper (*p1) ? tolower (*p1) : *p1; >+ c2 = isupper (*p2) ? tolower (*p2) : *p2; >+ if (c1 == '\0') >+ break; >+ ++p1; >+ ++p2; >+ } >+ while (c1 == c2); >+ >+ return c1 - c2; >+#endif >+} >diff -Naupr hercules-3.05/intl/localename.c hercules-20070717/intl/localename.c >--- hercules-3.05/intl/localename.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/localename.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,772 @@ >+/* Determine the current selected locale. >+ Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */ >+/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stdlib.h> >+#include <locale.h> >+ >+#if defined _WIN32 || defined __WIN32__ >+# undef WIN32 /* avoid warning on mingw32 */ >+# define WIN32 >+#endif >+ >+#ifdef WIN32 >+# define WIN32_LEAN_AND_MEAN >+# include <windows.h> >+/* Mingw headers don't have latest language and sublanguage codes. */ >+# ifndef LANG_AFRIKAANS >+# define LANG_AFRIKAANS 0x36 >+# endif >+# ifndef LANG_ALBANIAN >+# define LANG_ALBANIAN 0x1c >+# endif >+# ifndef LANG_ARABIC >+# define LANG_ARABIC 0x01 >+# endif >+# ifndef LANG_ARMENIAN >+# define LANG_ARMENIAN 0x2b >+# endif >+# ifndef LANG_ASSAMESE >+# define LANG_ASSAMESE 0x4d >+# endif >+# ifndef LANG_AZERI >+# define LANG_AZERI 0x2c >+# endif >+# ifndef LANG_BASQUE >+# define LANG_BASQUE 0x2d >+# endif >+# ifndef LANG_BELARUSIAN >+# define LANG_BELARUSIAN 0x23 >+# endif >+# ifndef LANG_BENGALI >+# define LANG_BENGALI 0x45 >+# endif >+# ifndef LANG_CATALAN >+# define LANG_CATALAN 0x03 >+# endif >+# ifndef LANG_DIVEHI >+# define LANG_DIVEHI 0x65 >+# endif >+# ifndef LANG_ESTONIAN >+# define LANG_ESTONIAN 0x25 >+# endif >+# ifndef LANG_FAEROESE >+# define LANG_FAEROESE 0x38 >+# endif >+# ifndef LANG_FARSI >+# define LANG_FARSI 0x29 >+# endif >+# ifndef LANG_GALICIAN >+# define LANG_GALICIAN 0x56 >+# endif >+# ifndef LANG_GEORGIAN >+# define LANG_GEORGIAN 0x37 >+# endif >+# ifndef LANG_GUJARATI >+# define LANG_GUJARATI 0x47 >+# endif >+# ifndef LANG_HEBREW >+# define LANG_HEBREW 0x0d >+# endif >+# ifndef LANG_HINDI >+# define LANG_HINDI 0x39 >+# endif >+# ifndef LANG_INDONESIAN >+# define LANG_INDONESIAN 0x21 >+# endif >+# ifndef LANG_KANNADA >+# define LANG_KANNADA 0x4b >+# endif >+# ifndef LANG_KASHMIRI >+# define LANG_KASHMIRI 0x60 >+# endif >+# ifndef LANG_KAZAK >+# define LANG_KAZAK 0x3f >+# endif >+# ifndef LANG_KONKANI >+# define LANG_KONKANI 0x57 >+# endif >+# ifndef LANG_KYRGYZ >+# define LANG_KYRGYZ 0x40 >+# endif >+# ifndef LANG_LATVIAN >+# define LANG_LATVIAN 0x26 >+# endif >+# ifndef LANG_LITHUANIAN >+# define LANG_LITHUANIAN 0x27 >+# endif >+# ifndef LANG_MACEDONIAN >+# define LANG_MACEDONIAN 0x2f >+# endif >+# ifndef LANG_MALAY >+# define LANG_MALAY 0x3e >+# endif >+# ifndef LANG_MALAYALAM >+# define LANG_MALAYALAM 0x4c >+# endif >+# ifndef LANG_MANIPURI >+# define LANG_MANIPURI 0x58 >+# endif >+# ifndef LANG_MARATHI >+# define LANG_MARATHI 0x4e >+# endif >+# ifndef LANG_MONGOLIAN >+# define LANG_MONGOLIAN 0x50 >+# endif >+# ifndef LANG_NEPALI >+# define LANG_NEPALI 0x61 >+# endif >+# ifndef LANG_ORIYA >+# define LANG_ORIYA 0x48 >+# endif >+# ifndef LANG_PUNJABI >+# define LANG_PUNJABI 0x46 >+# endif >+# ifndef LANG_SANSKRIT >+# define LANG_SANSKRIT 0x4f >+# endif >+# ifndef LANG_SERBIAN >+# define LANG_SERBIAN 0x1a >+# endif >+# ifndef LANG_SINDHI >+# define LANG_SINDHI 0x59 >+# endif >+# ifndef LANG_SLOVAK >+# define LANG_SLOVAK 0x1b >+# endif >+# ifndef LANG_SORBIAN >+# define LANG_SORBIAN 0x2e >+# endif >+# ifndef LANG_SWAHILI >+# define LANG_SWAHILI 0x41 >+# endif >+# ifndef LANG_SYRIAC >+# define LANG_SYRIAC 0x5a >+# endif >+# ifndef LANG_TAMIL >+# define LANG_TAMIL 0x49 >+# endif >+# ifndef LANG_TATAR >+# define LANG_TATAR 0x44 >+# endif >+# ifndef LANG_TELUGU >+# define LANG_TELUGU 0x4a >+# endif >+# ifndef LANG_THAI >+# define LANG_THAI 0x1e >+# endif >+# ifndef LANG_UKRAINIAN >+# define LANG_UKRAINIAN 0x22 >+# endif >+# ifndef LANG_URDU >+# define LANG_URDU 0x20 >+# endif >+# ifndef LANG_UZBEK >+# define LANG_UZBEK 0x43 >+# endif >+# ifndef LANG_VIETNAMESE >+# define LANG_VIETNAMESE 0x2a >+# endif >+# ifndef SUBLANG_ARABIC_SAUDI_ARABIA >+# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 >+# endif >+# ifndef SUBLANG_ARABIC_IRAQ >+# define SUBLANG_ARABIC_IRAQ 0x02 >+# endif >+# ifndef SUBLANG_ARABIC_EGYPT >+# define SUBLANG_ARABIC_EGYPT 0x03 >+# endif >+# ifndef SUBLANG_ARABIC_LIBYA >+# define SUBLANG_ARABIC_LIBYA 0x04 >+# endif >+# ifndef SUBLANG_ARABIC_ALGERIA >+# define SUBLANG_ARABIC_ALGERIA 0x05 >+# endif >+# ifndef SUBLANG_ARABIC_MOROCCO >+# define SUBLANG_ARABIC_MOROCCO 0x06 >+# endif >+# ifndef SUBLANG_ARABIC_TUNISIA >+# define SUBLANG_ARABIC_TUNISIA 0x07 >+# endif >+# ifndef SUBLANG_ARABIC_OMAN >+# define SUBLANG_ARABIC_OMAN 0x08 >+# endif >+# ifndef SUBLANG_ARABIC_YEMEN >+# define SUBLANG_ARABIC_YEMEN 0x09 >+# endif >+# ifndef SUBLANG_ARABIC_SYRIA >+# define SUBLANG_ARABIC_SYRIA 0x0a >+# endif >+# ifndef SUBLANG_ARABIC_JORDAN >+# define SUBLANG_ARABIC_JORDAN 0x0b >+# endif >+# ifndef SUBLANG_ARABIC_LEBANON >+# define SUBLANG_ARABIC_LEBANON 0x0c >+# endif >+# ifndef SUBLANG_ARABIC_KUWAIT >+# define SUBLANG_ARABIC_KUWAIT 0x0d >+# endif >+# ifndef SUBLANG_ARABIC_UAE >+# define SUBLANG_ARABIC_UAE 0x0e >+# endif >+# ifndef SUBLANG_ARABIC_BAHRAIN >+# define SUBLANG_ARABIC_BAHRAIN 0x0f >+# endif >+# ifndef SUBLANG_ARABIC_QATAR >+# define SUBLANG_ARABIC_QATAR 0x10 >+# endif >+# ifndef SUBLANG_AZERI_LATIN >+# define SUBLANG_AZERI_LATIN 0x01 >+# endif >+# ifndef SUBLANG_AZERI_CYRILLIC >+# define SUBLANG_AZERI_CYRILLIC 0x02 >+# endif >+# ifndef SUBLANG_CHINESE_MACAU >+# define SUBLANG_CHINESE_MACAU 0x05 >+# endif >+# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA >+# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 >+# endif >+# ifndef SUBLANG_ENGLISH_JAMAICA >+# define SUBLANG_ENGLISH_JAMAICA 0x08 >+# endif >+# ifndef SUBLANG_ENGLISH_CARIBBEAN >+# define SUBLANG_ENGLISH_CARIBBEAN 0x09 >+# endif >+# ifndef SUBLANG_ENGLISH_BELIZE >+# define SUBLANG_ENGLISH_BELIZE 0x0a >+# endif >+# ifndef SUBLANG_ENGLISH_TRINIDAD >+# define SUBLANG_ENGLISH_TRINIDAD 0x0b >+# endif >+# ifndef SUBLANG_ENGLISH_ZIMBABWE >+# define SUBLANG_ENGLISH_ZIMBABWE 0x0c >+# endif >+# ifndef SUBLANG_ENGLISH_PHILIPPINES >+# define SUBLANG_ENGLISH_PHILIPPINES 0x0d >+# endif >+# ifndef SUBLANG_FRENCH_LUXEMBOURG >+# define SUBLANG_FRENCH_LUXEMBOURG 0x05 >+# endif >+# ifndef SUBLANG_FRENCH_MONACO >+# define SUBLANG_FRENCH_MONACO 0x06 >+# endif >+# ifndef SUBLANG_GERMAN_LUXEMBOURG >+# define SUBLANG_GERMAN_LUXEMBOURG 0x04 >+# endif >+# ifndef SUBLANG_GERMAN_LIECHTENSTEIN >+# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 >+# endif >+# ifndef SUBLANG_KASHMIRI_INDIA >+# define SUBLANG_KASHMIRI_INDIA 0x02 >+# endif >+# ifndef SUBLANG_MALAY_MALAYSIA >+# define SUBLANG_MALAY_MALAYSIA 0x01 >+# endif >+# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM >+# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 >+# endif >+# ifndef SUBLANG_NEPALI_INDIA >+# define SUBLANG_NEPALI_INDIA 0x02 >+# endif >+# ifndef SUBLANG_SERBIAN_LATIN >+# define SUBLANG_SERBIAN_LATIN 0x02 >+# endif >+# ifndef SUBLANG_SERBIAN_CYRILLIC >+# define SUBLANG_SERBIAN_CYRILLIC 0x03 >+# endif >+# ifndef SUBLANG_SPANISH_GUATEMALA >+# define SUBLANG_SPANISH_GUATEMALA 0x04 >+# endif >+# ifndef SUBLANG_SPANISH_COSTA_RICA >+# define SUBLANG_SPANISH_COSTA_RICA 0x05 >+# endif >+# ifndef SUBLANG_SPANISH_PANAMA >+# define SUBLANG_SPANISH_PANAMA 0x06 >+# endif >+# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC >+# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 >+# endif >+# ifndef SUBLANG_SPANISH_VENEZUELA >+# define SUBLANG_SPANISH_VENEZUELA 0x08 >+# endif >+# ifndef SUBLANG_SPANISH_COLOMBIA >+# define SUBLANG_SPANISH_COLOMBIA 0x09 >+# endif >+# ifndef SUBLANG_SPANISH_PERU >+# define SUBLANG_SPANISH_PERU 0x0a >+# endif >+# ifndef SUBLANG_SPANISH_ARGENTINA >+# define SUBLANG_SPANISH_ARGENTINA 0x0b >+# endif >+# ifndef SUBLANG_SPANISH_ECUADOR >+# define SUBLANG_SPANISH_ECUADOR 0x0c >+# endif >+# ifndef SUBLANG_SPANISH_CHILE >+# define SUBLANG_SPANISH_CHILE 0x0d >+# endif >+# ifndef SUBLANG_SPANISH_URUGUAY >+# define SUBLANG_SPANISH_URUGUAY 0x0e >+# endif >+# ifndef SUBLANG_SPANISH_PARAGUAY >+# define SUBLANG_SPANISH_PARAGUAY 0x0f >+# endif >+# ifndef SUBLANG_SPANISH_BOLIVIA >+# define SUBLANG_SPANISH_BOLIVIA 0x10 >+# endif >+# ifndef SUBLANG_SPANISH_EL_SALVADOR >+# define SUBLANG_SPANISH_EL_SALVADOR 0x11 >+# endif >+# ifndef SUBLANG_SPANISH_HONDURAS >+# define SUBLANG_SPANISH_HONDURAS 0x12 >+# endif >+# ifndef SUBLANG_SPANISH_NICARAGUA >+# define SUBLANG_SPANISH_NICARAGUA 0x13 >+# endif >+# ifndef SUBLANG_SPANISH_PUERTO_RICO >+# define SUBLANG_SPANISH_PUERTO_RICO 0x14 >+# endif >+# ifndef SUBLANG_SWEDISH_FINLAND >+# define SUBLANG_SWEDISH_FINLAND 0x02 >+# endif >+# ifndef SUBLANG_URDU_PAKISTAN >+# define SUBLANG_URDU_PAKISTAN 0x01 >+# endif >+# ifndef SUBLANG_URDU_INDIA >+# define SUBLANG_URDU_INDIA 0x02 >+# endif >+# ifndef SUBLANG_UZBEK_LATIN >+# define SUBLANG_UZBEK_LATIN 0x01 >+# endif >+# ifndef SUBLANG_UZBEK_CYRILLIC >+# define SUBLANG_UZBEK_CYRILLIC 0x02 >+# endif >+#endif >+ >+/* XPG3 defines the result of 'setlocale (category, NULL)' as: >+ "Directs 'setlocale()' to query 'category' and return the current >+ setting of 'local'." >+ However it does not specify the exact format. Neither do SUSV2 and >+ ISO C 99. So we can use this feature only on selected systems (e.g. >+ those using GNU C Library). */ >+#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) >+# define HAVE_LOCALE_NULL >+#endif >+ >+/* Determine the current locale's name, and canonicalize it into XPG syntax >+ language[_territory[.codeset]][@modifier] >+ The codeset part in the result is not reliable; the locale_charset() >+ should be used for codeset information instead. >+ The result must not be freed; it is statically allocated. */ >+ >+const char * >+_nl_locale_name (category, categoryname) >+ int category; >+ const char *categoryname; >+{ >+ const char *retval; >+ >+#ifndef WIN32 >+ >+ /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. >+ On some systems this can be done by the 'setlocale' function itself. */ >+# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL >+ retval = setlocale (category, NULL); >+# else >+ /* Setting of LC_ALL overwrites all other. */ >+ retval = getenv ("LC_ALL"); >+ if (retval == NULL || retval[0] == '\0') >+ { >+ /* Next comes the name of the desired category. */ >+ retval = getenv (categoryname); >+ if (retval == NULL || retval[0] == '\0') >+ { >+ /* Last possibility is the LANG environment variable. */ >+ retval = getenv ("LANG"); >+ if (retval == NULL || retval[0] == '\0') >+ /* We use C as the default domain. POSIX says this is >+ implementation defined. */ >+ retval = "C"; >+ } >+ } >+# endif >+ >+ return retval; >+ >+#else /* WIN32 */ >+ >+ /* Return an XPG style locale name language[_territory][@modifier]. >+ Don't even bother determining the codeset; it's not useful in this >+ context, because message catalogs are not specific to a single >+ codeset. */ >+ >+ LCID lcid; >+ LANGID langid; >+ int primary, sub; >+ >+ /* Let the user override the system settings through environment >+ variables, as on POSIX systems. */ >+ retval = getenv ("LC_ALL"); >+ if (retval != NULL && retval[0] != '\0') >+ return retval; >+ retval = getenv (categoryname); >+ if (retval != NULL && retval[0] != '\0') >+ return retval; >+ retval = getenv ("LANG"); >+ if (retval != NULL && retval[0] != '\0') >+ return retval; >+ >+ /* Use native Win32 API locale ID. */ >+ lcid = GetThreadLocale (); >+ >+ /* Strip off the sorting rules, keep only the language part. */ >+ langid = LANGIDFROMLCID (lcid); >+ >+ /* Split into language and territory part. */ >+ primary = PRIMARYLANGID (langid); >+ sub = SUBLANGID (langid); >+ >+ /* Dispatch on language. >+ See also http://www.unicode.org/unicode/onlinedat/languages.html . >+ For details about languages, see http://www.ethnologue.com/ . */ >+ switch (primary) >+ { >+ case LANG_AFRIKAANS: return "af_ZA"; >+ case LANG_ALBANIAN: return "sq_AL"; >+ case 0x5e: /* AMHARIC */ return "am_ET"; >+ case LANG_ARABIC: >+ switch (sub) >+ { >+ case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; >+ case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; >+ case SUBLANG_ARABIC_EGYPT: return "ar_EG"; >+ case SUBLANG_ARABIC_LIBYA: return "ar_LY"; >+ case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; >+ case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; >+ case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; >+ case SUBLANG_ARABIC_OMAN: return "ar_OM"; >+ case SUBLANG_ARABIC_YEMEN: return "ar_YE"; >+ case SUBLANG_ARABIC_SYRIA: return "ar_SY"; >+ case SUBLANG_ARABIC_JORDAN: return "ar_JO"; >+ case SUBLANG_ARABIC_LEBANON: return "ar_LB"; >+ case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; >+ case SUBLANG_ARABIC_UAE: return "ar_AE"; >+ case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; >+ case SUBLANG_ARABIC_QATAR: return "ar_QA"; >+ } >+ return "ar"; >+ case LANG_ARMENIAN: return "hy_AM"; >+ case LANG_ASSAMESE: return "as_IN"; >+ case LANG_AZERI: >+ switch (sub) >+ { >+ /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ >+ case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; >+ case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; >+ } >+ return "az"; >+ case LANG_BASQUE: >+ return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ >+ case LANG_BELARUSIAN: return "be_BY"; >+ case LANG_BENGALI: return "bn_IN"; >+ case LANG_BULGARIAN: return "bg_BG"; >+ case 0x55: /* BURMESE */ return "my_MM"; >+ case 0x53: /* CAMBODIAN */ return "km_KH"; >+ case LANG_CATALAN: return "ca_ES"; >+ case 0x5c: /* CHEROKEE */ return "chr_US"; >+ case LANG_CHINESE: >+ switch (sub) >+ { >+ case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; >+ case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; >+ case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; >+ case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; >+ case SUBLANG_CHINESE_MACAU: return "zh_MO"; >+ } >+ return "zh"; >+ case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN >+ * What used to be called Serbo-Croatian >+ * should really now be two separate >+ * languages because of political reasons. >+ * (Says tml, who knows nothing about Serbian >+ * or Croatian.) >+ * (I can feel those flames coming already.) >+ */ >+ switch (sub) >+ { >+ case SUBLANG_DEFAULT: return "hr_HR"; >+ case SUBLANG_SERBIAN_LATIN: return "sr_YU"; >+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic"; >+ } >+ return "hr"; >+ case LANG_CZECH: return "cs_CZ"; >+ case LANG_DANISH: return "da_DK"; >+ case LANG_DIVEHI: return "div_MV"; >+ case LANG_DUTCH: >+ switch (sub) >+ { >+ case SUBLANG_DUTCH: return "nl_NL"; >+ case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; >+ } >+ return "nl"; >+ case 0x66: /* EDO */ return "bin_NG"; >+ case LANG_ENGLISH: >+ switch (sub) >+ { >+ /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought >+ * English was the language spoken in England. >+ * Oh well. >+ */ >+ case SUBLANG_ENGLISH_US: return "en_US"; >+ case SUBLANG_ENGLISH_UK: return "en_GB"; >+ case SUBLANG_ENGLISH_AUS: return "en_AU"; >+ case SUBLANG_ENGLISH_CAN: return "en_CA"; >+ case SUBLANG_ENGLISH_NZ: return "en_NZ"; >+ case SUBLANG_ENGLISH_EIRE: return "en_IE"; >+ case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; >+ case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; >+ case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ >+ case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; >+ case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; >+ case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; >+ case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; >+ } >+ return "en"; >+ case LANG_ESTONIAN: return "et_EE"; >+ case LANG_FAEROESE: return "fo_FO"; >+ case LANG_FARSI: return "fa_IR"; >+ case LANG_FINNISH: return "fi_FI"; >+ case LANG_FRENCH: >+ switch (sub) >+ { >+ case SUBLANG_FRENCH: return "fr_FR"; >+ case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; >+ case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; >+ case SUBLANG_FRENCH_SWISS: return "fr_CH"; >+ case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; >+ case SUBLANG_FRENCH_MONACO: return "fr_MC"; >+ } >+ return "fr"; >+ case 0x62: /* FRISIAN */ return "fy_NL"; >+ case 0x67: /* FULFULDE */ return "ful_NG"; >+ case 0x3c: /* GAELIC */ >+ switch (sub) >+ { >+ case 0x01: /* SCOTTISH */ return "gd_GB"; >+ case 0x02: /* IRISH */ return "ga_IE"; >+ } >+ return "C"; >+ case LANG_GALICIAN: return "gl_ES"; >+ case LANG_GEORGIAN: return "ka_GE"; >+ case LANG_GERMAN: >+ switch (sub) >+ { >+ case SUBLANG_GERMAN: return "de_DE"; >+ case SUBLANG_GERMAN_SWISS: return "de_CH"; >+ case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; >+ case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; >+ case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; >+ } >+ return "de"; >+ case LANG_GREEK: return "el_GR"; >+ case 0x74: /* GUARANI */ return "gn_PY"; >+ case LANG_GUJARATI: return "gu_IN"; >+ case 0x68: /* HAUSA */ return "ha_NG"; >+ case 0x75: /* HAWAIIAN */ >+ /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) >+ or Hawaii Creole English ("cpe_US", 600000 speakers)? */ >+ return "cpe_US"; >+ case LANG_HEBREW: return "he_IL"; >+ case LANG_HINDI: return "hi_IN"; >+ case LANG_HUNGARIAN: return "hu_HU"; >+ case 0x69: /* IBIBIO */ return "nic_NG"; >+ case LANG_ICELANDIC: return "is_IS"; >+ case 0x70: /* IGBO */ return "ibo_NG"; >+ case LANG_INDONESIAN: return "id_ID"; >+ case 0x5d: /* INUKTITUT */ return "iu_CA"; >+ case LANG_ITALIAN: >+ switch (sub) >+ { >+ case SUBLANG_ITALIAN: return "it_IT"; >+ case SUBLANG_ITALIAN_SWISS: return "it_CH"; >+ } >+ return "it"; >+ case LANG_JAPANESE: return "ja_JP"; >+ case LANG_KANNADA: return "kn_IN"; >+ case 0x71: /* KANURI */ return "kau_NG"; >+ case LANG_KASHMIRI: >+ switch (sub) >+ { >+ case SUBLANG_DEFAULT: return "ks_PK"; >+ case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; >+ } >+ return "ks"; >+ case LANG_KAZAK: return "kk_KZ"; >+ case LANG_KONKANI: >+ /* FIXME: Adjust this when such locales appear on Unix. */ >+ return "kok_IN"; >+ case LANG_KOREAN: return "ko_KR"; >+ case LANG_KYRGYZ: return "ky_KG"; >+ case 0x54: /* LAO */ return "lo_LA"; >+ case 0x76: /* LATIN */ return "la_VA"; >+ case LANG_LATVIAN: return "lv_LV"; >+ case LANG_LITHUANIAN: return "lt_LT"; >+ case LANG_MACEDONIAN: return "mk_MK"; >+ case LANG_MALAY: >+ switch (sub) >+ { >+ case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; >+ case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; >+ } >+ return "ms"; >+ case LANG_MALAYALAM: return "ml_IN"; >+ case 0x3a: /* MALTESE */ return "mt_MT"; >+ case LANG_MANIPURI: >+ /* FIXME: Adjust this when such locales appear on Unix. */ >+ return "mni_IN"; >+ case LANG_MARATHI: return "mr_IN"; >+ case LANG_MONGOLIAN: >+ return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ >+ case LANG_NEPALI: >+ switch (sub) >+ { >+ case SUBLANG_DEFAULT: return "ne_NP"; >+ case SUBLANG_NEPALI_INDIA: return "ne_IN"; >+ } >+ return "ne"; >+ case LANG_NORWEGIAN: >+ switch (sub) >+ { >+ case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO"; >+ case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; >+ } >+ return "no"; >+ case LANG_ORIYA: return "or_IN"; >+ case 0x72: /* OROMO */ return "om_ET"; >+ case 0x79: /* PAPIAMENTU */ return "pap_AN"; >+ case 0x63: /* PASHTO */ >+ return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ >+ case LANG_POLISH: return "pl_PL"; >+ case LANG_PORTUGUESE: >+ switch (sub) >+ { >+ case SUBLANG_PORTUGUESE: return "pt_PT"; >+ /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. >+ Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ >+ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; >+ } >+ return "pt"; >+ case LANG_PUNJABI: return "pa_IN"; >+ case 0x17: /* RHAETO-ROMANCE */ return "rm_CH"; >+ case LANG_ROMANIAN: return "ro_RO"; >+ case LANG_RUSSIAN: >+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA". */ >+ case 0x3b: /* SAMI */ return "se_NO"; >+ case LANG_SANSKRIT: return "sa_IN"; >+ case LANG_SINDHI: return "sd"; >+ case 0x5b: /* SINHALESE */ return "si_LK"; >+ case LANG_SLOVAK: return "sk_SK"; >+ case LANG_SLOVENIAN: return "sl_SI"; >+ case 0x77: /* SOMALI */ return "so_SO"; >+ case LANG_SORBIAN: >+ /* FIXME: Adjust this when such locales appear on Unix. */ >+ return "wen_DE"; >+ case LANG_SPANISH: >+ switch (sub) >+ { >+ case SUBLANG_SPANISH: return "es_ES"; >+ case SUBLANG_SPANISH_MEXICAN: return "es_MX"; >+ case SUBLANG_SPANISH_MODERN: >+ return "es_ES@modern"; /* not seen on Unix */ >+ case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; >+ case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; >+ case SUBLANG_SPANISH_PANAMA: return "es_PA"; >+ case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; >+ case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; >+ case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; >+ case SUBLANG_SPANISH_PERU: return "es_PE"; >+ case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; >+ case SUBLANG_SPANISH_ECUADOR: return "es_EC"; >+ case SUBLANG_SPANISH_CHILE: return "es_CL"; >+ case SUBLANG_SPANISH_URUGUAY: return "es_UY"; >+ case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; >+ case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; >+ case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; >+ case SUBLANG_SPANISH_HONDURAS: return "es_HN"; >+ case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; >+ case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; >+ } >+ return "es"; >+ case 0x30: /* SUTU */ return "bnt_TZ"; >+ case LANG_SWAHILI: return "sw_KE"; >+ case LANG_SWEDISH: >+ switch (sub) >+ { >+ case SUBLANG_DEFAULT: return "sv_SE"; >+ case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; >+ } >+ return "sv"; >+ case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ >+ case 0x64: /* TAGALOG */ return "tl_PH"; >+ case 0x28: /* TAJIK */ return "tg_TJ"; >+ case 0x5f: /* TAMAZIGHT */ return "ber_MA"; >+ case LANG_TAMIL: >+ return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ >+ case LANG_TATAR: return "tt_RU"; >+ case LANG_TELUGU: return "te_IN"; >+ case LANG_THAI: return "th_TH"; >+ case 0x51: /* TIBETAN */ return "bo_CN"; >+ case 0x73: /* TIGRINYA */ return "ti_ET"; >+ case 0x31: /* TSONGA */ return "ts_ZA"; >+ case LANG_TURKISH: return "tr_TR"; >+ case 0x42: /* TURKMEN */ return "tk_TM"; >+ case LANG_UKRAINIAN: return "uk_UA"; >+ case LANG_URDU: >+ switch (sub) >+ { >+ case SUBLANG_URDU_PAKISTAN: return "ur_PK"; >+ case SUBLANG_URDU_INDIA: return "ur_IN"; >+ } >+ return "ur"; >+ case LANG_UZBEK: >+ switch (sub) >+ { >+ /* FIXME: Adjust this when Uzbek locales appear on Unix. */ >+ case SUBLANG_UZBEK_LATIN: return "uz_UZ@latin"; >+ case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; >+ } >+ return "uz"; >+ case 0x33: /* VENDA */ return "ven_ZA"; >+ case LANG_VIETNAMESE: return "vi_VN"; >+ case 0x52: /* WELSH */ return "cy_GB"; >+ case 0x34: /* XHOSA */ return "xh_ZA"; >+ case 0x78: /* YI */ return "sit_CN"; >+ case 0x3d: /* YIDDISH */ return "yi_IL"; >+ case 0x6a: /* YORUBA */ return "yo_NG"; >+ case 0x35: /* ZULU */ return "zu_ZA"; >+ default: return "C"; >+ } >+ >+#endif >+} >diff -Naupr hercules-3.05/intl/Makefile.in hercules-20070717/intl/Makefile.in >--- hercules-3.05/intl/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/Makefile.in 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,337 @@ >+# Makefile for directory with message catalog handling in GNU NLS Utilities. >+# Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. >+# >+# This program is free software; you can redistribute it and/or modify it >+# under the terms of the GNU Library General Public License as published >+# by the Free Software Foundation; either version 2, or (at your option) >+# any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+# Library General Public License for more details. >+# >+# You should have received a copy of the GNU Library General Public >+# License along with this program; if not, write to the Free Software >+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+# USA. >+ >+PACKAGE = @PACKAGE@ >+VERSION = @VERSION@ >+ >+SHELL = /bin/sh >+ >+srcdir = @srcdir@ >+top_srcdir = @top_srcdir@ >+top_builddir = .. >+VPATH = @srcdir@ >+ >+prefix = @prefix@ >+exec_prefix = @exec_prefix@ >+transform = @program_transform_name@ >+libdir = @libdir@ >+includedir = @includedir@ >+datadir = @datadir@ >+localedir = $(datadir)/locale >+gettextsrcdir = $(datadir)/gettext/intl >+aliaspath = $(localedir) >+subdir = intl >+ >+INSTALL = @INSTALL@ >+INSTALL_DATA = @INSTALL_DATA@ >+MKINSTALLDIRS = @MKINSTALLDIRS@ >+mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` >+ >+l = @INTL_LIBTOOL_SUFFIX_PREFIX@ >+ >+AR = ar >+CC = @CC@ >+LIBTOOL = @LIBTOOL@ >+RANLIB = @RANLIB@ >+YACC = @INTLBISON@ -y -d >+YFLAGS = --name-prefix=__gettext >+ >+DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ >+-DLIBDIR=\"$(libdir)\" -DIN_LIBINTL @DEFS@ >+CPPFLAGS = @CPPFLAGS@ >+CFLAGS = @CFLAGS@ >+LDFLAGS = @LDFLAGS@ >+ >+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) >+ >+HEADERS = $(COMHDRS) libgnuintl.h loadinfo.h >+COMHDRS = gmo.h gettextP.h hash-string.h plural-exp.h eval-plural.h os2compat.h >+SOURCES = $(COMSRCS) intl-compat.c >+COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ >+finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ >+explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \ >+plural-exp.c localcharset.c localename.c osdep.c os2compat.c >+OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ >+finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ >+explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ >+plural.$lo plural-exp.$lo localcharset.$lo localename.$lo osdep.$lo >+GETTOBJS = intl-compat.$lo >+DISTFILES.common = Makefile.in \ >+config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) >+DISTFILES.generated = plural.c >+DISTFILES.normal = VERSION >+DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc >+DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ >+COPYING.LIB-2 gettext.h libgettext.h plural-eval.c >+ >+# Libtool's library version information for libintl. >+# Before making a gettext release, the gettext maintainer must change this >+# according to the libtool documentation, section "Library interface versions". >+# Maintainers of other packages that include the intl directory must *not* >+# change these values. >+LTV_CURRENT=4 >+LTV_REVISION=0 >+LTV_AGE=2 >+ >+.SUFFIXES: >+.SUFFIXES: .c .y .o .lo .sin .sed >+.c.o: >+ $(COMPILE) $< >+.c.lo: >+ $(LIBTOOL) --mode=compile $(COMPILE) $< >+ >+.y.c: >+ $(YACC) $(YFLAGS) --output $@ $< >+ rm -f $*.h >+ >+.sin.sed: >+ sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ >+ mv t-$@ $@ >+ >+INCLUDES = -I.. -I. -I$(top_srcdir)/intl >+ >+all: all-@USE_INCLUDED_LIBINTL@ >+all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed >+all-no: all-no-@BUILD_INCLUDED_LIBINTL@ >+all-no-yes: libgnuintl.$la >+all-no-no: >+ >+libintl.a libgnuintl.a: $(OBJECTS) >+ rm -f $@ >+ $(AR) cru $@ $(OBJECTS) >+ $(RANLIB) $@ >+ >+libintl.la libgnuintl.la: $(OBJECTS) >+ $(LIBTOOL) --mode=link \ >+ $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ >+ $(OBJECTS) @LTLIBICONV@ -lc \ >+ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ >+ -rpath $(libdir) \ >+ -no-undefined >+ >+libintl.h: libgnuintl.h >+ cp $(srcdir)/libgnuintl.h libintl.h >+ >+charset.alias: config.charset >+ $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ >+ mv t-$@ $@ >+ >+check: all >+ >+# This installation goal is only used in GNU gettext. Packages which >+# only use the library should use install instead. >+ >+# We must not install the libintl.h/libintl.a files if we are on a >+# system which has the GNU gettext() function in its C library or in a >+# separate library. >+# If you want to use the one which comes with this version of the >+# package, you have to use `configure --with-included-gettext'. >+install: install-exec install-data >+install-exec: all >+ if test "$(PACKAGE)" = "gettext" \ >+ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ >+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ >+ $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ >+ $(LIBTOOL) --mode=install \ >+ $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ >+ else \ >+ : ; \ >+ fi >+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \ >+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ >+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \ >+ dest=$(DESTDIR)$(libdir)/charset.alias; \ >+ if test -f $(DESTDIR)$(libdir)/charset.alias; then \ >+ orig=$(DESTDIR)$(libdir)/charset.alias; \ >+ sed -f ref-add.sed $$orig > $$temp; \ >+ $(INSTALL_DATA) $$temp $$dest; \ >+ rm -f $$temp; \ >+ else \ >+ if test @GLIBC21@ = no; then \ >+ orig=charset.alias; \ >+ sed -f ref-add.sed $$orig > $$temp; \ >+ $(INSTALL_DATA) $$temp $$dest; \ >+ rm -f $$temp; \ >+ fi; \ >+ fi; \ >+ $(mkinstalldirs) $(DESTDIR)$(localedir); \ >+ test -f $(DESTDIR)$(localedir)/locale.alias \ >+ && orig=$(DESTDIR)$(localedir)/locale.alias \ >+ || orig=$(srcdir)/locale.alias; \ >+ temp=$(DESTDIR)$(localedir)/t-locale.alias; \ >+ dest=$(DESTDIR)$(localedir)/locale.alias; \ >+ sed -f ref-add.sed $$orig > $$temp; \ >+ $(INSTALL_DATA) $$temp $$dest; \ >+ rm -f $$temp; \ >+ else \ >+ : ; \ >+ fi >+install-data: all >+ if test "$(PACKAGE)" = "gettext"; then \ >+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ >+ $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ >+ $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ >+ dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ >+ for file in $$dists; do \ >+ $(INSTALL_DATA) $(srcdir)/$$file \ >+ $(DESTDIR)$(gettextsrcdir)/$$file; \ >+ done; \ >+ chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ >+ dists="$(DISTFILES.generated)"; \ >+ for file in $$dists; do \ >+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ >+ $(INSTALL_DATA) $$dir/$$file \ >+ $(DESTDIR)$(gettextsrcdir)/$$file; \ >+ done; \ >+ dists="$(DISTFILES.obsolete)"; \ >+ for file in $$dists; do \ >+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ >+ done; \ >+ else \ >+ : ; \ >+ fi >+ >+install-strip: install >+ >+installdirs: >+ if test "$(PACKAGE)" = "gettext" \ >+ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ >+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ >+ else \ >+ : ; \ >+ fi >+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \ >+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ >+ $(mkinstalldirs) $(DESTDIR)$(localedir); \ >+ else \ >+ : ; \ >+ fi >+ if test "$(PACKAGE)" = "gettext"; then \ >+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ >+ else \ >+ : ; \ >+ fi >+ >+# Define this as empty until I found a useful application. >+installcheck: >+ >+uninstall: >+ if test "$(PACKAGE)" = "gettext" \ >+ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ >+ rm -f $(DESTDIR)$(includedir)/libintl.h; \ >+ $(LIBTOOL) --mode=uninstall \ >+ rm -f $(DESTDIR)$(libdir)/libintl.$la; \ >+ else \ >+ : ; \ >+ fi >+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \ >+ if test -f $(DESTDIR)$(libdir)/charset.alias; then \ >+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \ >+ dest=$(DESTDIR)$(libdir)/charset.alias; \ >+ sed -f ref-del.sed $$dest > $$temp; \ >+ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ >+ rm -f $$dest; \ >+ else \ >+ $(INSTALL_DATA) $$temp $$dest; \ >+ fi; \ >+ rm -f $$temp; \ >+ fi; \ >+ if test -f $(DESTDIR)$(localedir)/locale.alias; then \ >+ temp=$(DESTDIR)$(localedir)/t-locale.alias; \ >+ dest=$(DESTDIR)$(localedir)/locale.alias; \ >+ sed -f ref-del.sed $$dest > $$temp; \ >+ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ >+ rm -f $$dest; \ >+ else \ >+ $(INSTALL_DATA) $$temp $$dest; \ >+ fi; \ >+ rm -f $$temp; \ >+ fi; \ >+ else \ >+ : ; \ >+ fi >+ if test "$(PACKAGE)" = "gettext"; then \ >+ for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ >+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ >+ done; \ >+ else \ >+ : ; \ >+ fi >+ >+info dvi: >+ >+$(OBJECTS): ../config.h libgnuintl.h >+bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: gettextP.h gmo.h loadinfo.h >+dcigettext.$lo: hash-string.h >+explodename.$lo l10nflist.$lo: loadinfo.h >+dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: plural-exp.h >+dcigettext.$lo: eval-plural.h >+ >+tags: TAGS >+ >+TAGS: $(HEADERS) $(SOURCES) >+ here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) >+ >+id: ID >+ >+ID: $(HEADERS) $(SOURCES) >+ here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) >+ >+ >+mostlyclean: >+ rm -f *.a *.la *.o *.lo core core.* >+ rm -f libintl.h charset.alias ref-add.sed ref-del.sed >+ rm -f -r .libs _libs >+ >+clean: mostlyclean >+ >+distclean: clean >+ rm -f Makefile ID TAGS >+ if test "$(PACKAGE)" = gettext; then \ >+ rm -f ChangeLog.inst $(DISTFILES.normal); \ >+ else \ >+ : ; \ >+ fi >+ >+maintainer-clean: distclean >+ @echo "This command is intended for maintainers to use;" >+ @echo "it deletes files that may require special tools to rebuild." >+ >+ >+# GNU gettext needs not contain the file `VERSION' but contains some >+# other files which should not be distributed in other packages. >+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) >+dist distdir: Makefile >+ if test "$(PACKAGE)" = gettext; then \ >+ additional="$(DISTFILES.gettext)"; \ >+ else \ >+ additional="$(DISTFILES.normal)"; \ >+ fi; \ >+ $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ >+ for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ >+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ >+ cp -p $$dir/$$file $(distdir); \ >+ done >+ >+Makefile: Makefile.in ../config.status >+ cd .. \ >+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status >+ >+# Tell versions [3.59,3.63) of GNU make not to export all variables. >+# Otherwise a system limit (for SysV at least) may be exceeded. >+.NOEXPORT: >diff -Naupr hercules-3.05/intl/ngettext.c hercules-20070717/intl/ngettext.c >--- hercules-3.05/intl/ngettext.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/ngettext.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,68 @@ >+/* Implementation of ngettext(3) function. >+ Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#ifdef _LIBC >+# define __need_NULL >+# include <stddef.h> >+#else >+# include <stdlib.h> /* Just for NULL. */ >+#endif >+ >+#include "gettextP.h" >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+ >+#include <locale.h> >+ >+/* @@ end of prolog @@ */ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define NGETTEXT __ngettext >+# define DCNGETTEXT INTUSE(__dcngettext) >+#else >+# define NGETTEXT libintl_ngettext >+# define DCNGETTEXT libintl_dcngettext >+#endif >+ >+/* Look up MSGID in the current default message catalog for the current >+ LC_MESSAGES locale. If not found, returns MSGID itself (the default >+ text). */ >+char * >+NGETTEXT (msgid1, msgid2, n) >+ const char *msgid1; >+ const char *msgid2; >+ unsigned long int n; >+{ >+ return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+weak_alias (__ngettext, ngettext); >+#endif >diff -Naupr hercules-3.05/intl/os2compat.c hercules-20070717/intl/os2compat.c >--- hercules-3.05/intl/os2compat.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/os2compat.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,98 @@ >+/* OS/2 compatibility functions. >+ Copyright (C) 2001-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#define OS2_AWARE >+#ifdef HAVE_CONFIG_H >+#include <config.h> >+#endif >+ >+#include <stdlib.h> >+#include <string.h> >+#include <sys/param.h> >+ >+/* A version of getenv() that works from DLLs */ >+extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); >+ >+char * >+_nl_getenv (const char *name) >+{ >+ unsigned char *value; >+ if (DosScanEnv (name, &value)) >+ return NULL; >+ else >+ return value; >+} >+ >+/* A fixed size buffer. */ >+char libintl_nl_default_dirname[MAXPATHLEN+1]; >+ >+char *_nlos2_libdir = NULL; >+char *_nlos2_localealiaspath = NULL; >+char *_nlos2_localedir = NULL; >+ >+static __attribute__((constructor)) void >+nlos2_initialize () >+{ >+ char *root = getenv ("UNIXROOT"); >+ char *gnulocaledir = getenv ("GNULOCALEDIR"); >+ >+ _nlos2_libdir = gnulocaledir; >+ if (!_nlos2_libdir) >+ { >+ if (root) >+ { >+ size_t sl = strlen (root); >+ _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); >+ memcpy (_nlos2_libdir, root, sl); >+ memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); >+ } >+ else >+ _nlos2_libdir = LIBDIR; >+ } >+ >+ _nlos2_localealiaspath = gnulocaledir; >+ if (!_nlos2_localealiaspath) >+ { >+ if (root) >+ { >+ size_t sl = strlen (root); >+ _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); >+ memcpy (_nlos2_localealiaspath, root, sl); >+ memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); >+ } >+ else >+ _nlos2_localealiaspath = LOCALE_ALIAS_PATH; >+ } >+ >+ _nlos2_localedir = gnulocaledir; >+ if (!_nlos2_localedir) >+ { >+ if (root) >+ { >+ size_t sl = strlen (root); >+ _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); >+ memcpy (_nlos2_localedir, root, sl); >+ memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); >+ } >+ else >+ _nlos2_localedir = LOCALEDIR; >+ } >+ >+ if (strlen (_nlos2_localedir) <= MAXPATHLEN) >+ strcpy (libintl_nl_default_dirname, _nlos2_localedir); >+} >diff -Naupr hercules-3.05/intl/os2compat.h hercules-20070717/intl/os2compat.h >--- hercules-3.05/intl/os2compat.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/os2compat.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,46 @@ >+/* OS/2 compatibility defines. >+ This file is intended to be included from config.h >+ Copyright (C) 2001-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* When included from os2compat.h we need all the original definitions */ >+#ifndef OS2_AWARE >+ >+#undef LIBDIR >+#define LIBDIR _nlos2_libdir >+extern char *_nlos2_libdir; >+ >+#undef LOCALEDIR >+#define LOCALEDIR _nlos2_localedir >+extern char *_nlos2_localedir; >+ >+#undef LOCALE_ALIAS_PATH >+#define LOCALE_ALIAS_PATH _nlos2_localealiaspath >+extern char *_nlos2_localealiaspath; >+ >+#endif >+ >+#undef HAVE_STRCASECMP >+#define HAVE_STRCASECMP 1 >+#define strcasecmp stricmp >+#define strncasecmp strnicmp >+ >+/* We have our own getenv() which works even if library is compiled as DLL */ >+#define getenv _nl_getenv >+ >+/* Older versions of gettext used -1 as the value of LC_MESSAGES */ >+#define LC_MESSAGES_COMPAT (-1) >diff -Naupr hercules-3.05/intl/osdep.c hercules-20070717/intl/osdep.c >--- hercules-3.05/intl/osdep.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/osdep.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,24 @@ >+/* OS dependent parts of libintl. >+ Copyright (C) 2001-2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#if defined __EMX__ >+# include "os2compat.c" >+#else >+/* Avoid AIX compiler warning. */ >+typedef int dummy; >+#endif >diff -Naupr hercules-3.05/intl/plural.c hercules-20070717/intl/plural.c >--- hercules-3.05/intl/plural.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/plural.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,1322 @@ >+ >+/* A Bison parser, made from plural.y >+ by GNU Bison version 1.28 */ >+ >+#define YYBISON 1 /* Identify Bison output. */ >+ >+#define yyparse __gettextparse >+#define yylex __gettextlex >+#define yyerror __gettexterror >+#define yylval __gettextlval >+#define yychar __gettextchar >+#define yydebug __gettextdebug >+#define yynerrs __gettextnerrs >+#define EQUOP2 257 >+#define CMPOP2 258 >+#define ADDOP2 259 >+#define MULOP2 260 >+#define NUMBER 261 >+ >+#line 1 "plural.y" >+ >+/* Expression parsing for plural form selection. >+ Copyright (C) 2000, 2001 Free Software Foundation, Inc. >+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* The bison generated parser uses alloca. AIX 3 forces us to put this >+ declaration at the beginning of the file. The declaration in bison's >+ skeleton file comes too late. This must come before <config.h> >+ because <config.h> may include arbitrary system headers. */ >+#if defined _AIX && !defined __GNUC__ >+ #pragma alloca >+#endif >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stddef.h> >+#include <stdlib.h> >+#include "plural-exp.h" >+ >+/* The main function generated by the parser is called __gettextparse, >+ but we want it to be called PLURAL_PARSE. */ >+#ifndef _LIBC >+# define __gettextparse PLURAL_PARSE >+#endif >+ >+#define YYLEX_PARAM &((struct parse_args *) arg)->cp >+#define YYPARSE_PARAM arg >+ >+#line 49 "plural.y" >+typedef union { >+ unsigned long int num; >+ enum operator op; >+ struct expression *exp; >+} YYSTYPE; >+#line 55 "plural.y" >+ >+/* Prototypes for local functions. */ >+static struct expression *new_exp PARAMS ((int nargs, enum operator op, >+ struct expression * const *args)); >+static inline struct expression *new_exp_0 PARAMS ((enum operator op)); >+static inline struct expression *new_exp_1 PARAMS ((enum operator op, >+ struct expression *right)); >+static struct expression *new_exp_2 PARAMS ((enum operator op, >+ struct expression *left, >+ struct expression *right)); >+static inline struct expression *new_exp_3 PARAMS ((enum operator op, >+ struct expression *bexp, >+ struct expression *tbranch, >+ struct expression *fbranch)); >+static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); >+static void yyerror PARAMS ((const char *str)); >+ >+/* Allocation of expressions. */ >+ >+static struct expression * >+new_exp (nargs, op, args) >+ int nargs; >+ enum operator op; >+ struct expression * const *args; >+{ >+ int i; >+ struct expression *newp; >+ >+ /* If any of the argument could not be malloc'ed, just return NULL. */ >+ for (i = nargs - 1; i >= 0; i--) >+ if (args[i] == NULL) >+ goto fail; >+ >+ /* Allocate a new expression. */ >+ newp = (struct expression *) malloc (sizeof (*newp)); >+ if (newp != NULL) >+ { >+ newp->nargs = nargs; >+ newp->operation = op; >+ for (i = nargs - 1; i >= 0; i--) >+ newp->val.args[i] = args[i]; >+ return newp; >+ } >+ >+ fail: >+ for (i = nargs - 1; i >= 0; i--) >+ FREE_EXPRESSION (args[i]); >+ >+ return NULL; >+} >+ >+static inline struct expression * >+new_exp_0 (op) >+ enum operator op; >+{ >+ return new_exp (0, op, NULL); >+} >+ >+static inline struct expression * >+new_exp_1 (op, right) >+ enum operator op; >+ struct expression *right; >+{ >+ struct expression *args[1]; >+ >+ args[0] = right; >+ return new_exp (1, op, args); >+} >+ >+static struct expression * >+new_exp_2 (op, left, right) >+ enum operator op; >+ struct expression *left; >+ struct expression *right; >+{ >+ struct expression *args[2]; >+ >+ args[0] = left; >+ args[1] = right; >+ return new_exp (2, op, args); >+} >+ >+static inline struct expression * >+new_exp_3 (op, bexp, tbranch, fbranch) >+ enum operator op; >+ struct expression *bexp; >+ struct expression *tbranch; >+ struct expression *fbranch; >+{ >+ struct expression *args[3]; >+ >+ args[0] = bexp; >+ args[1] = tbranch; >+ args[2] = fbranch; >+ return new_exp (3, op, args); >+} >+ >+#include <stdio.h> >+ >+#ifndef __cplusplus >+#ifndef __STDC__ >+#define const >+#endif >+#endif >+ >+ >+ >+#define YYFINAL 27 >+#define YYFLAG -32768 >+#define YYNTBASE 16 >+ >+#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18) >+ >+static const char yytranslate[] = { 0, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 10, 2, 2, 2, 2, 5, 2, 14, >+ 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 12, 2, 2, >+ 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >+ 2, 2, 2, 2, 2, 1, 6, 7, 8, 9, >+ 11 >+}; >+ >+#if YYDEBUG != 0 >+static const short yyprhs[] = { 0, >+ 0, 2, 8, 12, 16, 20, 24, 28, 32, 35, >+ 37, 39 >+}; >+ >+static const short yyrhs[] = { 17, >+ 0, 17, 3, 17, 12, 17, 0, 17, 4, 17, >+ 0, 17, 5, 17, 0, 17, 6, 17, 0, 17, >+ 7, 17, 0, 17, 8, 17, 0, 17, 9, 17, >+ 0, 10, 17, 0, 13, 0, 11, 0, 14, 17, >+ 15, 0 >+}; >+ >+#endif >+ >+#if YYDEBUG != 0 >+static const short yyrline[] = { 0, >+ 174, 182, 186, 190, 194, 198, 202, 206, 210, 214, >+ 218, 223 >+}; >+#endif >+ >+ >+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) >+ >+static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'", >+"'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'", >+"start","exp", NULL >+}; >+#endif >+ >+static const short yyr1[] = { 0, >+ 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, >+ 17, 17 >+}; >+ >+static const short yyr2[] = { 0, >+ 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, >+ 1, 3 >+}; >+ >+static const short yydefact[] = { 0, >+ 0, 11, 10, 0, 1, 9, 0, 0, 0, 0, >+ 0, 0, 0, 0, 12, 0, 3, 4, 5, 6, >+ 7, 8, 0, 2, 0, 0, 0 >+}; >+ >+static const short yydefgoto[] = { 25, >+ 5 >+}; >+ >+static const short yypact[] = { -9, >+ -9,-32768,-32768, -9, 34,-32768, 11, -9, -9, -9, >+ -9, -9, -9, -9,-32768, 24, 39, 43, 16, 26, >+ -3,-32768, -9, 34, 21, 53,-32768 >+}; >+ >+static const short yypgoto[] = {-32768, >+ -1 >+}; >+ >+ >+#define YYLAST 53 >+ >+ >+static const short yytable[] = { 6, >+ 1, 2, 7, 3, 4, 14, 16, 17, 18, 19, >+ 20, 21, 22, 8, 9, 10, 11, 12, 13, 14, >+ 26, 24, 12, 13, 14, 15, 8, 9, 10, 11, >+ 12, 13, 14, 13, 14, 23, 8, 9, 10, 11, >+ 12, 13, 14, 10, 11, 12, 13, 14, 11, 12, >+ 13, 14, 27 >+}; >+ >+static const short yycheck[] = { 1, >+ 10, 11, 4, 13, 14, 9, 8, 9, 10, 11, >+ 12, 13, 14, 3, 4, 5, 6, 7, 8, 9, >+ 0, 23, 7, 8, 9, 15, 3, 4, 5, 6, >+ 7, 8, 9, 8, 9, 12, 3, 4, 5, 6, >+ 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, >+ 8, 9, 0 >+}; >+#define YYPURE 1 >+ >+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ >+#line 3 "/usr/local/share/bison.simple" >+/* This file comes from bison-1.28. */ >+ >+/* Skeleton output parser for bison, >+ Copyright (C) 1984, 1989, 1990 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 >+ the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+ GNU General Public License for more details. >+ >+ You should have received a copy of the GNU General Public License >+ along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, >+ Boston, MA 02111-1307, USA. */ >+ >+/* As a special exception, when this file is copied by Bison into a >+ Bison output file, you may use that output file without restriction. >+ This special exception was added by the Free Software Foundation >+ in version 1.24 of Bison. */ >+ >+/* This is the parser code that is written into each bison parser >+ when the %semantic_parser declaration is not specified in the grammar. >+ It was written by Richard Stallman by simplifying the hairy parser >+ used when %semantic_parser is specified. */ >+ >+#ifndef YYSTACK_USE_ALLOCA >+#ifdef alloca >+#define YYSTACK_USE_ALLOCA >+#else /* alloca not defined */ >+#ifdef __GNUC__ >+#define YYSTACK_USE_ALLOCA >+#define alloca __builtin_alloca >+#else /* not GNU C. */ >+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) >+#define YYSTACK_USE_ALLOCA >+#include <alloca.h> >+#else /* not sparc */ >+/* We think this test detects Watcom and Microsoft C. */ >+/* This used to test MSDOS, but that is a bad idea >+ since that symbol is in the user namespace. */ >+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) >+#if 0 /* No need for malloc.h, which pollutes the namespace; >+ instead, just don't use alloca. */ >+#include <malloc.h> >+#endif >+#else /* not MSDOS, or __TURBOC__ */ >+#if defined(_AIX) >+/* I don't know what this was needed for, but it pollutes the namespace. >+ So I turned it off. rms, 2 May 1997. */ >+/* #include <malloc.h> */ >+ #pragma alloca >+#define YYSTACK_USE_ALLOCA >+#else /* not MSDOS, or __TURBOC__, or _AIX */ >+#if 0 >+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, >+ and on HPUX 10. Eventually we can turn this on. */ >+#define YYSTACK_USE_ALLOCA >+#define alloca __builtin_alloca >+#endif /* __hpux */ >+#endif >+#endif /* not _AIX */ >+#endif /* not MSDOS, or __TURBOC__ */ >+#endif /* not sparc */ >+#endif /* not GNU C */ >+#endif /* alloca not defined */ >+#endif /* YYSTACK_USE_ALLOCA not defined */ >+ >+#ifdef YYSTACK_USE_ALLOCA >+#define YYSTACK_ALLOC alloca >+#else >+#define YYSTACK_ALLOC malloc >+#endif >+ >+/* Note: there must be only one dollar sign in this file. >+ It is replaced by the list of actions, each action >+ as one case of the switch. */ >+ >+#define yyerrok (yyerrstatus = 0) >+#define yyclearin (yychar = YYEMPTY) >+#define YYEMPTY -2 >+#define YYEOF 0 >+#define YYACCEPT goto yyacceptlab >+#define YYABORT goto yyabortlab >+#define YYERROR goto yyerrlab1 >+/* Like YYERROR except do call yyerror. >+ This remains here temporarily to ease the >+ transition to the new meaning of YYERROR, for GCC. >+ Once GCC version 2 has supplanted version 1, this can go. */ >+#define YYFAIL goto yyerrlab >+#define YYRECOVERING() (!!yyerrstatus) >+#define YYBACKUP(token, value) \ >+do \ >+ if (yychar == YYEMPTY && yylen == 1) \ >+ { yychar = (token), yylval = (value); \ >+ yychar1 = YYTRANSLATE (yychar); \ >+ YYPOPSTACK; \ >+ goto yybackup; \ >+ } \ >+ else \ >+ { yyerror ("syntax error: cannot back up"); YYERROR; } \ >+while (0) >+ >+#define YYTERROR 1 >+#define YYERRCODE 256 >+ >+#ifndef YYPURE >+#define YYLEX yylex() >+#endif >+ >+#ifdef YYPURE >+#ifdef YYLSP_NEEDED >+#ifdef YYLEX_PARAM >+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) >+#else >+#define YYLEX yylex(&yylval, &yylloc) >+#endif >+#else /* not YYLSP_NEEDED */ >+#ifdef YYLEX_PARAM >+#define YYLEX yylex(&yylval, YYLEX_PARAM) >+#else >+#define YYLEX yylex(&yylval) >+#endif >+#endif /* not YYLSP_NEEDED */ >+#endif >+ >+/* If nonreentrant, generate the variables here */ >+ >+#ifndef YYPURE >+ >+int yychar; /* the lookahead symbol */ >+YYSTYPE yylval; /* the semantic value of the */ >+ /* lookahead symbol */ >+ >+#ifdef YYLSP_NEEDED >+YYLTYPE yylloc; /* location data for the lookahead */ >+ /* symbol */ >+#endif >+ >+int yynerrs; /* number of parse errors so far */ >+#endif /* not YYPURE */ >+ >+#if YYDEBUG != 0 >+int yydebug; /* nonzero means print parse trace */ >+/* Since this is uninitialized, it does not stop multiple parsers >+ from coexisting. */ >+#endif >+ >+/* YYINITDEPTH indicates the initial size of the parser's stacks */ >+ >+#ifndef YYINITDEPTH >+#define YYINITDEPTH 200 >+#endif >+ >+/* YYMAXDEPTH is the maximum size the stacks can grow to >+ (effective only if the built-in stack extension method is used). */ >+ >+#if YYMAXDEPTH == 0 >+#undef YYMAXDEPTH >+#endif >+ >+#ifndef YYMAXDEPTH >+#define YYMAXDEPTH 10000 >+#endif >+ >+/* Define __yy_memcpy. Note that the size argument >+ should be passed with type unsigned int, because that is what the non-GCC >+ definitions require. With GCC, __builtin_memcpy takes an arg >+ of type size_t, but it can handle unsigned int. */ >+ >+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ >+#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) >+#else /* not GNU C or C++ */ >+#ifndef __cplusplus >+ >+/* This is the most reliable way to avoid incompatibilities >+ in available built-in functions on various systems. */ >+static void >+__yy_memcpy (to, from, count) >+ char *to; >+ char *from; >+ unsigned int count; >+{ >+ register char *f = from; >+ register char *t = to; >+ register int i = count; >+ >+ while (i-- > 0) >+ *t++ = *f++; >+} >+ >+#else /* __cplusplus */ >+ >+/* This is the most reliable way to avoid incompatibilities >+ in available built-in functions on various systems. */ >+static void >+__yy_memcpy (char *to, char *from, unsigned int count) >+{ >+ register char *t = to; >+ register char *f = from; >+ register int i = count; >+ >+ while (i-- > 0) >+ *t++ = *f++; >+} >+ >+#endif >+#endif >+ >+#line 217 "/usr/local/share/bison.simple" >+ >+/* The user can define YYPARSE_PARAM as the name of an argument to be passed >+ into yyparse. The argument should have type void *. >+ It should actually point to an object. >+ Grammar actions can access the variable by casting it >+ to the proper pointer type. */ >+ >+#ifdef YYPARSE_PARAM >+#ifdef __cplusplus >+#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM >+#define YYPARSE_PARAM_DECL >+#else /* not __cplusplus */ >+#define YYPARSE_PARAM_ARG YYPARSE_PARAM >+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; >+#endif /* not __cplusplus */ >+#else /* not YYPARSE_PARAM */ >+#define YYPARSE_PARAM_ARG >+#define YYPARSE_PARAM_DECL >+#endif /* not YYPARSE_PARAM */ >+ >+/* Prevent warning if -Wstrict-prototypes. */ >+#ifdef __GNUC__ >+#ifdef YYPARSE_PARAM >+int yyparse (void *); >+#else >+int yyparse (void); >+#endif >+#endif >+ >+int >+yyparse(YYPARSE_PARAM_ARG) >+ YYPARSE_PARAM_DECL >+{ >+ register int yystate; >+ register int yyn; >+ register short *yyssp; >+ register YYSTYPE *yyvsp; >+ int yyerrstatus; /* number of tokens to shift before error messages enabled */ >+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */ >+ >+ short yyssa[YYINITDEPTH]; /* the state stack */ >+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ >+ >+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */ >+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ >+ >+#ifdef YYLSP_NEEDED >+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ >+ YYLTYPE *yyls = yylsa; >+ YYLTYPE *yylsp; >+ >+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) >+#else >+#define YYPOPSTACK (yyvsp--, yyssp--) >+#endif >+ >+ int yystacksize = YYINITDEPTH; >+ int yyfree_stacks = 0; >+ >+#ifdef YYPURE >+ int yychar; >+ YYSTYPE yylval; >+ int yynerrs; >+#ifdef YYLSP_NEEDED >+ YYLTYPE yylloc; >+#endif >+#endif >+ >+ YYSTYPE yyval; /* the variable used to return */ >+ /* semantic values from the action */ >+ /* routines */ >+ >+ int yylen; >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Starting parse\n"); >+#endif >+ >+ yystate = 0; >+ yyerrstatus = 0; >+ yynerrs = 0; >+ yychar = YYEMPTY; /* Cause a token to be read. */ >+ >+ /* Initialize stack pointers. >+ Waste one element of value and location stack >+ so that they stay on the same level as the state stack. >+ The wasted elements are never initialized. */ >+ >+ yyssp = yyss - 1; >+ yyvsp = yyvs; >+#ifdef YYLSP_NEEDED >+ yylsp = yyls; >+#endif >+ >+/* Push a new state, which is found in yystate . */ >+/* In all cases, when you get here, the value and location stacks >+ have just been pushed. so pushing a state here evens the stacks. */ >+yynewstate: >+ >+ *++yyssp = yystate; >+ >+ if (yyssp >= yyss + yystacksize - 1) >+ { >+ /* Give user a chance to reallocate the stack */ >+ /* Use copies of these so that the &'s don't force the real ones into memory. */ >+ YYSTYPE *yyvs1 = yyvs; >+ short *yyss1 = yyss; >+#ifdef YYLSP_NEEDED >+ YYLTYPE *yyls1 = yyls; >+#endif >+ >+ /* Get the current used size of the three stacks, in elements. */ >+ int size = yyssp - yyss + 1; >+ >+#ifdef yyoverflow >+ /* Each stack pointer address is followed by the size of >+ the data in use in that stack, in bytes. */ >+#ifdef YYLSP_NEEDED >+ /* This used to be a conditional around just the two extra args, >+ but that might be undefined if yyoverflow is a macro. */ >+ yyoverflow("parser stack overflow", >+ &yyss1, size * sizeof (*yyssp), >+ &yyvs1, size * sizeof (*yyvsp), >+ &yyls1, size * sizeof (*yylsp), >+ &yystacksize); >+#else >+ yyoverflow("parser stack overflow", >+ &yyss1, size * sizeof (*yyssp), >+ &yyvs1, size * sizeof (*yyvsp), >+ &yystacksize); >+#endif >+ >+ yyss = yyss1; yyvs = yyvs1; >+#ifdef YYLSP_NEEDED >+ yyls = yyls1; >+#endif >+#else /* no yyoverflow */ >+ /* Extend the stack our own way. */ >+ if (yystacksize >= YYMAXDEPTH) >+ { >+ yyerror("parser stack overflow"); >+ if (yyfree_stacks) >+ { >+ free (yyss); >+ free (yyvs); >+#ifdef YYLSP_NEEDED >+ free (yyls); >+#endif >+ } >+ return 2; >+ } >+ yystacksize *= 2; >+ if (yystacksize > YYMAXDEPTH) >+ yystacksize = YYMAXDEPTH; >+#ifndef YYSTACK_USE_ALLOCA >+ yyfree_stacks = 1; >+#endif >+ yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); >+ __yy_memcpy ((char *)yyss, (char *)yyss1, >+ size * (unsigned int) sizeof (*yyssp)); >+ yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); >+ __yy_memcpy ((char *)yyvs, (char *)yyvs1, >+ size * (unsigned int) sizeof (*yyvsp)); >+#ifdef YYLSP_NEEDED >+ yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); >+ __yy_memcpy ((char *)yyls, (char *)yyls1, >+ size * (unsigned int) sizeof (*yylsp)); >+#endif >+#endif /* no yyoverflow */ >+ >+ yyssp = yyss + size - 1; >+ yyvsp = yyvs + size - 1; >+#ifdef YYLSP_NEEDED >+ yylsp = yyls + size - 1; >+#endif >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Stack size increased to %d\n", yystacksize); >+#endif >+ >+ if (yyssp >= yyss + yystacksize - 1) >+ YYABORT; >+ } >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Entering state %d\n", yystate); >+#endif >+ >+ goto yybackup; >+ yybackup: >+ >+/* Do appropriate processing given the current state. */ >+/* Read a lookahead token if we need one and don't already have one. */ >+/* yyresume: */ >+ >+ /* First try to decide what to do without reference to lookahead token. */ >+ >+ yyn = yypact[yystate]; >+ if (yyn == YYFLAG) >+ goto yydefault; >+ >+ /* Not known => get a lookahead token if don't already have one. */ >+ >+ /* yychar is either YYEMPTY or YYEOF >+ or a valid token in external form. */ >+ >+ if (yychar == YYEMPTY) >+ { >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Reading a token: "); >+#endif >+ yychar = YYLEX; >+ } >+ >+ /* Convert token to internal form (in yychar1) for indexing tables with */ >+ >+ if (yychar <= 0) /* This means end of input. */ >+ { >+ yychar1 = 0; >+ yychar = YYEOF; /* Don't call YYLEX any more */ >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Now at end of input.\n"); >+#endif >+ } >+ else >+ { >+ yychar1 = YYTRANSLATE(yychar); >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ { >+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); >+ /* Give the individual parser a way to print the precise meaning >+ of a token, for further debugging info. */ >+#ifdef YYPRINT >+ YYPRINT (stderr, yychar, yylval); >+#endif >+ fprintf (stderr, ")\n"); >+ } >+#endif >+ } >+ >+ yyn += yychar1; >+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) >+ goto yydefault; >+ >+ yyn = yytable[yyn]; >+ >+ /* yyn is what to do for this token type in this state. >+ Negative => reduce, -yyn is rule number. >+ Positive => shift, yyn is new state. >+ New state is final state => don't bother to shift, >+ just return success. >+ 0, or most negative number => error. */ >+ >+ if (yyn < 0) >+ { >+ if (yyn == YYFLAG) >+ goto yyerrlab; >+ yyn = -yyn; >+ goto yyreduce; >+ } >+ else if (yyn == 0) >+ goto yyerrlab; >+ >+ if (yyn == YYFINAL) >+ YYACCEPT; >+ >+ /* Shift the lookahead token. */ >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); >+#endif >+ >+ /* Discard the token being shifted unless it is eof. */ >+ if (yychar != YYEOF) >+ yychar = YYEMPTY; >+ >+ *++yyvsp = yylval; >+#ifdef YYLSP_NEEDED >+ *++yylsp = yylloc; >+#endif >+ >+ /* count tokens shifted since error; after three, turn off error status. */ >+ if (yyerrstatus) yyerrstatus--; >+ >+ yystate = yyn; >+ goto yynewstate; >+ >+/* Do the default action for the current state. */ >+yydefault: >+ >+ yyn = yydefact[yystate]; >+ if (yyn == 0) >+ goto yyerrlab; >+ >+/* Do a reduction. yyn is the number of a rule to reduce with. */ >+yyreduce: >+ yylen = yyr2[yyn]; >+ if (yylen > 0) >+ yyval = yyvsp[1-yylen]; /* implement default value of the action */ >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ { >+ int i; >+ >+ fprintf (stderr, "Reducing via rule %d (line %d), ", >+ yyn, yyrline[yyn]); >+ >+ /* Print the symbols being reduced, and their result. */ >+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) >+ fprintf (stderr, "%s ", yytname[yyrhs[i]]); >+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); >+ } >+#endif >+ >+ >+ switch (yyn) { >+ >+case 1: >+#line 175 "plural.y" >+{ >+ if (yyvsp[0].exp == NULL) >+ YYABORT; >+ ((struct parse_args *) arg)->res = yyvsp[0].exp; >+ ; >+ break;} >+case 2: >+#line 183 "plural.y" >+{ >+ yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 3: >+#line 187 "plural.y" >+{ >+ yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 4: >+#line 191 "plural.y" >+{ >+ yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 5: >+#line 195 "plural.y" >+{ >+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 6: >+#line 199 "plural.y" >+{ >+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 7: >+#line 203 "plural.y" >+{ >+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 8: >+#line 207 "plural.y" >+{ >+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); >+ ; >+ break;} >+case 9: >+#line 211 "plural.y" >+{ >+ yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); >+ ; >+ break;} >+case 10: >+#line 215 "plural.y" >+{ >+ yyval.exp = new_exp_0 (var); >+ ; >+ break;} >+case 11: >+#line 219 "plural.y" >+{ >+ if ((yyval.exp = new_exp_0 (num)) != NULL) >+ yyval.exp->val.num = yyvsp[0].num; >+ ; >+ break;} >+case 12: >+#line 224 "plural.y" >+{ >+ yyval.exp = yyvsp[-1].exp; >+ ; >+ break;} >+} >+ /* the action file gets copied in in place of this dollarsign */ >+#line 543 "/usr/local/share/bison.simple" >+ >+ yyvsp -= yylen; >+ yyssp -= yylen; >+#ifdef YYLSP_NEEDED >+ yylsp -= yylen; >+#endif >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ { >+ short *ssp1 = yyss - 1; >+ fprintf (stderr, "state stack now"); >+ while (ssp1 != yyssp) >+ fprintf (stderr, " %d", *++ssp1); >+ fprintf (stderr, "\n"); >+ } >+#endif >+ >+ *++yyvsp = yyval; >+ >+#ifdef YYLSP_NEEDED >+ yylsp++; >+ if (yylen == 0) >+ { >+ yylsp->first_line = yylloc.first_line; >+ yylsp->first_column = yylloc.first_column; >+ yylsp->last_line = (yylsp-1)->last_line; >+ yylsp->last_column = (yylsp-1)->last_column; >+ yylsp->text = 0; >+ } >+ else >+ { >+ yylsp->last_line = (yylsp+yylen-1)->last_line; >+ yylsp->last_column = (yylsp+yylen-1)->last_column; >+ } >+#endif >+ >+ /* Now "shift" the result of the reduction. >+ Determine what state that goes to, >+ based on the state we popped back to >+ and the rule number reduced by. */ >+ >+ yyn = yyr1[yyn]; >+ >+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp; >+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) >+ yystate = yytable[yystate]; >+ else >+ yystate = yydefgoto[yyn - YYNTBASE]; >+ >+ goto yynewstate; >+ >+yyerrlab: /* here on detecting error */ >+ >+ if (! yyerrstatus) >+ /* If not already recovering from an error, report this error. */ >+ { >+ ++yynerrs; >+ >+#ifdef YYERROR_VERBOSE >+ yyn = yypact[yystate]; >+ >+ if (yyn > YYFLAG && yyn < YYLAST) >+ { >+ int size = 0; >+ char *msg; >+ int x, count; >+ >+ count = 0; >+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ >+ for (x = (yyn < 0 ? -yyn : 0); >+ x < (sizeof(yytname) / sizeof(char *)); x++) >+ if (yycheck[x + yyn] == x) >+ size += strlen(yytname[x]) + 15, count++; >+ msg = (char *) malloc(size + 15); >+ if (msg != 0) >+ { >+ strcpy(msg, "parse error"); >+ >+ if (count < 5) >+ { >+ count = 0; >+ for (x = (yyn < 0 ? -yyn : 0); >+ x < (sizeof(yytname) / sizeof(char *)); x++) >+ if (yycheck[x + yyn] == x) >+ { >+ strcat(msg, count == 0 ? ", expecting `" : " or `"); >+ strcat(msg, yytname[x]); >+ strcat(msg, "'"); >+ count++; >+ } >+ } >+ yyerror(msg); >+ free(msg); >+ } >+ else >+ yyerror ("parse error; also virtual memory exceeded"); >+ } >+ else >+#endif /* YYERROR_VERBOSE */ >+ yyerror("parse error"); >+ } >+ >+ goto yyerrlab1; >+yyerrlab1: /* here on error raised explicitly by an action */ >+ >+ if (yyerrstatus == 3) >+ { >+ /* if just tried and failed to reuse lookahead token after an error, discard it. */ >+ >+ /* return failure if at end of input */ >+ if (yychar == YYEOF) >+ YYABORT; >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); >+#endif >+ >+ yychar = YYEMPTY; >+ } >+ >+ /* Else will try to reuse lookahead token >+ after shifting the error token. */ >+ >+ yyerrstatus = 3; /* Each real token shifted decrements this */ >+ >+ goto yyerrhandle; >+ >+yyerrdefault: /* current state does not do anything special for the error token. */ >+ >+#if 0 >+ /* This is wrong; only states that explicitly want error tokens >+ should shift them. */ >+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ >+ if (yyn) goto yydefault; >+#endif >+ >+yyerrpop: /* pop the current state because it cannot handle the error token */ >+ >+ if (yyssp == yyss) YYABORT; >+ yyvsp--; >+ yystate = *--yyssp; >+#ifdef YYLSP_NEEDED >+ yylsp--; >+#endif >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ { >+ short *ssp1 = yyss - 1; >+ fprintf (stderr, "Error: state stack now"); >+ while (ssp1 != yyssp) >+ fprintf (stderr, " %d", *++ssp1); >+ fprintf (stderr, "\n"); >+ } >+#endif >+ >+yyerrhandle: >+ >+ yyn = yypact[yystate]; >+ if (yyn == YYFLAG) >+ goto yyerrdefault; >+ >+ yyn += YYTERROR; >+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) >+ goto yyerrdefault; >+ >+ yyn = yytable[yyn]; >+ if (yyn < 0) >+ { >+ if (yyn == YYFLAG) >+ goto yyerrpop; >+ yyn = -yyn; >+ goto yyreduce; >+ } >+ else if (yyn == 0) >+ goto yyerrpop; >+ >+ if (yyn == YYFINAL) >+ YYACCEPT; >+ >+#if YYDEBUG != 0 >+ if (yydebug) >+ fprintf(stderr, "Shifting error token, "); >+#endif >+ >+ *++yyvsp = yylval; >+#ifdef YYLSP_NEEDED >+ *++yylsp = yylloc; >+#endif >+ >+ yystate = yyn; >+ goto yynewstate; >+ >+ yyacceptlab: >+ /* YYACCEPT comes here. */ >+ if (yyfree_stacks) >+ { >+ free (yyss); >+ free (yyvs); >+#ifdef YYLSP_NEEDED >+ free (yyls); >+#endif >+ } >+ return 0; >+ >+ yyabortlab: >+ /* YYABORT comes here. */ >+ if (yyfree_stacks) >+ { >+ free (yyss); >+ free (yyvs); >+#ifdef YYLSP_NEEDED >+ free (yyls); >+#endif >+ } >+ return 1; >+} >+#line 229 "plural.y" >+ >+ >+void >+internal_function >+FREE_EXPRESSION (exp) >+ struct expression *exp; >+{ >+ if (exp == NULL) >+ return; >+ >+ /* Handle the recursive case. */ >+ switch (exp->nargs) >+ { >+ case 3: >+ FREE_EXPRESSION (exp->val.args[2]); >+ /* FALLTHROUGH */ >+ case 2: >+ FREE_EXPRESSION (exp->val.args[1]); >+ /* FALLTHROUGH */ >+ case 1: >+ FREE_EXPRESSION (exp->val.args[0]); >+ /* FALLTHROUGH */ >+ default: >+ break; >+ } >+ >+ free (exp); >+} >+ >+ >+static int >+yylex (lval, pexp) >+ YYSTYPE *lval; >+ const char **pexp; >+{ >+ const char *exp = *pexp; >+ int result; >+ >+ while (1) >+ { >+ if (exp[0] == '\0') >+ { >+ *pexp = exp; >+ return YYEOF; >+ } >+ >+ if (exp[0] != ' ' && exp[0] != '\t') >+ break; >+ >+ ++exp; >+ } >+ >+ result = *exp++; >+ switch (result) >+ { >+ case '0': case '1': case '2': case '3': case '4': >+ case '5': case '6': case '7': case '8': case '9': >+ { >+ unsigned long int n = result - '0'; >+ while (exp[0] >= '0' && exp[0] <= '9') >+ { >+ n *= 10; >+ n += exp[0] - '0'; >+ ++exp; >+ } >+ lval->num = n; >+ result = NUMBER; >+ } >+ break; >+ >+ case '=': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = equal; >+ result = EQUOP2; >+ } >+ else >+ result = YYERRCODE; >+ break; >+ >+ case '!': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = not_equal; >+ result = EQUOP2; >+ } >+ break; >+ >+ case '&': >+ case '|': >+ if (exp[0] == result) >+ ++exp; >+ else >+ result = YYERRCODE; >+ break; >+ >+ case '<': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = less_or_equal; >+ } >+ else >+ lval->op = less_than; >+ result = CMPOP2; >+ break; >+ >+ case '>': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = greater_or_equal; >+ } >+ else >+ lval->op = greater_than; >+ result = CMPOP2; >+ break; >+ >+ case '*': >+ lval->op = mult; >+ result = MULOP2; >+ break; >+ >+ case '/': >+ lval->op = divide; >+ result = MULOP2; >+ break; >+ >+ case '%': >+ lval->op = module; >+ result = MULOP2; >+ break; >+ >+ case '+': >+ lval->op = plus; >+ result = ADDOP2; >+ break; >+ >+ case '-': >+ lval->op = minus; >+ result = ADDOP2; >+ break; >+ >+ case 'n': >+ case '?': >+ case ':': >+ case '(': >+ case ')': >+ /* Nothing, just return the character. */ >+ break; >+ >+ case ';': >+ case '\n': >+ case '\0': >+ /* Be safe and let the user call this function again. */ >+ --exp; >+ result = YYEOF; >+ break; >+ >+ default: >+ result = YYERRCODE; >+#if YYDEBUG != 0 >+ --exp; >+#endif >+ break; >+ } >+ >+ *pexp = exp; >+ >+ return result; >+} >+ >+ >+static void >+yyerror (str) >+ const char *str; >+{ >+ /* Do nothing. We don't print error messages here. */ >+} >diff -Naupr hercules-3.05/intl/plural-exp.c hercules-20070717/intl/plural-exp.c >--- hercules-3.05/intl/plural-exp.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/plural-exp.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,156 @@ >+/* Expression parsing for plural form selection. >+ Copyright (C) 2000, 2001 Free Software Foundation, Inc. >+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <ctype.h> >+#include <stdlib.h> >+#include <string.h> >+ >+#include "plural-exp.h" >+ >+#if (defined __GNUC__ && !defined __APPLE_CC__) \ >+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) >+ >+/* These structs are the constant expression for the germanic plural >+ form determination. It represents the expression "n != 1". */ >+static const struct expression plvar = >+{ >+ .nargs = 0, >+ .operation = var, >+}; >+static const struct expression plone = >+{ >+ .nargs = 0, >+ .operation = num, >+ .val = >+ { >+ .num = 1 >+ } >+}; >+struct expression GERMANIC_PLURAL = >+{ >+ .nargs = 2, >+ .operation = not_equal, >+ .val = >+ { >+ .args = >+ { >+ [0] = (struct expression *) &plvar, >+ [1] = (struct expression *) &plone >+ } >+ } >+}; >+ >+# define INIT_GERMANIC_PLURAL() >+ >+#else >+ >+/* For compilers without support for ISO C 99 struct/union initializers: >+ Initialization at run-time. */ >+ >+static struct expression plvar; >+static struct expression plone; >+struct expression GERMANIC_PLURAL; >+ >+static void >+init_germanic_plural () >+{ >+ if (plone.val.num == 0) >+ { >+ plvar.nargs = 0; >+ plvar.operation = var; >+ >+ plone.nargs = 0; >+ plone.operation = num; >+ plone.val.num = 1; >+ >+ GERMANIC_PLURAL.nargs = 2; >+ GERMANIC_PLURAL.operation = not_equal; >+ GERMANIC_PLURAL.val.args[0] = &plvar; >+ GERMANIC_PLURAL.val.args[1] = &plone; >+ } >+} >+ >+# define INIT_GERMANIC_PLURAL() init_germanic_plural () >+ >+#endif >+ >+void >+internal_function >+EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp) >+ const char *nullentry; >+ struct expression **pluralp; >+ unsigned long int *npluralsp; >+{ >+ if (nullentry != NULL) >+ { >+ const char *plural; >+ const char *nplurals; >+ >+ plural = strstr (nullentry, "plural="); >+ nplurals = strstr (nullentry, "nplurals="); >+ if (plural == NULL || nplurals == NULL) >+ goto no_plural; >+ else >+ { >+ char *endp; >+ unsigned long int n; >+ struct parse_args args; >+ >+ /* First get the number. */ >+ nplurals += 9; >+ while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) >+ ++nplurals; >+ if (!(*nplurals >= '0' && *nplurals <= '9')) >+ goto no_plural; >+#if defined HAVE_STRTOUL || defined _LIBC >+ n = strtoul (nplurals, &endp, 10); >+#else >+ for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) >+ n = n * 10 + (*endp - '0'); >+#endif >+ if (nplurals == endp) >+ goto no_plural; >+ *npluralsp = n; >+ >+ /* Due to the restrictions bison imposes onto the interface of the >+ scanner function we have to put the input string and the result >+ passed up from the parser into the same structure which address >+ is passed down to the parser. */ >+ plural += 7; >+ args.cp = plural; >+ if (PLURAL_PARSE (&args) != 0) >+ goto no_plural; >+ *pluralp = args.res; >+ } >+ } >+ else >+ { >+ /* By default we are using the Germanic form: singular form only >+ for `one', the plural form otherwise. Yes, this is also what >+ English is using since English is a Germanic language. */ >+ no_plural: >+ INIT_GERMANIC_PLURAL (); >+ *pluralp = &GERMANIC_PLURAL; >+ *npluralsp = 2; >+ } >+} >diff -Naupr hercules-3.05/intl/plural-exp.h hercules-20070717/intl/plural-exp.h >--- hercules-3.05/intl/plural-exp.h 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/plural-exp.h 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,126 @@ >+/* Expression parsing and evaluation for plural form selection. >+ Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. >+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifndef _PLURAL_EXP_H >+#define _PLURAL_EXP_H >+ >+#ifndef PARAMS >+# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES >+# define PARAMS(args) args >+# else >+# define PARAMS(args) () >+# endif >+#endif >+ >+#ifndef internal_function >+# define internal_function >+#endif >+ >+#ifndef attribute_hidden >+# define attribute_hidden >+#endif >+ >+ >+/* This is the representation of the expressions to determine the >+ plural form. */ >+struct expression >+{ >+ int nargs; /* Number of arguments. */ >+ enum operator >+ { >+ /* Without arguments: */ >+ var, /* The variable "n". */ >+ num, /* Decimal number. */ >+ /* Unary operators: */ >+ lnot, /* Logical NOT. */ >+ /* Binary operators: */ >+ mult, /* Multiplication. */ >+ divide, /* Division. */ >+ module, /* Modulo operation. */ >+ plus, /* Addition. */ >+ minus, /* Subtraction. */ >+ less_than, /* Comparison. */ >+ greater_than, /* Comparison. */ >+ less_or_equal, /* Comparison. */ >+ greater_or_equal, /* Comparison. */ >+ equal, /* Comparison for equality. */ >+ not_equal, /* Comparison for inequality. */ >+ land, /* Logical AND. */ >+ lor, /* Logical OR. */ >+ /* Ternary operators: */ >+ qmop /* Question mark operator. */ >+ } operation; >+ union >+ { >+ unsigned long int num; /* Number value for `num'. */ >+ struct expression *args[3]; /* Up to three arguments. */ >+ } val; >+}; >+ >+/* This is the data structure to pass information to the parser and get >+ the result in a thread-safe way. */ >+struct parse_args >+{ >+ const char *cp; >+ struct expression *res; >+}; >+ >+ >+/* Names for the libintl functions are a problem. This source code is used >+ 1. in the GNU C Library library, >+ 2. in the GNU libintl library, >+ 3. in the GNU gettext tools. >+ The function names in each situation must be different, to allow for >+ binary incompatible changes in 'struct expression'. Furthermore, >+ 1. in the GNU C Library library, the names have a __ prefix, >+ 2.+3. in the GNU libintl library and in the GNU gettext tools, the names >+ must follow ANSI C and not start with __. >+ So we have to distinguish the three cases. */ >+#ifdef _LIBC >+# define FREE_EXPRESSION __gettext_free_exp >+# define PLURAL_PARSE __gettextparse >+# define GERMANIC_PLURAL __gettext_germanic_plural >+# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural >+#elif defined (IN_LIBINTL) >+# define FREE_EXPRESSION libintl_gettext_free_exp >+# define PLURAL_PARSE libintl_gettextparse >+# define GERMANIC_PLURAL libintl_gettext_germanic_plural >+# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural >+#else >+# define FREE_EXPRESSION free_plural_expression >+# define PLURAL_PARSE parse_plural_expression >+# define GERMANIC_PLURAL germanic_plural >+# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression >+#endif >+ >+extern void FREE_EXPRESSION PARAMS ((struct expression *exp)) >+ internal_function; >+extern int PLURAL_PARSE PARAMS ((void *arg)); >+extern struct expression GERMANIC_PLURAL attribute_hidden; >+extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry, >+ struct expression **pluralp, >+ unsigned long int *npluralsp)) >+ internal_function; >+ >+#if !defined (_LIBC) && !defined (IN_LIBINTL) >+extern unsigned long int plural_eval PARAMS ((struct expression *pexp, >+ unsigned long int n)); >+#endif >+ >+#endif /* _PLURAL_EXP_H */ >diff -Naupr hercules-3.05/intl/plural.y hercules-20070717/intl/plural.y >--- hercules-3.05/intl/plural.y 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/plural.y 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,409 @@ >+%{ >+/* Expression parsing for plural form selection. >+ Copyright (C) 2000, 2001 Free Software Foundation, Inc. >+ Written by Ulrich Drepper <drepper@cygnus.com>, 2000. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+/* The bison generated parser uses alloca. AIX 3 forces us to put this >+ declaration at the beginning of the file. The declaration in bison's >+ skeleton file comes too late. This must come before <config.h> >+ because <config.h> may include arbitrary system headers. */ >+#if defined _AIX && !defined __GNUC__ >+ #pragma alloca >+#endif >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stddef.h> >+#include <stdlib.h> >+#include "plural-exp.h" >+ >+/* The main function generated by the parser is called __gettextparse, >+ but we want it to be called PLURAL_PARSE. */ >+#ifndef _LIBC >+# define __gettextparse PLURAL_PARSE >+#endif >+ >+#define YYLEX_PARAM &((struct parse_args *) arg)->cp >+#define YYPARSE_PARAM arg >+%} >+%pure_parser >+%expect 7 >+ >+%union { >+ unsigned long int num; >+ enum operator op; >+ struct expression *exp; >+} >+ >+%{ >+/* Prototypes for local functions. */ >+static struct expression *new_exp PARAMS ((int nargs, enum operator op, >+ struct expression * const *args)); >+static inline struct expression *new_exp_0 PARAMS ((enum operator op)); >+static inline struct expression *new_exp_1 PARAMS ((enum operator op, >+ struct expression *right)); >+static struct expression *new_exp_2 PARAMS ((enum operator op, >+ struct expression *left, >+ struct expression *right)); >+static inline struct expression *new_exp_3 PARAMS ((enum operator op, >+ struct expression *bexp, >+ struct expression *tbranch, >+ struct expression *fbranch)); >+static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); >+static void yyerror PARAMS ((const char *str)); >+ >+/* Allocation of expressions. */ >+ >+static struct expression * >+new_exp (nargs, op, args) >+ int nargs; >+ enum operator op; >+ struct expression * const *args; >+{ >+ int i; >+ struct expression *newp; >+ >+ /* If any of the argument could not be malloc'ed, just return NULL. */ >+ for (i = nargs - 1; i >= 0; i--) >+ if (args[i] == NULL) >+ goto fail; >+ >+ /* Allocate a new expression. */ >+ newp = (struct expression *) malloc (sizeof (*newp)); >+ if (newp != NULL) >+ { >+ newp->nargs = nargs; >+ newp->operation = op; >+ for (i = nargs - 1; i >= 0; i--) >+ newp->val.args[i] = args[i]; >+ return newp; >+ } >+ >+ fail: >+ for (i = nargs - 1; i >= 0; i--) >+ FREE_EXPRESSION (args[i]); >+ >+ return NULL; >+} >+ >+static inline struct expression * >+new_exp_0 (op) >+ enum operator op; >+{ >+ return new_exp (0, op, NULL); >+} >+ >+static inline struct expression * >+new_exp_1 (op, right) >+ enum operator op; >+ struct expression *right; >+{ >+ struct expression *args[1]; >+ >+ args[0] = right; >+ return new_exp (1, op, args); >+} >+ >+static struct expression * >+new_exp_2 (op, left, right) >+ enum operator op; >+ struct expression *left; >+ struct expression *right; >+{ >+ struct expression *args[2]; >+ >+ args[0] = left; >+ args[1] = right; >+ return new_exp (2, op, args); >+} >+ >+static inline struct expression * >+new_exp_3 (op, bexp, tbranch, fbranch) >+ enum operator op; >+ struct expression *bexp; >+ struct expression *tbranch; >+ struct expression *fbranch; >+{ >+ struct expression *args[3]; >+ >+ args[0] = bexp; >+ args[1] = tbranch; >+ args[2] = fbranch; >+ return new_exp (3, op, args); >+} >+ >+%} >+ >+/* This declares that all operators have the same associativity and the >+ precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. >+ There is no unary minus and no bitwise operators. >+ Operators with the same syntactic behaviour have been merged into a single >+ token, to save space in the array generated by bison. */ >+%right '?' /* ? */ >+%left '|' /* || */ >+%left '&' /* && */ >+%left EQUOP2 /* == != */ >+%left CMPOP2 /* < > <= >= */ >+%left ADDOP2 /* + - */ >+%left MULOP2 /* * / % */ >+%right '!' /* ! */ >+ >+%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2 >+%token <num> NUMBER >+%type <exp> exp >+ >+%% >+ >+start: exp >+ { >+ if ($1 == NULL) >+ YYABORT; >+ ((struct parse_args *) arg)->res = $1; >+ } >+ ; >+ >+exp: exp '?' exp ':' exp >+ { >+ $$ = new_exp_3 (qmop, $1, $3, $5); >+ } >+ | exp '|' exp >+ { >+ $$ = new_exp_2 (lor, $1, $3); >+ } >+ | exp '&' exp >+ { >+ $$ = new_exp_2 (land, $1, $3); >+ } >+ | exp EQUOP2 exp >+ { >+ $$ = new_exp_2 ($2, $1, $3); >+ } >+ | exp CMPOP2 exp >+ { >+ $$ = new_exp_2 ($2, $1, $3); >+ } >+ | exp ADDOP2 exp >+ { >+ $$ = new_exp_2 ($2, $1, $3); >+ } >+ | exp MULOP2 exp >+ { >+ $$ = new_exp_2 ($2, $1, $3); >+ } >+ | '!' exp >+ { >+ $$ = new_exp_1 (lnot, $2); >+ } >+ | 'n' >+ { >+ $$ = new_exp_0 (var); >+ } >+ | NUMBER >+ { >+ if (($$ = new_exp_0 (num)) != NULL) >+ $$->val.num = $1; >+ } >+ | '(' exp ')' >+ { >+ $$ = $2; >+ } >+ ; >+ >+%% >+ >+void >+internal_function >+FREE_EXPRESSION (exp) >+ struct expression *exp; >+{ >+ if (exp == NULL) >+ return; >+ >+ /* Handle the recursive case. */ >+ switch (exp->nargs) >+ { >+ case 3: >+ FREE_EXPRESSION (exp->val.args[2]); >+ /* FALLTHROUGH */ >+ case 2: >+ FREE_EXPRESSION (exp->val.args[1]); >+ /* FALLTHROUGH */ >+ case 1: >+ FREE_EXPRESSION (exp->val.args[0]); >+ /* FALLTHROUGH */ >+ default: >+ break; >+ } >+ >+ free (exp); >+} >+ >+ >+static int >+yylex (lval, pexp) >+ YYSTYPE *lval; >+ const char **pexp; >+{ >+ const char *exp = *pexp; >+ int result; >+ >+ while (1) >+ { >+ if (exp[0] == '\0') >+ { >+ *pexp = exp; >+ return YYEOF; >+ } >+ >+ if (exp[0] != ' ' && exp[0] != '\t') >+ break; >+ >+ ++exp; >+ } >+ >+ result = *exp++; >+ switch (result) >+ { >+ case '0': case '1': case '2': case '3': case '4': >+ case '5': case '6': case '7': case '8': case '9': >+ { >+ unsigned long int n = result - '0'; >+ while (exp[0] >= '0' && exp[0] <= '9') >+ { >+ n *= 10; >+ n += exp[0] - '0'; >+ ++exp; >+ } >+ lval->num = n; >+ result = NUMBER; >+ } >+ break; >+ >+ case '=': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = equal; >+ result = EQUOP2; >+ } >+ else >+ result = YYERRCODE; >+ break; >+ >+ case '!': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = not_equal; >+ result = EQUOP2; >+ } >+ break; >+ >+ case '&': >+ case '|': >+ if (exp[0] == result) >+ ++exp; >+ else >+ result = YYERRCODE; >+ break; >+ >+ case '<': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = less_or_equal; >+ } >+ else >+ lval->op = less_than; >+ result = CMPOP2; >+ break; >+ >+ case '>': >+ if (exp[0] == '=') >+ { >+ ++exp; >+ lval->op = greater_or_equal; >+ } >+ else >+ lval->op = greater_than; >+ result = CMPOP2; >+ break; >+ >+ case '*': >+ lval->op = mult; >+ result = MULOP2; >+ break; >+ >+ case '/': >+ lval->op = divide; >+ result = MULOP2; >+ break; >+ >+ case '%': >+ lval->op = module; >+ result = MULOP2; >+ break; >+ >+ case '+': >+ lval->op = plus; >+ result = ADDOP2; >+ break; >+ >+ case '-': >+ lval->op = minus; >+ result = ADDOP2; >+ break; >+ >+ case 'n': >+ case '?': >+ case ':': >+ case '(': >+ case ')': >+ /* Nothing, just return the character. */ >+ break; >+ >+ case ';': >+ case '\n': >+ case '\0': >+ /* Be safe and let the user call this function again. */ >+ --exp; >+ result = YYEOF; >+ break; >+ >+ default: >+ result = YYERRCODE; >+#if YYDEBUG != 0 >+ --exp; >+#endif >+ break; >+ } >+ >+ *pexp = exp; >+ >+ return result; >+} >+ >+ >+static void >+yyerror (str) >+ const char *str; >+{ >+ /* Do nothing. We don't print error messages here. */ >+} >diff -Naupr hercules-3.05/intl/ref-add.sin hercules-20070717/intl/ref-add.sin >--- hercules-3.05/intl/ref-add.sin 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/ref-add.sin 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,31 @@ >+# Add this package to a list of references stored in a text file. >+# >+# Copyright (C) 2000 Free Software Foundation, Inc. >+# >+# This program is free software; you can redistribute it and/or modify it >+# under the terms of the GNU Library General Public License as published >+# by the Free Software Foundation; either version 2, or (at your option) >+# any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+# Library General Public License for more details. >+# >+# You should have received a copy of the GNU Library General Public >+# License along with this program; if not, write to the Free Software >+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+# USA. >+# >+# Written by Bruno Haible <haible@clisp.cons.org>. >+# >+/^# Packages using this file: / { >+ s/# Packages using this file:// >+ ta >+ :a >+ s/ @PACKAGE@ / @PACKAGE@ / >+ tb >+ s/ $/ @PACKAGE@ / >+ :b >+ s/^/# Packages using this file:/ >+} >diff -Naupr hercules-3.05/intl/ref-del.sin hercules-20070717/intl/ref-del.sin >--- hercules-3.05/intl/ref-del.sin 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/ref-del.sin 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,26 @@ >+# Remove this package from a list of references stored in a text file. >+# >+# Copyright (C) 2000 Free Software Foundation, Inc. >+# >+# This program is free software; you can redistribute it and/or modify it >+# under the terms of the GNU Library General Public License as published >+# by the Free Software Foundation; either version 2, or (at your option) >+# any later version. >+# >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+# Library General Public License for more details. >+# >+# You should have received a copy of the GNU Library General Public >+# License along with this program; if not, write to the Free Software >+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+# USA. >+# >+# Written by Bruno Haible <haible@clisp.cons.org>. >+# >+/^# Packages using this file: / { >+ s/# Packages using this file:// >+ s/ @PACKAGE@ / / >+ s/^/# Packages using this file:/ >+} >diff -Naupr hercules-3.05/intl/textdomain.c hercules-20070717/intl/textdomain.c >--- hercules-3.05/intl/textdomain.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/textdomain.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,142 @@ >+/* Implementation of the textdomain(3) function. >+ Copyright (C) 1995-1998, 2000, 2001, 2002 Free Software Foundation, Inc. >+ >+ This program is free software; you can redistribute it and/or modify it >+ under the terms of the GNU Library General Public License as published >+ by the Free Software Foundation; either version 2, or (at your option) >+ any later version. >+ >+ This program is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Library General Public License for more details. >+ >+ You should have received a copy of the GNU Library General Public >+ License along with this program; if not, write to the Free Software >+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, >+ USA. */ >+ >+#ifdef HAVE_CONFIG_H >+# include <config.h> >+#endif >+ >+#include <stdlib.h> >+#include <string.h> >+ >+#ifdef _LIBC >+# include <libintl.h> >+#else >+# include "libgnuintl.h" >+#endif >+#include "gettextP.h" >+ >+#ifdef _LIBC >+/* We have to handle multi-threaded applications. */ >+# include <bits/libc-lock.h> >+#else >+/* Provide dummy implementation if this is outside glibc. */ >+# define __libc_rwlock_define(CLASS, NAME) >+# define __libc_rwlock_wrlock(NAME) >+# define __libc_rwlock_unlock(NAME) >+#endif >+ >+/* The internal variables in the standalone libintl.a must have different >+ names than the internal variables in GNU libc, otherwise programs >+ using libintl.a cannot be linked statically. */ >+#if !defined _LIBC >+# define _nl_default_default_domain libintl_nl_default_default_domain >+# define _nl_current_default_domain libintl_nl_current_default_domain >+#endif >+ >+/* @@ end of prolog @@ */ >+ >+/* Name of the default text domain. */ >+extern const char _nl_default_default_domain[] attribute_hidden; >+ >+/* Default text domain in which entries for gettext(3) are to be found. */ >+extern const char *_nl_current_default_domain attribute_hidden; >+ >+ >+/* Names for the libintl functions are a problem. They must not clash >+ with existing names and they should follow ANSI C. But this source >+ code is also used in GNU C Library where the names have a __ >+ prefix. So we have to make a difference here. */ >+#ifdef _LIBC >+# define TEXTDOMAIN __textdomain >+# ifndef strdup >+# define strdup(str) __strdup (str) >+# endif >+#else >+# define TEXTDOMAIN libintl_textdomain >+#endif >+ >+/* Lock variable to protect the global data in the gettext implementation. */ >+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) >+ >+/* Set the current default message catalog to DOMAINNAME. >+ If DOMAINNAME is null, return the current default. >+ If DOMAINNAME is "", reset to the default of "messages". */ >+char * >+TEXTDOMAIN (domainname) >+ const char *domainname; >+{ >+ char *new_domain; >+ char *old_domain; >+ >+ /* A NULL pointer requests the current setting. */ >+ if (domainname == NULL) >+ return (char *) _nl_current_default_domain; >+ >+ __libc_rwlock_wrlock (_nl_state_lock); >+ >+ old_domain = (char *) _nl_current_default_domain; >+ >+ /* If domain name is the null string set to default domain "messages". */ >+ if (domainname[0] == '\0' >+ || strcmp (domainname, _nl_default_default_domain) == 0) >+ { >+ _nl_current_default_domain = _nl_default_default_domain; >+ new_domain = (char *) _nl_current_default_domain; >+ } >+ else if (strcmp (domainname, old_domain) == 0) >+ /* This can happen and people will use it to signal that some >+ environment variable changed. */ >+ new_domain = old_domain; >+ else >+ { >+ /* If the following malloc fails `_nl_current_default_domain' >+ will be NULL. This value will be returned and so signals we >+ are out of core. */ >+#if defined _LIBC || defined HAVE_STRDUP >+ new_domain = strdup (domainname); >+#else >+ size_t len = strlen (domainname) + 1; >+ new_domain = (char *) malloc (len); >+ if (new_domain != NULL) >+ memcpy (new_domain, domainname, len); >+#endif >+ >+ if (new_domain != NULL) >+ _nl_current_default_domain = new_domain; >+ } >+ >+ /* We use this possibility to signal a change of the loaded catalogs >+ since this is most likely the case and there is no other easy we >+ to do it. Do it only when the call was successful. */ >+ if (new_domain != NULL) >+ { >+ ++_nl_msg_cat_cntr; >+ >+ if (old_domain != new_domain && old_domain != _nl_default_default_domain) >+ free (old_domain); >+ } >+ >+ __libc_rwlock_unlock (_nl_state_lock); >+ >+ return new_domain; >+} >+ >+#ifdef _LIBC >+/* Alias for function name in GNU C Library. */ >+weak_alias (__textdomain, textdomain); >+#endif >diff -Naupr hercules-3.05/intl/VERSION hercules-20070717/intl/VERSION >--- hercules-3.05/intl/VERSION 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/intl/VERSION 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+GNU gettext library from gettext-0.11.5 >diff -Naupr hercules-3.05/ipl.c hercules-20070717/ipl.c >--- hercules-3.05/ipl.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/ipl.c 2008-09-03 13:07:48.000000000 +0200 >@@ -4,7 +4,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: ipl.c,v 1.101 2007/06/23 00:04:14 ivan Exp $ >+// $Id: ipl.c,v 1.104 2007/12/10 23:12:02 gsmith Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the Initial Program Load (IPL) function of */ >@@ -17,6 +17,16 @@ > /*-------------------------------------------------------------------*/ > > // $Log: ipl.c,v $ >+// Revision 1.104 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.103 2007/08/26 21:04:45 rbowler >+// Modify PSW fields by psw command (part 2) >+// >+// Revision 1.102 2007/08/06 16:48:20 ivan >+// Implement "PARM" option for IPL command (same as VM IPL PARM XXX) >+// Also add command helps for ipl, iplc, sysclear, sysreset >+// > // Revision 1.101 2007/06/23 00:04:14 ivan > // Update copyright notices to include current year (2007) > // >@@ -223,6 +233,16 @@ BYTE chanstat; > HDC1(debug_cpu_state, regs); > return -1; > } >+#if defined(OPTION_IPLPARM) >+ if(sysblk.haveiplparm) >+ { >+ for(i=0;i<16;i++) >+ { >+ regs->GR_L(i)=fetch_fw(&sysblk.iplparmstring[i*4]); >+ } >+ sysblk.haveiplparm=0; >+ } >+#endif > > /* Set Main Storage Reference and Update bits */ > STORAGE_KEY(regs->PX, regs) |= (STORKEY_REF | STORKEY_CHANGE); >@@ -467,7 +487,7 @@ int i; > for (i = 0; i < MAX_CPU; i++) > regs->emercpu[i] = 0; > regs->instinvalid = 1; >- regs->instcount = 0; >+ regs->instcount = regs->prevcount = 0; > > /* Clear interrupts */ > SET_IC_INITIAL_MASK(regs); >@@ -525,6 +545,7 @@ int ARCH_DEP(initial_cpu_reset) (REGS *r > memset ( regs->cr, 0, sizeof(regs->cr) ); > regs->fpc = 0; > regs->PX = 0; >+ regs->psw.AMASK_G = AMASK24; > /* > * ISW20060125 : Since we reset the prefix, we must also adjust > * the PSA ptr >diff -Naupr hercules-3.05/ltdl.c hercules-20070717/ltdl.c >--- hercules-3.05/ltdl.c 2005-09-24 18:17:24.000000000 +0200 >+++ hercules-20070717/ltdl.c 2008-09-03 13:07:48.000000000 +0200 >@@ -3182,7 +3182,7 @@ try_dlopen (phandle, filename) > } > #endif > #ifdef LTDL_SYSSEARCHPATH >- if (!file && sys_search_path) >+ if (!file) > { > file = find_file (sys_search_path, base_name, &dir); > } >@@ -3474,7 +3474,7 @@ lt_dlopenext (filename) > } > > /* First try appending ARCHIVE_EXT. */ >- tmp = LT_EMALLOC (char, len + LT_STRLEN (archive_ext) + 1); >+ tmp = LT_EMALLOC (char, len + strlen (archive_ext) + 1); > if (!tmp) > return 0; > >@@ -3495,7 +3495,7 @@ lt_dlopenext (filename) > > #ifdef LTDL_SHLIB_EXT > /* Try appending SHLIB_EXT. */ >- if (LT_STRLEN (shlib_ext) > LT_STRLEN (archive_ext)) >+ if (LT_STRLEN (shlib_ext) > strlen (archive_ext)) > { > LT_DLFREE (tmp); > tmp = LT_EMALLOC (char, len + LT_STRLEN (shlib_ext) + 1); >diff -Naupr hercules-3.05/m4/.cvsignore hercules-20070717/m4/.cvsignore >--- hercules-3.05/m4/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/m4/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+Makefile >+Makefile.in >diff -Naupr hercules-3.05/m4/Makefile.in hercules-20070717/m4/Makefile.in >--- hercules-3.05/m4/Makefile.in 2007-06-23 16:59:39.000000000 +0200 >+++ hercules-20070717/m4/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,358 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = .. >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-subdir = m4 >-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = $(top_builddir)/config.h >-CONFIG_CLEAN_FILES = >-SOURCES = >-DIST_SOURCES = >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-EXTRA_DIST = glibc2.m4 intmax.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 signed.m4 size_max.m4 wchar_t.m4 wint_t.m4 xsize.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 inttypes.m4 inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4 >-all: all-am >- >-.SUFFIXES: >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --gnu m4/Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >-tags: TAGS >-TAGS: >- >-ctags: CTAGS >-CTAGS: >- >- >-distdir: $(DISTFILES) >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >-check-am: all-am >-check: check-am >-all-am: Makefile >-installdirs: >-install: install-am >-install-exec: install-exec-am >-install-data: install-data-am >-uninstall: uninstall-am >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-am >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-am >- >-clean-am: clean-generic clean-libtool mostlyclean-am >- >-distclean: distclean-am >- -rm -f Makefile >-distclean-am: clean-am distclean-generic distclean-libtool >- >-dvi: dvi-am >- >-dvi-am: >- >-html: html-am >- >-info: info-am >- >-info-am: >- >-install-data-am: >- >-install-exec-am: >- >-install-info: install-info-am >- >-install-man: >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-am >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-am >- >-mostlyclean-am: mostlyclean-generic mostlyclean-libtool >- >-pdf: pdf-am >- >-pdf-am: >- >-ps: ps-am >- >-ps-am: >- >-uninstall-am: uninstall-info-am >- >-.PHONY: all all-am check check-am clean clean-generic clean-libtool \ >- distclean distclean-generic distclean-libtool distdir dvi \ >- dvi-am html html-am info info-am install install-am \ >- install-data install-data-am install-exec install-exec-am \ >- install-info install-info-am install-man install-strip \ >- installcheck installcheck-am installdirs maintainer-clean \ >- maintainer-clean-generic mostlyclean mostlyclean-generic \ >- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ >- uninstall-info-am >- >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/machdep.h hercules-20070717/machdep.h >--- hercules-3.05/machdep.h 2007-06-22 18:35:00.000000000 +0200 >+++ hercules-20070717/machdep.h 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,6 @@ > /* MACHDEP.H Machine specific code */ > >-// $Id: machdep.h,v 1.61 2007/03/13 00:34:18 ivan Exp $ >+// $Id: machdep.h,v 1.63 2007/10/02 22:02:27 gsmith Exp $ > > /*-------------------------------------------------------------------*/ > /* */ >@@ -31,6 +31,12 @@ > /*-------------------------------------------------------------------*/ > > // $Log: machdep.h,v $ >+// Revision 1.63 2007/10/02 22:02:27 gsmith >+// cygwin does not need special assist for -fPIC >+// >+// Revision 1.62 2007/08/07 19:47:59 ivan >+// Fix a couple of gcc-4.2 warnings >+// > // Revision 1.61 2007/03/13 00:34:18 ivan > // fetch_dw macro fix for MSVC compiles > // >@@ -346,7 +352,7 @@ > */ > #undef BREG > #undef XCHG_BREG >-#ifdef PIC >+#if defined(PIC) && !defined(__CYGWIN__) > #define BREG "S" > #define XCHG_BREG "xchgl %%ebx,%%esi\n\t" > #else >@@ -646,11 +652,11 @@ U32 *ptr4, val4, old4, new4; > #define fetch_fw_noswap(_p) CSWAP32(fetch_fw((_p))) > #else > #if !defined(OPTION_STRICT_ALIGNMENT) >- static __inline__ U32 fetch_fw_noswap(void *ptr) { >+ static __inline__ U32 fetch_fw_noswap(const void *ptr) { > return *(U32 *)ptr; > } > #else >- static __inline__ U32 fetch_fw_noswap(void *ptr) { >+ static __inline__ U32 fetch_fw_noswap(const void *ptr) { > U32 value; > memcpy(&value, (BYTE *)ptr, 4); > return value; >diff -Naupr hercules-3.05/Makefile.am hercules-20070717/Makefile.am >--- hercules-3.05/Makefile.am 2007-06-23 21:23:04.000000000 +0200 >+++ hercules-20070717/Makefile.am 2008-09-03 13:07:48.000000000 +0200 >@@ -2,9 +2,29 @@ > # Makefile for Hercules S/370, ESA/390 and z/Architecture emulator > # Process this file with 'automake' to produce Makefile.in > # >-# $Id: Makefile.am,v 1.178 2007/06/02 13:46:41 rbowler Exp $ >+# $Id: Makefile.am,v 1.183 2008/05/22 19:25:58 fish Exp $ > # > # $Log: Makefile.am,v $ >+# Revision 1.183 2008/05/22 19:25:58 fish >+# Flex FakeTape support >+# >+# Revision 1.182 2008/03/25 11:41:31 fish >+# SCSI TAPE MODS part 1: groundwork: non-functional changes: >+# rename some functions, comments, general restructuring, etc. >+# New source modules awstape.c, omatape.c, hettape.c and >+# tapeccws.c added, but not yet used (all will be used in a future >+# commit though when tapedev.c code is eventually split) >+# >+# Revision 1.181 2008/03/02 22:50:35 rbowler >+# Restore tabs corrupted by previous modification >+# >+# Revision 1.180 2008/03/01 14:19:29 rbowler >+# Add new module general3.c for general-instructions-extension facility >+# >+# Revision 1.179 2008/02/19 11:49:18 ivan >+# - Move setting of CPU priority after spwaning timer thread >+# - Added support for Posix 1003.1e capabilities >+# > # Revision 1.178 2007/06/02 13:46:41 rbowler > # PFPO framework > # >@@ -105,8 +125,15 @@ dyndev_SRC = commadpt.c \ > sockdev.c \ > printer.c \ > tapedev.c \ >- scsitape.c \ >+ tapeccws.c \ >+ sllib.c \ > hetlib.c \ >+ awstape.c \ >+ faketape.c \ >+ hettape.c \ >+ omatape.c \ >+ scsitape.c \ >+ w32stape.c \ > ctc_lcs.c \ > ctc_ctci.c \ > ctcadpt.c \ >@@ -251,7 +278,7 @@ if OPTION_DYNAMIC_LOAD > hdt3270_la_LDFLAGS = $(DYNMOD_LD_FLAGS) > hdt3270_la_LIBADD = $(DYNMOD_LD_ADD) > >- hdt3420_la_SOURCES = tapedev.c scsitape.c >+ hdt3420_la_SOURCES = tapedev.c tapeccws.c awstape.c faketape.c hettape.c omatape.c scsitape.c w32stape.c > hdt3420_la_LDFLAGS = $(DYNMOD_LD_FLAGS) > hdt3420_la_LIBADD = $(DYNMOD_LD_ADD) libherct.la > >@@ -355,6 +382,7 @@ endif > vstore.c \ > general1.c \ > general2.c \ >+ general3.c \ > pfpo.c \ > plo.c \ > control.c \ >@@ -487,7 +515,7 @@ tools_ADDLIBS = $(HERCLIBS2) $(LDADD) > > if BUILD_HERCIFC > hercifc_SOURCES = hercifc.c >-hercifc_LDADD = $(LDADD) >+hercifc_LDADD = $(tools_ADDLIBS) > hercifc_LDFLAGS = $(tools_LD_FLAGS) > endif > >@@ -633,7 +661,6 @@ EXTRA_DIST = autoconf/config.rpath \ > build_pch.c \ > conspawn.c \ > getopt.c \ >- w32stape.c \ > herclogo.txt \ > hercules.ico > >diff -Naupr hercules-3.05/makefile.bat hercules-20070717/makefile.bat >--- hercules-3.05/makefile.bat 2006-12-30 16:18:30.000000000 +0100 >+++ hercules-20070717/makefile.bat 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,6 @@ > @echo off > >-rem $Id: makefile.bat,v 1.6 2006/12/08 09:43:29 jj Exp $ >+rem $Id: makefile.bat,v 1.7 2008/01/23 13:39:00 rbowler Exp $ > > rem ------------------------------------------------------------------- > rem >@@ -40,6 +40,13 @@ rem ------------------------------------ > rem > rem *** CHANGE HISTORY *** > rem >+rem $Log: makefile.bat,v $ >+rem Revision 1.7 2008/01/23 13:39:00 rbowler >+rem Modifications for VS9 C++ 2008 Express by Charlie Brint >+rem >+rem Revision 1.6 2006/12/08 09:43:29 jj >+rem Add CVS message log >+rem > rem 07/31/05 Fish Temporarily remove -s (slient) option to see the > rem actual options being passed to compiler / linker > rem 07/31/05 Fish Done; putting -s (slient) option back. (I only >@@ -50,10 +57,6 @@ rem 11/17/05 Fish Support for buildin > rem whenever VS 8.0 is also installed. > rem 11/29/05 Fish Added comments re: 'ASSEMBLY_LISTINGS' option > rem >-rem $Log: makefile.bat,v $ >-rem Revision 1.6 2006/12/08 09:43:29 jj >-rem Add CVS message log >-rem > rem ------------------------------------------------------------------- > > if "%1" == "" ( >@@ -64,7 +67,13 @@ if "%1" == "" ( > rem NOTE: 'MSSdk' not normally defined for most users, > rem but it IS defined if Visual Studio is installed... > >-if not "%VS80COMNTOOLS%" == "" ( >+if not "%VS90COMNTOOLS%" == "" ( >+ >+ rem note "vSvars.bat", not "vCvars.bat"! >+ >+ call "%VS90COMNTOOLS%vsvars32.bat" >+ >+) else if not "%VS80COMNTOOLS%" == "" ( > > rem note "vSvars.bat", not "vCvars.bat"! > >@@ -101,11 +110,15 @@ rem > rem set ASSEMBLY_LISTINGS=1 > > >-if "%VS80COMNTOOLS%" == "" ( >+if not "%VS90COMNTOOLS%" == "" ( > >- nmake -nologo -s %4 -f %2 >+ nmake -nologo -s %4 -f %2 -g >+ >+) else if not "%VS80COMNTOOLS%" == "" ( >+ >+ nmake -nologo -s %4 -f %2 -g > > ) else ( > >- nmake -nologo -s %4 -f %2 -g >+ nmake -nologo -s %4 -f %2 > ) >diff -Naupr hercules-3.05/makefile-dllmod.msvc hercules-20070717/makefile-dllmod.msvc >--- hercules-3.05/makefile-dllmod.msvc 2006-12-30 16:18:30.000000000 +0100 >+++ hercules-20070717/makefile-dllmod.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > # MAKEFILE-DLLMOD.MSVC (c) Copyright Roger Bowler, 2005-2007 > # Build Hercules for Win32 using MSVC and nmake (DLL version with loadable modules) > # >-# $Id: makefile-dllmod.msvc,v 1.29 2006/12/28 19:03:38 fish Exp $ >+# $Id: makefile-dllmod.msvc,v 1.31 2008/05/22 21:31:50 fish Exp $ > # > # DD/MM/YY Description....................................................... > # 17/02/05 Created by - Roger Bowler >@@ -61,6 +61,12 @@ > # 26/12/06 Broke sections out into separate !INCLUDE-able files for easier > # maintenance and use by externally built dynamic modules. - Fish > # $Log: makefile-dllmod.msvc,v $ >+# Revision 1.31 2008/05/22 21:31:50 fish >+# (remove extraneous !MESSAGE stmt) >+# >+# Revision 1.30 2008/05/06 19:56:29 rbowler >+# Default BZIP2_DIR to winbuild/bzip2 if it exists >+# > # Revision 1.29 2006/12/28 19:03:38 fish > # New makefile restructuring > # >diff -Naupr hercules-3.05/makefile.generic hercules-20070717/makefile.generic >--- hercules-3.05/makefile.generic 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/makefile.generic 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,334 @@ >+# >+# Makefile for Hercules S/370, ESA/390 and z/Architecture emulator >+# >+ >+# $Id: makefile.generic,v 1.43 2008/05/22 19:25:58 fish Exp $ >+ >+VERSION = \"3.05\" >+ >+# $Log: makefile.generic,v $ >+# Revision 1.43 2008/05/22 19:25:58 fish >+# Flex FakeTape support >+# >+# Revision 1.42 2008/03/25 11:41:31 fish >+# SCSI TAPE MODS part 1: groundwork: non-functional changes: >+# rename some functions, comments, general restructuring, etc. >+# New source modules awstape.c, omatape.c, hettape.c and >+# tapeccws.c added, but not yet used (all will be used in a future >+# commit though when tapedev.c code is eventually split) >+# >+# Revision 1.41 2008/03/02 22:50:35 rbowler >+# Restore tabs corrupted by previous modification >+# >+# Revision 1.40 2008/03/01 14:19:29 rbowler >+# Add new module general3.c for general-instructions-extension facility >+# >+# Revision 1.39 2007/06/20 23:40:58 jmaynard >+# 3.05 version bump. >+# >+# Revision 1.38 2007/06/02 13:46:41 rbowler >+# PFPO framework >+# >+# Revision 1.37 2006/12/08 09:43:29 jj >+# Add CVS message log >+# >+ >+# Change this if you want to install the Hercules executables somewhere >+# besides /usr/bin. The $PREFIX (which defaults to nothing) can be >+# overridden in the make command line, as in "PREFIX=/foo make install" >+# (the directory is only used when installing). >+DESTDIR = $(PREFIX)/usr/bin >+DESTLIB = $(PREFIX)/usr/lib >+ >+# For Linux use: >+CFLAGS = -O3 -march=pentium -fomit-frame-pointer -I. >+// CFLAGS += -DVERSION=$(VERSION) -DHAVE_INTTYPES_H -DMAX_CPU_ENGINES=2 >+CFLAGS += -W -Wall >+# For older Linux versions use: >+# For Linux/390 use: >+#CFLAGS = -DNO_BYTESWAP_H -DNO_ASM_BYTESWAP -DNO_ATTR_REGPARM >+ >+LFLAGS = -lpthread -lm -lz >+ >+CFLAGS += -DHAVE_CONFIG_H >+ >+# Uncomment the lines below to enable Compressed CKD bzip2 compression >+// CFLAGS += -DHAVE_LIBZ -DCCKD_BZIP2 >+LFLAGS += -lbz2 >+ >+# Uncomment the lines below to enable HET bzip2 compression >+// CFLAGS += -DHET_BZIP2 >+LFLAGS += -lbz2 >+ >+# Dynamic loader support >+// LFLAGS += -rdynamic -ldl >+// CFLAGS += -DOPTION_DYNAMIC_LOAD >+ >+// CFLAGS += -DOPTION_CONFIG_SYMBOLS >+ >+EXEFILES = hercules hercifc \ >+ dasdinit dasdisup dasdload dasdconv dasdls dasdcat dasdpdsu dasdseq \ >+ tapecopy tapemap tapesplt \ >+ cckdcdsk cckdcomp cckddiag cckdswap \ >+ cckd2ckd ckd2cckd fba2cfba cfba2fba dasdcopy \ >+ hetget hetinit hetmap hetupd \ >+ dmap2hrc >+DYNFILES = dyninst hdteq \ >+ hdt1403 hdt2703 hdt3088 hdt3270 hdt3420 hdt3505 hdt3525 \ >+ hdt1052c >+ >+ >+TARFILES = makefile *.c *.h hercules.cnf tapeconv.jcl dasdlist \ >+ html zzsa.cnf zzsacard.bin >+ >+hercules_OBJ = hostinfo.o impl.o config.o panel.o \ >+ version.o ipl.o assist.o dat.o stack.o cpu.o \ >+ vstore.o general1.o general2.o general3.o \ >+ pfpo.o plo.o control.o \ >+ io.o decimal.o service.o opcode.o diagnose.o \ >+ diagmssf.o vm.o channel.o ckddasd.o fbadasd.o \ >+ crypto.o external.o float.o trace.o chsc.o \ >+ machchk.o vector.o xstore.o cmpsc.o sie.o qdio.o \ >+ timer.o esame.o cckddasd.o cckdutil.o dasdtab.o \ >+ parser.o ieee.o dfp.o httpserv.o bldcfg.o sr.o \ >+ cgibin.o codepage.o loadparm.o fillfnam.o \ >+ hsccmd.o hscmisc.o logger.o history.o \ >+ cache.o ecpsvm.o shared.o logmsg.o hdl.o hdlmain.o \ >+ hscutl.o hscutl2.o hsys.o bootstrap.o pttrace.o \ >+ strsignal.o hconsole.o w32util.o >+ >+hdt1403_OBJ = printer.o >+hdt2703_OBJ = commadpt.o >+hdt3088_OBJ = ctc_lcs.o ctc_ctci.o ctcadpt.o w32ctca.o tuntap.o >+hdt3270_OBJ = console.o >+hdt1052c_OBJ = con1052c.o >+hdt3420_OBJ = tapedev.o tapeccws.o faketape.o awstape.o hettape.o omatape.o scsitape.o hetlib.o >+hdt3505_OBJ = cardrdr.o sockdev.o >+hdt3525_OBJ = cardpch.o >+hdteq_OBJ = hdteq.o >+ >+hercifc_OBJ = hercifc.o hostinfo.o version.o >+ >+dasdinit_OBJ = dasdinit.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdisup_OBJ = dasdisup.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdload_OBJ = dasdload.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdconv_OBJ = dasdconv.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdls_OBJ = dasdls.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdcat_OBJ = dasdcat.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdpdsu_OBJ = dasdpdsu.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdseq_OBJ = dasdseq.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+tapecopy_OBJ = tapecopy.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+tapemap_OBJ = tapemap.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+tapesplt_OBJ = tapesplt.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckdcdsk_OBJ = cckdcdsk.o cckdutil.o dasdtab.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckdcomp_OBJ = cckdcomp.o cckdutil.o dasdtab.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckddiag_OBJ = cckddiag.o cckddasd.o cckdutil.o ckddasd.o codepage.o \ >+ dasdtab.o dasdutil.o fbadasd.o hostinfo.o version.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+cckdswap_OBJ = cckdswap.o cckdutil.o dasdtab.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckd2ckd_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ dasdtab.o ckddasd.o fbadasd.o cckddasd.o cckdutil.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+ckd2cckd_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ dasdtab.o ckddasd.o fbadasd.o cckddasd.o cckdutil.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+fba2cfba_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+cfba2fba_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+dasdcopy_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+hetget_OBJ = hetget.o hetlib.o sllib.o hostinfo.o version.o logmsg.o \ >+ codepage.o pttrace.o hsys.o >+ >+hetinit_OBJ = hetinit.o hetlib.o sllib.o hostinfo.o version.o logmsg.o \ >+ codepage.o pttrace.o hsys.o >+ >+hetmap_OBJ = hetmap.o hetlib.o sllib.o hostinfo.o version.o logmsg.o \ >+ codepage.o pttrace.o hsys.o >+ >+hetupd_OBJ = hetupd.o hetlib.o sllib.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+dmap2hrc_OBJ = dmap2hrc.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+dyninst_OBJ = dyninst.o >+ >+HEADERS = codepage.h commadpt.h cpuint.h ctcadpt.h dasdblks.h \ >+ dasdtab.h dat.h devtype.h esa390.h feat370.h feat390.h \ >+ feat900.h featall.h featchk.h feature.h fishhang.h \ >+ fthreads.h hbyteswp.h hercifc.h hercnls.h hercules.h \ >+ hetlib.h hostinfo.h httpmisc.h htypes.h ieee-w32.h \ >+ inline.h linklist.h logger.h machdep.h opcode.h chsc.h \ >+ parser.h sllib.h tapedev.h tt32api.h tuntap.h version.h \ >+ vstore.h w32chan.h w32ctca.h shared.h hdl.h crypto.h \ >+ sockdev.h history.h sr.h hthreads.h hostopts.h w32util.h \ >+ hconsts.h hmacros.h hstructs.h hexterns.h hconsole.h >+ >+all: $(EXEFILES) $(DYNFILES) >+ >+hercules: $(hercules_OBJ) >+ $(CC) -o hercules $(hercules_OBJ) $(LFLAGS) >+ >+$(hercules_OBJ): %.o: %.c $(HEADERS) >+ $(CC) $(CFLAGS) -o $@ -c $< >+ >+hercifc: $(hercifc_OBJ) >+ $(CC) -o hercifc $(hercifc_OBJ) $(LFLAGS) >+ >+dasdinit: $(dasdinit_OBJ) >+ $(CC) -o dasdinit $(dasdinit_OBJ) $(LFLAGS) >+ >+dasdisup: $(dasdisup_OBJ) >+ $(CC) -o dasdisup $(dasdisup_OBJ) $(LFLAGS) >+ >+dasdload: $(dasdload_OBJ) >+ $(CC) -o dasdload $(dasdload_OBJ) $(LFLAGS) >+ >+dasdconv: $(dasdconv_OBJ) >+ $(CC) -o dasdconv $(dasdconv_OBJ) $(LFLAGS) >+ >+dasdls: $(dasdls_OBJ) >+ $(CC) -o dasdls $(dasdls_OBJ) $(LFLAGS) >+ >+dasdcat: $(dasdcat_OBJ) >+ $(CC) -o dasdcat $(dasdcat_OBJ) $(LFLAGS) >+ >+dasdpdsu: $(dasdpdsu_OBJ) >+ $(CC) -o dasdpdsu $(dasdpdsu_OBJ) $(LFLAGS) >+ >+dasdseq: $(dasdseq_OBJ) >+ $(CC) -o dasdseq $(dasdseq_OBJ) $(LFLAGS) >+ >+tapecopy: $(tapecopy_OBJ) >+ $(CC) -o tapecopy $(tapecopy_OBJ) $(LFLAGS) >+ >+tapemap: $(tapemap_OBJ) >+ $(CC) -o tapemap $(tapemap_OBJ) $(LFLAGS) >+ >+tapesplt: $(tapesplt_OBJ) >+ $(CC) -o tapesplt $(tapesplt_OBJ) $(LFLAGS) >+ >+cckdcdsk: $(cckdcdsk_OBJ) >+ $(CC) -o cckdcdsk $(cckdcdsk_OBJ) $(LFLAGS) >+ >+cckdcomp: $(cckdcomp_OBJ) >+ $(CC) -o cckdcomp $(cckdcomp_OBJ) $(LFLAGS) >+ >+cckddiag: $(cckddiag_OBJ) >+ $(CC) -o cckddiag $(cckddiag_OBJ) $(LFLAGS) >+ >+cckdswap: $(cckdswap_OBJ) >+ $(CC) -o cckdswap $(cckdswap_OBJ) $(LFLAGS) >+ >+cckd2ckd: $(cckd2ckd_OBJ) >+ $(CC) -o cckd2ckd $(cckd2ckd_OBJ) $(LFLAGS) >+ >+ckd2cckd: $(ckd2cckd_OBJ) >+ $(CC) -o ckd2cckd $(ckd2cckd_OBJ) $(LFLAGS) >+ >+fba2cfba: $(fba2cfba_OBJ) >+ $(CC) -o fba2cfba $(fba2cfba_OBJ) $(LFLAGS) >+ >+cfba2fba: $(cfba2fba_OBJ) >+ $(CC) -o cfba2fba $(cfba2fba_OBJ) $(LFLAGS) >+ >+dasdcopy: $(dasdcopy_OBJ) >+ $(CC) -o dasdcopy $(dasdcopy_OBJ) $(LFLAGS) >+ >+hetget: $(hetget_OBJ) >+ $(CC) -o hetget $(hetget_OBJ) $(LFLAGS) >+ >+hetinit: $(hetinit_OBJ) >+ $(CC) -o hetinit $(hetinit_OBJ) $(LFLAGS) >+ >+hetmap: $(hetmap_OBJ) >+ $(CC) -o hetmap $(hetmap_OBJ) $(LFLAGS) >+ >+hetupd: $(hetupd_OBJ) >+ $(CC) -o hetupd $(hetupd_OBJ) $(LFLAGS) >+ >+dmap2hrc: $(dmap2hrc_OBJ) >+ $(CC) -o dmap2hrc $(dmap2hrc_OBJ) $(LFLAGS) >+ >+dyninst: $(dyninst_OBJ) >+ $(CC) -o dyninst $(dyninst_OBJ) $(LFLAGS) -shared >+ >+hdt1403: $(hdt1403_OBJ) >+ $(CC) -o hdt1403 $(hdt1403_OBJ) $(LFLAGS) -shared >+ >+hdt2703: $(hdt2703_OBJ) >+ $(CC) -o hdt2703 $(hdt2703_OBJ) $(LFLAGS) -shared >+ >+hdt3088: $(hdt3088_OBJ) >+ $(CC) -o hdt3088 $(hdt3088_OBJ) $(LFLAGS) -shared >+ >+hdt3270: $(hdt3270_OBJ) >+ $(CC) -o hdt3270 $(hdt3270_OBJ) $(LFLAGS) -shared >+ >+hdt1052c: $(hdt1052c_OBJ) >+ $(CC) -o hdt1052c $(hdt1052c_OBJ) $(LFLAGS) -shared >+ >+hdt3420: $(hdt3420_OBJ) >+ $(CC) -o hdt3420 $(hdt3420_OBJ) $(LFLAGS) -shared >+ >+hdt3505: $(hdt3505_OBJ) >+ $(CC) -o hdt3505 $(hdt3505_OBJ) $(LFLAGS) -shared >+ >+hdt3525: $(hdt3525_OBJ) >+ $(CC) -o hdt3525 $(hdt3525_OBJ) $(LFLAGS) -shared >+ >+hdteq: $(hdteq_OBJ) >+ $(CC) -o hdteq $(hdteq_OBJ) $(LFLAGS) -shared >+ >+clean: >+ rm -rf $(EXEFILES) $(DYNFILES) *.o >+ >+tar: clean >+ (cd ..; tar cvzf hercules-$(VERSION).tar.gz hercules-$(VERSION)) >+ >+install: $(EXEFILES) >+ cp $(EXEFILES) $(DESTDIR) >+ cp $(DYNFILES) $(DESTLIB) >+ chown root $(DESTDIR)/hercifc >+ chmod 0751 $(DESTDIR)/hercifc >+ chmod +s $(DESTDIR)/hercifc >+ rm hercifc >diff -Naupr hercules-3.05/Makefile.in hercules-20070717/Makefile.in >--- hercules-3.05/Makefile.in 2007-06-23 16:59:40.000000000 +0200 >+++ hercules-20070717/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,1990 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >- >-# *************************************************************************** >-# Makefile for Hercules S/370, ESA/390 and z/Architecture emulator >-# Process this file with 'automake' to produce Makefile.in >-# >-# $Id: Makefile.am,v 1.178 2007/06/02 13:46:41 rbowler Exp $ >-# >-# $Log: Makefile.am,v $ >-# Revision 1.178 2007/06/02 13:46:41 rbowler >-# PFPO framework >-# >-# Revision 1.177 2006/12/30 21:13:37 rbowler >-# Backout rev 1.176 >-# >-# Revision 1.175 2006/12/30 16:54:07 rbowler >-# Reinstate missing changelog entries >-# >-# Revision 1.174 2006/12/30 15:37:01 jmaynard >-# Removed a coupple of stray ^Ms. >-# >-# Revision 1.173 2006/12/30 01:20:09 fish >-# Add new MSVC makefile includes to distribution >-# >-# Revision 1.172 2006/12/18 13:35:51 rbowler >-# Add hstdint.h to make dist >-# >-# Revision 1.171 2006/12/13 17:16:30 rbowler >-# Make libherc depend on libdecNumber >-# >-# Revision 1.170 2006/12/11 16:56:59 rbowler >-# Update Makefile.am to search decNumber for include files >-# >-# Revision 1.169 2006/12/09 01:05:59 ivan >-# Remove makefile-dll.msvc from Makefile.am dist list since it has been removed from the repository >-# >-# Revision 1.168 2006/12/08 09:43:16 jj >-# Add CVS message log >-# >-# DD/MM/YY Description....................................................... >-# 06/09/06 Change History added - Fish >-# 06/09/06 HAO (Hercules Automatic Operator) support - Fish >-# *************************************************************************** >- >- >- >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = . >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-bin_PROGRAMS = hercules$(EXEEXT) dasdinit$(EXEEXT) dasdisup$(EXEEXT) \ >- dasdload$(EXEEXT) dasdconv$(EXEEXT) dasdls$(EXEEXT) \ >- dasdcat$(EXEEXT) dasdpdsu$(EXEEXT) dasdseq$(EXEEXT) \ >- tapecopy$(EXEEXT) tapemap$(EXEEXT) tapesplt$(EXEEXT) \ >- cckdcdsk$(EXEEXT) cckdcomp$(EXEEXT) cckddiag$(EXEEXT) \ >- cckdswap$(EXEEXT) dasdcopy$(EXEEXT) hetget$(EXEEXT) \ >- hetinit$(EXEEXT) hetmap$(EXEEXT) hetupd$(EXEEXT) \ >- dmap2hrc$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) >-EXTRA_PROGRAMS = hercifc$(EXEEXT) >-DIST_COMMON = $(am__configure_deps) $(noinst_HEADERS) \ >- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ >- $(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \ >- INSTALL autoconf/README autoconf/config.guess \ >- autoconf/config.rpath autoconf/config.sub autoconf/depcomp \ >- autoconf/install-sh autoconf/ltmain.sh autoconf/missing \ >- autoconf/mkinstalldirs >-subdir = . >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ >- configure.lineno configure.status.lineno >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = config.h >-CONFIG_CLEAN_FILES = >-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; >-am__vpath_adj = case $$p in \ >- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ >- *) f=$$p;; \ >- esac; >-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; >-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(modexecdir)" \ >- "$(DESTDIR)$(bindir)" >-libLTLIBRARIES_INSTALL = $(INSTALL) >-modexecLTLIBRARIES_INSTALL = $(INSTALL) >-LTLIBRARIES = $(lib_LTLIBRARIES) $(modexec_LTLIBRARIES) \ >- $(noinst_LTLIBRARIES) >-am__DEPENDENCIES_1 = >-@OPTION_DYNAMIC_LOAD_TRUE@am__DEPENDENCIES_2 = libherc.la libhercs.la \ >-@OPTION_DYNAMIC_LOAD_TRUE@ libhercu.la $(am__DEPENDENCIES_1) >-@OPTION_DYNAMIC_LOAD_TRUE@dyngui_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__dyngui_la_SOURCES_DIST = dyngui.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_dyngui_la_OBJECTS = dyngui.lo >-dyngui_la_OBJECTS = $(am_dyngui_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_dyngui_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@dyninst_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__dyninst_la_SOURCES_DIST = dyninst.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_dyninst_la_OBJECTS = dyninst.lo >-dyninst_la_OBJECTS = $(am_dyninst_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_dyninst_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1052c_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt1052c_la_SOURCES_DIST = con1052c.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt1052c_la_OBJECTS = con1052c.lo >-hdt1052c_la_OBJECTS = $(am_hdt1052c_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt1052c_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1403_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt1403_la_SOURCES_DIST = printer.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt1403_la_OBJECTS = printer.lo >-hdt1403_la_OBJECTS = $(am_hdt1403_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt1403_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2703_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt2703_la_SOURCES_DIST = commadpt.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt2703_la_OBJECTS = commadpt.lo >-hdt2703_la_OBJECTS = $(am_hdt2703_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt2703_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2880_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt2880_la_SOURCES_DIST = hchan.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt2880_la_OBJECTS = hchan.lo >-hdt2880_la_OBJECTS = $(am_hdt2880_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt2880_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3088_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt3088_la_SOURCES_DIST = ctc_lcs.c ctc_ctci.c ctcadpt.c w32ctca.c \ >- tuntap.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3088_la_OBJECTS = ctc_lcs.lo \ >-@OPTION_DYNAMIC_LOAD_TRUE@ ctc_ctci.lo ctcadpt.lo w32ctca.lo \ >-@OPTION_DYNAMIC_LOAD_TRUE@ tuntap.lo >-hdt3088_la_OBJECTS = $(am_hdt3088_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3088_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3270_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt3270_la_SOURCES_DIST = console.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3270_la_OBJECTS = console.lo >-hdt3270_la_OBJECTS = $(am_hdt3270_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3270_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3420_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) libherct.la >-am__hdt3420_la_SOURCES_DIST = tapedev.c scsitape.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3420_la_OBJECTS = tapedev.lo \ >-@OPTION_DYNAMIC_LOAD_TRUE@ scsitape.lo >-hdt3420_la_OBJECTS = $(am_hdt3420_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3420_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3505_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt3505_la_SOURCES_DIST = cardrdr.c sockdev.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3505_la_OBJECTS = cardrdr.lo \ >-@OPTION_DYNAMIC_LOAD_TRUE@ sockdev.lo >-hdt3505_la_OBJECTS = $(am_hdt3505_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3505_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3525_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdt3525_la_SOURCES_DIST = cardpch.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3525_la_OBJECTS = cardpch.lo >-hdt3525_la_OBJECTS = $(am_hdt3525_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdt3525_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdteq_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdteq_la_SOURCES_DIST = hdteq.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdteq_la_OBJECTS = hdteq.lo >-hdteq_la_OBJECTS = $(am_hdteq_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdteq_la_rpath = -rpath $(modexecdir) >-@OPTION_DYNAMIC_LOAD_TRUE@hdtqeth_la_DEPENDENCIES = \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(am__DEPENDENCIES_2) >-am__hdtqeth_la_SOURCES_DIST = qeth.c >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdtqeth_la_OBJECTS = qeth.lo >-hdtqeth_la_OBJECTS = $(am_hdtqeth_la_OBJECTS) >-@OPTION_DYNAMIC_LOAD_TRUE@am_hdtqeth_la_rpath = -rpath $(modexecdir) >-libherc_la_DEPENDENCIES = libhercs.la libhercu.la libherct.la \ >- libhercd.la decNumber/libdecNumber.la $(am__DEPENDENCIES_1) >-am__libherc_la_SOURCES_DIST = hconsole.c w32util.c strsignal.c impl.c \ >- config.c bldcfg.c panel.c history.c fillfnam.c ipl.c assist.c \ >- dat.c stack.c cpu.c vstore.c general1.c general2.c pfpo.c \ >- plo.c control.c crypto.c io.c decimal.c service.c chsc.c \ >- opcode.c diagnose.c diagmssf.c vm.c channel.c external.c \ >- float.c trace.c machchk.c vector.c xstore.c cmpsc.c sie.c \ >- qdio.c clock.c timer.c esame.c ieee.c dfp.c machdep.h \ >- httpserv.c cgibin.c loadparm.c hsccmd.c hao.c hscmisc.c sr.c \ >- w32chan.c commadpt.c console.c cardpch.c cardrdr.c sockdev.c \ >- printer.c tapedev.c scsitape.c hetlib.c ctc_lcs.c ctc_ctci.c \ >- ctcadpt.c w32ctca.c hchan.c tuntap.c qeth.c con1052c.c \ >- ecpsvm.c >-am__objects_1 = w32chan.lo >-@BUILD_FTHREADS_TRUE@am__objects_2 = $(am__objects_1) >-am__objects_3 = commadpt.lo console.lo cardpch.lo cardrdr.lo \ >- sockdev.lo printer.lo tapedev.lo scsitape.lo hetlib.lo \ >- ctc_lcs.lo ctc_ctci.lo ctcadpt.lo w32ctca.lo hchan.lo \ >- tuntap.lo qeth.lo con1052c.lo >-@OPTION_DYNAMIC_LOAD_FALSE@am__objects_4 = $(am__objects_3) >-am_libherc_la_OBJECTS = hconsole.lo w32util.lo strsignal.lo impl.lo \ >- config.lo bldcfg.lo panel.lo history.lo fillfnam.lo ipl.lo \ >- assist.lo dat.lo stack.lo cpu.lo vstore.lo general1.lo \ >- general2.lo pfpo.lo plo.lo control.lo crypto.lo io.lo \ >- decimal.lo service.lo chsc.lo opcode.lo diagnose.lo \ >- diagmssf.lo vm.lo channel.lo external.lo float.lo trace.lo \ >- machchk.lo vector.lo xstore.lo cmpsc.lo sie.lo qdio.lo \ >- clock.lo timer.lo esame.lo ieee.lo dfp.lo httpserv.lo \ >- cgibin.lo loadparm.lo hsccmd.lo hao.lo hscmisc.lo sr.lo \ >- $(am__objects_2) $(am__objects_4) ecpsvm.lo >-libherc_la_OBJECTS = $(am_libherc_la_OBJECTS) >-libhercd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libhercs.la \ >- libhercu.la >-am_libhercd_la_OBJECTS = ckddasd.lo fbadasd.lo cckddasd.lo cckdutil.lo \ >- dasdtab.lo cache.lo dasdutil.lo shared.lo >-libhercd_la_OBJECTS = $(am_libhercd_la_OBJECTS) >-libhercs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) >-am_libhercs_la_OBJECTS = hsys.lo >-libhercs_la_OBJECTS = $(am_libhercs_la_OBJECTS) >-libherct_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libhercs.la \ >- libhercu.la >-am_libherct_la_OBJECTS = sllib.lo hetlib.lo >-libherct_la_OBJECTS = $(am_libherct_la_OBJECTS) >-libhercu_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libhercs.la >-am__libhercu_la_SOURCES_DIST = version.c hscutl.c hscutl2.c codepage.c \ >- logger.c logmsg.c hdl.c hostinfo.c hsocket.c memrchr.c \ >- parser.c pttrace.c fthreads.c fishhang.c ltdl.c >-am__objects_5 = fthreads.lo >-@BUILD_FTHREADS_TRUE@am__objects_8 = $(am__objects_5) >-am__objects_6 = fishhang.lo >-@BUILD_FISHHANG_TRUE@@BUILD_FTHREADS_TRUE@am__objects_9 = \ >-@BUILD_FISHHANG_TRUE@@BUILD_FTHREADS_TRUE@ $(am__objects_6) >-@OPTION_DYNAMIC_LOAD_TRUE@am__objects_10 = ltdl.lo >-am_libhercu_la_OBJECTS = version.lo hscutl.lo hscutl2.lo codepage.lo \ >- logger.lo logmsg.lo hdl.lo hostinfo.lo hsocket.lo memrchr.lo \ >- parser.lo pttrace.lo $(am__objects_8) $(am__objects_9) \ >- $(am__objects_10) >-libhercu_la_OBJECTS = $(am_libhercu_la_OBJECTS) >-@BUILD_HERCIFC_TRUE@am__EXEEXT_1 = hercifc$(EXEEXT) >-@BUILD_SHARED_TRUE@am__EXEEXT_2 = herclin$(EXEEXT) >-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) >-PROGRAMS = $(bin_PROGRAMS) >-am_cckdcdsk_OBJECTS = cckdcdsk.$(OBJEXT) >-cckdcdsk_OBJECTS = $(am_cckdcdsk_OBJECTS) >-am__DEPENDENCIES_3 = libhercs.la libhercu.la libherct.la libhercd.la \ >- libherc.la >-am__DEPENDENCIES_4 = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) >-cckdcdsk_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_cckdcomp_OBJECTS = cckdcomp.$(OBJEXT) >-cckdcomp_OBJECTS = $(am_cckdcomp_OBJECTS) >-cckdcomp_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_cckddiag_OBJECTS = cckddiag.$(OBJEXT) >-cckddiag_OBJECTS = $(am_cckddiag_OBJECTS) >-cckddiag_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_cckdswap_OBJECTS = cckdswap.$(OBJEXT) >-cckdswap_OBJECTS = $(am_cckdswap_OBJECTS) >-cckdswap_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdcat_OBJECTS = dasdcat.$(OBJEXT) >-dasdcat_OBJECTS = $(am_dasdcat_OBJECTS) >-dasdcat_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdconv_OBJECTS = dasdconv.$(OBJEXT) >-dasdconv_OBJECTS = $(am_dasdconv_OBJECTS) >-dasdconv_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdcopy_OBJECTS = dasdcopy.$(OBJEXT) >-dasdcopy_OBJECTS = $(am_dasdcopy_OBJECTS) >-dasdcopy_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdinit_OBJECTS = dasdinit.$(OBJEXT) >-dasdinit_OBJECTS = $(am_dasdinit_OBJECTS) >-dasdinit_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdisup_OBJECTS = dasdisup.$(OBJEXT) >-dasdisup_OBJECTS = $(am_dasdisup_OBJECTS) >-dasdisup_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdload_OBJECTS = dasdload.$(OBJEXT) >-dasdload_OBJECTS = $(am_dasdload_OBJECTS) >-dasdload_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdls_OBJECTS = dasdls.$(OBJEXT) >-dasdls_OBJECTS = $(am_dasdls_OBJECTS) >-dasdls_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdpdsu_OBJECTS = dasdpdsu.$(OBJEXT) >-dasdpdsu_OBJECTS = $(am_dasdpdsu_OBJECTS) >-dasdpdsu_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dasdseq_OBJECTS = dasdseq.$(OBJEXT) >-dasdseq_OBJECTS = $(am_dasdseq_OBJECTS) >-dasdseq_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_dmap2hrc_OBJECTS = dmap2hrc.$(OBJEXT) >-dmap2hrc_OBJECTS = $(am_dmap2hrc_OBJECTS) >-dmap2hrc_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am__hercifc_SOURCES_DIST = hercifc.c >-@BUILD_HERCIFC_TRUE@am_hercifc_OBJECTS = hercifc.$(OBJEXT) >-hercifc_OBJECTS = $(am_hercifc_OBJECTS) >-@BUILD_HERCIFC_TRUE@hercifc_DEPENDENCIES = $(am__DEPENDENCIES_1) >-am__herclin_SOURCES_DIST = herclin.c hdlmain.c >-@BUILD_SHARED_TRUE@am_herclin_OBJECTS = herclin.$(OBJEXT) \ >-@BUILD_SHARED_TRUE@ hdlmain.$(OBJEXT) >-herclin_OBJECTS = $(am_herclin_OBJECTS) >-am_hercules_OBJECTS = bootstrap.$(OBJEXT) hdlmain.$(OBJEXT) >-hercules_OBJECTS = $(am_hercules_OBJECTS) >-am_hetget_OBJECTS = hetget.$(OBJEXT) >-hetget_OBJECTS = $(am_hetget_OBJECTS) >-hetget_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_hetinit_OBJECTS = hetinit.$(OBJEXT) >-hetinit_OBJECTS = $(am_hetinit_OBJECTS) >-hetinit_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_hetmap_OBJECTS = hetmap.$(OBJEXT) >-hetmap_OBJECTS = $(am_hetmap_OBJECTS) >-hetmap_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_hetupd_OBJECTS = hetupd.$(OBJEXT) >-hetupd_OBJECTS = $(am_hetupd_OBJECTS) >-hetupd_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_tapecopy_OBJECTS = tapecopy.$(OBJEXT) >-tapecopy_OBJECTS = $(am_tapecopy_OBJECTS) >-tapecopy_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_tapemap_OBJECTS = tapemap.$(OBJEXT) >-tapemap_OBJECTS = $(am_tapemap_OBJECTS) >-tapemap_DEPENDENCIES = $(am__DEPENDENCIES_4) >-am_tapesplt_OBJECTS = tapesplt.$(OBJEXT) >-tapesplt_OBJECTS = $(am_tapesplt_OBJECTS) >-tapesplt_DEPENDENCIES = $(am__DEPENDENCIES_4) >-DEFAULT_INCLUDES = -I. -I$(srcdir) -I. >-depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp >-am__depfiles_maybe = depfiles >-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ >- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) >-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ >- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ >- $(AM_CFLAGS) $(CFLAGS) >-CCLD = $(CC) >-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ >- $(AM_LDFLAGS) $(LDFLAGS) -o $@ >-SOURCES = $(dyngui_la_SOURCES) $(dyninst_la_SOURCES) \ >- $(hdt1052c_la_SOURCES) $(hdt1403_la_SOURCES) \ >- $(hdt2703_la_SOURCES) $(hdt2880_la_SOURCES) \ >- $(hdt3088_la_SOURCES) $(hdt3270_la_SOURCES) \ >- $(hdt3420_la_SOURCES) $(hdt3505_la_SOURCES) \ >- $(hdt3525_la_SOURCES) $(hdteq_la_SOURCES) \ >- $(hdtqeth_la_SOURCES) $(libherc_la_SOURCES) \ >- $(EXTRA_libherc_la_SOURCES) $(libhercd_la_SOURCES) \ >- $(libhercs_la_SOURCES) $(libherct_la_SOURCES) \ >- $(libhercu_la_SOURCES) $(cckdcdsk_SOURCES) $(cckdcomp_SOURCES) \ >- $(cckddiag_SOURCES) $(cckdswap_SOURCES) $(dasdcat_SOURCES) \ >- $(dasdconv_SOURCES) $(dasdcopy_SOURCES) $(dasdinit_SOURCES) \ >- $(dasdisup_SOURCES) $(dasdload_SOURCES) $(dasdls_SOURCES) \ >- $(dasdpdsu_SOURCES) $(dasdseq_SOURCES) $(dmap2hrc_SOURCES) \ >- $(hercifc_SOURCES) $(herclin_SOURCES) $(hercules_SOURCES) \ >- $(hetget_SOURCES) $(hetinit_SOURCES) $(hetmap_SOURCES) \ >- $(hetupd_SOURCES) $(tapecopy_SOURCES) $(tapemap_SOURCES) \ >- $(tapesplt_SOURCES) >-DIST_SOURCES = $(am__dyngui_la_SOURCES_DIST) \ >- $(am__dyninst_la_SOURCES_DIST) $(am__hdt1052c_la_SOURCES_DIST) \ >- $(am__hdt1403_la_SOURCES_DIST) $(am__hdt2703_la_SOURCES_DIST) \ >- $(am__hdt2880_la_SOURCES_DIST) $(am__hdt3088_la_SOURCES_DIST) \ >- $(am__hdt3270_la_SOURCES_DIST) $(am__hdt3420_la_SOURCES_DIST) \ >- $(am__hdt3505_la_SOURCES_DIST) $(am__hdt3525_la_SOURCES_DIST) \ >- $(am__hdteq_la_SOURCES_DIST) $(am__hdtqeth_la_SOURCES_DIST) \ >- $(am__libherc_la_SOURCES_DIST) $(EXTRA_libherc_la_SOURCES) \ >- $(libhercd_la_SOURCES) $(libhercs_la_SOURCES) \ >- $(libherct_la_SOURCES) $(am__libhercu_la_SOURCES_DIST) \ >- $(cckdcdsk_SOURCES) $(cckdcomp_SOURCES) $(cckddiag_SOURCES) \ >- $(cckdswap_SOURCES) $(dasdcat_SOURCES) $(dasdconv_SOURCES) \ >- $(dasdcopy_SOURCES) $(dasdinit_SOURCES) $(dasdisup_SOURCES) \ >- $(dasdload_SOURCES) $(dasdls_SOURCES) $(dasdpdsu_SOURCES) \ >- $(dasdseq_SOURCES) $(dmap2hrc_SOURCES) \ >- $(am__hercifc_SOURCES_DIST) $(am__herclin_SOURCES_DIST) \ >- $(hercules_SOURCES) $(hetget_SOURCES) $(hetinit_SOURCES) \ >- $(hetmap_SOURCES) $(hetupd_SOURCES) $(tapecopy_SOURCES) \ >- $(tapemap_SOURCES) $(tapesplt_SOURCES) >-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ >- html-recursive info-recursive install-data-recursive \ >- install-exec-recursive install-info-recursive \ >- install-recursive installcheck-recursive installdirs-recursive \ >- pdf-recursive ps-recursive uninstall-info-recursive \ >- uninstall-recursive >-HEADERS = $(noinst_HEADERS) >-ETAGS = etags >-CTAGS = ctags >-DIST_SUBDIRS = $(SUBDIRS) >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-distdir = $(PACKAGE)-$(VERSION) >-top_distdir = $(distdir) >-am__remove_distdir = \ >- { test ! -d $(distdir) \ >- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ >- && rm -fr $(distdir); }; } >-DIST_ARCHIVES = $(distdir).tar.gz >-GZIP_ENV = --best >-distuninstallcheck_listfiles = find . -type f -print >-distcleancheck_listfiles = find . -type f -print >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-AUTOMAKE_OPTIONS = foreign 1.5 >-ACLOCAL_AMFLAGS = -I m4 >-lns = @LN_S@ >-SUBDIRS = decNumber m4 po util html man . crypto >-LDADD = @LTLIBICONV@ @LTLIBINTL@ @LIBS@ >-AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/decNumber >-@BUILD_HERCIFC_FALSE@HERCIFC = >-@BUILD_HERCIFC_TRUE@HERCIFC = hercifc >-@BUILD_SHARED_FALSE@HERCLIN = >-@BUILD_SHARED_TRUE@HERCLIN = herclin >-fthreads_SRC = fthreads.c >-fishio_SRC = w32chan.c >-fishhang_SRC = fishhang.c >-@BUILD_FTHREADS_FALSE@FTHREADS = >-@BUILD_FTHREADS_TRUE@FTHREADS = $(fthreads_SRC) >-@BUILD_FTHREADS_FALSE@FISHIO = >-@BUILD_FTHREADS_TRUE@FISHIO = $(fishio_SRC) >-@BUILD_FISHHANG_FALSE@@BUILD_FTHREADS_TRUE@FISHHANG = >-@BUILD_FISHHANG_TRUE@@BUILD_FTHREADS_TRUE@FISHHANG = $(fishhang_SRC) >-@BUILD_FTHREADS_FALSE@FISHHANG = >- >-# We need to still include the source for the dynamic modules >-# in with the distribution regardless of whether or not the dyanmic >-# modules themselves are to be built so if dynamic load not possible, >-# then we need to include the source on the EXTRA_hercules_SOURCES >-# statement so even though they won't/don't actually get built, they >-# still nonetheless get included into distribution tarball. This is >-# *similar* to (bit not identical to) the way the fthreads sources >-# are handled. With the fthreads sources though, they can at least always >-# be built (even though they may not always generate any actual code >-# whenever they do) whereas the dynamic module source CANNOT (MUST not) >-# even be *attempted* to be "built" if support for building dynamic modules >-# doesn't even exist on the system doing the building. >-dynamic_SRC = dyngui.c \ >- dyninst.c \ >- hdteq.c >- >-dyndev_SRC = commadpt.c \ >- console.c \ >- cardpch.c \ >- cardrdr.c \ >- sockdev.c \ >- printer.c \ >- tapedev.c \ >- scsitape.c \ >- hetlib.c \ >- ctc_lcs.c \ >- ctc_ctci.c \ >- ctcadpt.c \ >- w32ctca.c \ >- hchan.c \ >- tuntap.c \ >- qeth.c \ >- con1052c.c >- >-@BUILD_SHARED_FALSE@XSTATIC = -static >- >-# -module : create a dlopen'able module >-# -no-undefined : required on all platform that do not allow shared modules >-# to have undefined symbols >-# $(LDADD) : Misc Linker flags set by autoconf >-# -export-dynamic : so dlsym works (to be verified - not sure it is necessary) >-# -avoid-version : needed.. Otherwise libtool gives crazy names to Windows >-# DLLs >-# >-@BUILD_SHARED_TRUE@XSTATIC = >-@OPTION_DYNAMIC_LOAD_FALSE@DYNSRC = $(dyndev_SRC) >-@OPTION_DYNAMIC_LOAD_TRUE@DYNSRC = >-@OPTION_DYNAMIC_LOAD_FALSE@LTDL = >-@OPTION_DYNAMIC_LOAD_TRUE@LTDL = ltdl.c >-@OPTION_DYNAMIC_LOAD_FALSE@DYNMOD_LD_FLAGS = >-@OPTION_DYNAMIC_LOAD_TRUE@DYNMOD_LD_FLAGS = -module \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -export-dynamic \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -avoid-version >- >-@OPTION_DYNAMIC_LOAD_FALSE@DYNMOD_LD_ADD = >-@OPTION_DYNAMIC_LOAD_TRUE@DYNMOD_LD_ADD = libherc.la \ >-@OPTION_DYNAMIC_LOAD_TRUE@ libhercs.la \ >-@OPTION_DYNAMIC_LOAD_TRUE@ libhercu.la \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(LDADD) >- >-@OPTION_DYNAMIC_LOAD_FALSE@LIB_LD_FLAGS = $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_FALSE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_FALSE@ -avoid-version >- >-@OPTION_DYNAMIC_LOAD_TRUE@LIB_LD_FLAGS = -export-dynamic \ >-@OPTION_DYNAMIC_LOAD_TRUE@ $(XSTATIC) \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -no-undefined \ >-@OPTION_DYNAMIC_LOAD_TRUE@ -avoid-version >- >- >-# >-# List of Libtool shared libraries & loadable modules >-# >-HERCLIBS = >-HERCLIBS2 = libhercs.la \ >- libhercu.la \ >- libherct.la \ >- libhercd.la \ >- libherc.la >- >-HERCMODS = dyngui.la \ >- dyninst.la \ >- hdteq.la \ >- hdt1403.la \ >- hdt2703.la \ >- hdt3088.la \ >- hdt3270.la \ >- hdt3420.la \ >- hdt3505.la \ >- hdt2880.la \ >- hdt3525.la \ >- hdtqeth.la \ >- hdt1052c.la >- >-@OPTION_DYNAMIC_LOAD_TRUE@modexec_LTLIBRARIES = $(HERCMODS) >-noinst_LTLIBRARIES = $(HERCLIBS) >-lib_LTLIBRARIES = $(HERCLIBS2) >- >-# >-# For each module: >-# >-# ModuleName_la_SOURCES = <list of source files> >-# ModuleName_la_LDFLAGS = $(DYNMOD_LD_FLAGS) (see above) >-# ModuleName_la_LIBADD = libherc.la (the Core Hercules Shared Library) >-# ModuleName_la_DEPENDENCIES = libherc.la (may not be necessary) >-# >-@OPTION_DYNAMIC_LOAD_TRUE@dyngui_la_SOURCES = dyngui.c >-@OPTION_DYNAMIC_LOAD_TRUE@dyngui_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@dyngui_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@dyninst_la_SOURCES = dyninst.c >-@OPTION_DYNAMIC_LOAD_TRUE@dyninst_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@dyninst_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdteq_la_SOURCES = hdteq.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdteq_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdteq_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1403_la_SOURCES = printer.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1403_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1403_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2880_la_SOURCES = hchan.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2880_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2880_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2703_la_SOURCES = commadpt.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2703_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt2703_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3088_la_SOURCES = ctc_lcs.c ctc_ctci.c ctcadpt.c w32ctca.c tuntap.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3088_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3088_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3270_la_SOURCES = console.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3270_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3270_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3420_la_SOURCES = tapedev.c scsitape.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3420_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3420_la_LIBADD = $(DYNMOD_LD_ADD) libherct.la >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3505_la_SOURCES = cardrdr.c sockdev.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3505_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3505_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3525_la_SOURCES = cardpch.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3525_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt3525_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdtqeth_la_SOURCES = qeth.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdtqeth_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdtqeth_la_LIBADD = $(DYNMOD_LD_ADD) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1052c_la_SOURCES = con1052c.c >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1052c_la_LDFLAGS = $(DYNMOD_LD_FLAGS) >-@OPTION_DYNAMIC_LOAD_TRUE@hdt1052c_la_LIBADD = $(DYNMOD_LD_ADD) >- >-# >-# Common data areas (shared) library >-# >-libhercs_la_SOURCES = hsys.c >-libhercs_la_LDFLAGS = $(LIB_LD_FLAGS) >-libhercs_la_LIBADD = $(LDADD) >- >-# >-# Tape utility subroutines (shared) library >-# >-libherct_la_SOURCES = sllib.c \ >- hetlib.c >- >-libherct_la_LDFLAGS = $(LIB_LD_FLAGS) >-libherct_la_LIBADD = $(LDADD) libhercs.la libhercu.la >- >-# >-# DASD utility subroutines (shared) library >-# >-libhercd_la_SOURCES = ckddasd.c \ >- fbadasd.c \ >- cckddasd.c \ >- cckdutil.c \ >- dasdtab.c \ >- cache.c \ >- dasdutil.c \ >- shared.c >- >-libhercd_la_LDFLAGS = $(LIB_LD_FLAGS) >-libhercd_la_LIBADD = $(LDADD) libhercs.la libhercu.la >- >-# >-# >-libhercu_la_SOURCES = version.c \ >- hscutl.c \ >- hscutl2.c \ >- codepage.c \ >- logger.c \ >- logmsg.c \ >- hdl.c \ >- hostinfo.c \ >- hsocket.c \ >- memrchr.c \ >- parser.c \ >- pttrace.c \ >- $(FTHREADS) \ >- $(FISHHANG) \ >- $(LTDL) >- >-libhercu_la_LDFLAGS = $(LIB_LD_FLAGS) >-libhercu_la_LIBADD = $(LDADD) libhercs.la >- >-# >-# Core Hercules (shared) library >-# >-libherc_la_SOURCES = hconsole.c \ >- w32util.c \ >- strsignal.c \ >- impl.c \ >- config.c \ >- bldcfg.c \ >- panel.c \ >- history.c \ >- fillfnam.c \ >- ipl.c \ >- assist.c \ >- dat.c \ >- stack.c \ >- cpu.c \ >- vstore.c \ >- general1.c \ >- general2.c \ >- pfpo.c \ >- plo.c \ >- control.c \ >- crypto.c \ >- io.c \ >- decimal.c \ >- service.c \ >- chsc.c \ >- opcode.c \ >- diagnose.c \ >- diagmssf.c \ >- vm.c \ >- channel.c \ >- external.c \ >- float.c \ >- trace.c \ >- machchk.c \ >- vector.c \ >- xstore.c \ >- cmpsc.c \ >- sie.c \ >- qdio.c \ >- clock.c \ >- timer.c \ >- esame.c \ >- ieee.c \ >- dfp.c \ >- machdep.h \ >- httpserv.c \ >- cgibin.c \ >- loadparm.c \ >- hsccmd.c \ >- hao.c \ >- hscmisc.c \ >- sr.c \ >- $(FISHIO) \ >- $(DYNSRC) \ >- ecpsvm.c >- >-EXTRA_libherc_la_SOURCES = $(fthreads_SRC) \ >- $(fishhang_SRC) \ >- $(fishio_SRC) \ >- memrchr.c \ >- $(dynamic_SRC) \ >- $(extra_SRC) \ >- $(dyndev_SRC) \ >- ltdl.c >- >-libherc_la_LDFLAGS = $(LIB_LD_FLAGS) >-libherc_la_LIBADD = libhercs.la \ >- libhercu.la \ >- libherct.la \ >- libhercd.la \ >- decNumber/libdecNumber.la \ >- $(LDADD) >- >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@HLDFLAGS = -dlopen self \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen dyngui.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen dyninst.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdteq.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt1403.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt3420.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt2703.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt3088.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt3270.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt3505.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt3525.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdtqeth.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ -dlopen hdt1052c.la >- >- >-# >-# THIS is the hercules executable. >-# hdlmain.c is requires so that dlopen(self) retrieves >-# the 'main' hdl symbols >-# >-@BUILD_SHARED_TRUE@@OPTION_DYNAMIC_LOAD_TRUE@HLDFLAGS = -dlopen self >-@OPTION_DYNAMIC_LOAD_FALSE@HLDFLAGS = >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@HDEPS = dyngui.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ dyninst.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdteq.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt1403.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt3420.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt2703.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt3088.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt3270.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt3505.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt3525.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdtqeth.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ hdt1052c.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ libherc.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ libherct.la \ >-@BUILD_SHARED_FALSE@@OPTION_DYNAMIC_LOAD_TRUE@ libhercd.la >- >-@BUILD_SHARED_TRUE@@OPTION_DYNAMIC_LOAD_TRUE@HDEPS = >-@OPTION_DYNAMIC_LOAD_FALSE@HDEPS = >-hercules_SOURCES = bootstrap.c \ >- hdlmain.c >- >-hercules_LDADD = libherc.la libhercs.la $(LDADD) >-hercules_LDFLAGS = $(HLDFLAGS) >-hercules_DEPENDENCIES = libherc.la libhercs.la $(HDEPS) >-@BUILD_SHARED_TRUE@herclin_SOURCES = herclin.c hdlmain.c >-@BUILD_SHARED_TRUE@herclin_LDADD = libherc.la libhercs.la $(LDADD) >-@BUILD_SHARED_TRUE@herclin_LDFLAGS = $(HLDFLAGS) >-@BUILD_SHARED_TRUE@herclin_DEPENDENCIES = libherc.la libhercs.la $(HDEPS) >- >-# >-# side binaries >-# >-tools_LD_FLAGS = >-tools_ADDLIBS = $(HERCLIBS2) $(LDADD) >-@BUILD_HERCIFC_TRUE@hercifc_SOURCES = hercifc.c >-@BUILD_HERCIFC_TRUE@hercifc_LDADD = $(LDADD) >-@BUILD_HERCIFC_TRUE@hercifc_LDFLAGS = $(tools_LD_FLAGS) >-dasdinit_SOURCES = dasdinit.c >-dasdinit_LDADD = $(tools_ADDLIBS) >-dasdinit_LDFLAGS = $(tools_LD_FLAGS) >-dasdisup_SOURCES = dasdisup.c >-dasdisup_LDADD = $(tools_ADDLIBS) >-dasdisup_LDFLAGS = $(tools_LD_FLAGS) >-dasdload_SOURCES = dasdload.c >-dasdload_LDADD = $(tools_ADDLIBS) >-dasdload_LDFLAGS = $(tools_LD_FLAGS) >-dasdconv_SOURCES = dasdconv.c >-dasdconv_LDADD = $(tools_ADDLIBS) >-dasdconv_LDFLAGS = $(tools_LD_FLAGS) >-dasdls_SOURCES = dasdls.c >-dasdls_LDADD = $(tools_ADDLIBS) >-dasdls_LDFLAGS = $(tools_LD_FLAGS) >-dasdcat_SOURCES = dasdcat.c >-dasdcat_LDADD = $(tools_ADDLIBS) >-dasdcat_LDFLAGS = $(tools_LD_FLAGS) >-dasdpdsu_SOURCES = dasdpdsu.c >-dasdpdsu_LDADD = $(tools_ADDLIBS) >-dasdpdsu_LDFLAGS = $(tools_LD_FLAGS) >-dasdseq_SOURCES = dasdseq.c >-dasdseq_LDADD = $(tools_ADDLIBS) >-dasdseq_LDFLAGS = $(tools_LD_FLAGS) >-tapecopy_SOURCES = tapecopy.c >-tapecopy_LDADD = $(tools_ADDLIBS) >-tapecopy_LDFLAGS = $(tools_LD_FLAGS) >-tapemap_SOURCES = tapemap.c >-tapemap_LDADD = $(tools_ADDLIBS) >-tapemap_LDFLAGS = $(tools_LD_FLAGS) >-tapesplt_SOURCES = tapesplt.c >-tapesplt_LDADD = $(tools_ADDLIBS) >-tapesplt_LDFLAGS = $(tools_LD_FLAGS) >-cckdcdsk_SOURCES = cckdcdsk.c >-cckdcdsk_LDADD = $(tools_ADDLIBS) >-cckdcdsk_LDFLAGS = $(tools_LD_FLAGS) >-cckdcomp_SOURCES = cckdcomp.c >-cckdcomp_LDADD = $(tools_ADDLIBS) >-cckdcomp_LDFLAGS = $(tools_LD_FLAGS) >-cckddiag_SOURCES = cckddiag.c >-cckddiag_LDADD = $(tools_ADDLIBS) >-cckddiag_LDFLAGS = $(tools_LD_FLAGS) >-dasdcopy_SOURCES = dasdcopy.c >-dasdcopy_LDADD = $(tools_ADDLIBS) >-dasdcopy_LDFLAGS = $(tools_LD_FLAGS) >-cckdswap_SOURCES = cckdswap.c >-cckdswap_LDADD = $(tools_ADDLIBS) >-cckdswap_LDFLAGS = $(tools_LD_FLAGS) >-hetget_SOURCES = hetget.c >-hetget_LDADD = $(tools_ADDLIBS) >-hetget_LDFLAGS = $(tools_LD_FLAGS) >-hetinit_SOURCES = hetinit.c >-hetinit_LDADD = $(tools_ADDLIBS) >-hetinit_LDFLAGS = $(tools_LD_FLAGS) >-hetmap_SOURCES = hetmap.c >-hetmap_LDADD = $(tools_ADDLIBS) >-hetmap_LDFLAGS = $(tools_LD_FLAGS) >-hetupd_SOURCES = hetupd.c >-hetupd_LDADD = $(tools_ADDLIBS) >-hetupd_LDFLAGS = $(tools_LD_FLAGS) >-dmap2hrc_SOURCES = dmap2hrc.c >-dmap2hrc_LDADD = $(tools_ADDLIBS) >-dmap2hrc_LDFLAGS = $(tools_LD_FLAGS) >- >-# >-# files that are not 'built' per-se >-# >-# >-# Also contains some WIN32 only source files >-# >-EXTRA_DIST = autoconf/config.rpath \ >- autoconf/mkinstalldirs \ >- COPYRIGHT \ >- hercules.cnf \ >- cckdfix.c \ >- README.COMMADPT \ >- README.CVS \ >- README.ECPSVM \ >- README.HAO \ >- README.HDL \ >- README.ISSUES \ >- README.MINGW \ >- README.NETWORKING \ >- README.OSX \ >- README.TAPE \ >- README.HERCLOGO \ >- CHANGES \ >- RELEASE.NOTES \ >- README.MSVC \ >- makefile.msvc \ >- makefile-dllmod.msvc \ >- msvc.makefile.includes/BZIP2_DIR.msvc \ >- msvc.makefile.includes/BZIP2_FLAGS.msvc \ >- msvc.makefile.includes/BZIP2_RULES.msvc \ >- msvc.makefile.includes/CONFIG.msvc \ >- msvc.makefile.includes/DEBUG_RETAIL.msvc \ >- msvc.makefile.includes/HERC_FLAGS.msvc \ >- msvc.makefile.includes/MOD_RULES1.msvc \ >- msvc.makefile.includes/MOD_RULES2.msvc \ >- msvc.makefile.includes/MODULES.msvc \ >- msvc.makefile.includes/OBJ_CODE.msvc \ >- msvc.makefile.includes/OUTDIR_RULES.msvc \ >- msvc.makefile.includes/OUTPUT_DIRS.msvc \ >- msvc.makefile.includes/PCRE_DIR.msvc \ >- msvc.makefile.includes/PCRE_FLAGS.msvc \ >- msvc.makefile.includes/PCRE_RULES.msvc \ >- msvc.makefile.includes/PRIM_RULES.msvc \ >- msvc.makefile.includes/VERSION.msvc \ >- msvc.makefile.includes/ZLIB_DIR.msvc \ >- msvc.makefile.includes/ZLIB_FLAGS.msvc \ >- msvc.makefile.includes/ZLIB_RULES.msvc \ >- makefile.bat \ >- Hercules.dsp \ >- Hercules.dsw \ >- Hercules.vcproj \ >- Hercules.sln \ >- hercver.rc \ >- build_pch.c \ >- conspawn.c \ >- getopt.c \ >- w32stape.c \ >- herclogo.txt \ >- hercules.ico >- >- >-# >-# Source Header files. No 'build' for those >-# >-noinst_HEADERS = fishhang.h \ >- hostinfo.h \ >- cpuint.h \ >- feat370.h \ >- feat390.h \ >- feat900.h \ >- featall.h \ >- featchk.h \ >- feature.h \ >- esa390.h \ >- opcode.h \ >- clock.h \ >- hercules.h \ >- inline.h \ >- dat.h \ >- vstore.h \ >- hbyteswp.h \ >- dasdblks.h \ >- hetlib.h \ >- version.h \ >- parser.h \ >- dasdtab.h \ >- sllib.h \ >- htypes.h \ >- fthreads.h \ >- w32chan.h \ >- w32ctca.h \ >- tt32api.h \ >- linklist.h \ >- ieee-w32.h \ >- httpmisc.h \ >- devtype.h \ >- codepage.h \ >- ctcadpt.h \ >- hercifc.h \ >- tuntap.h \ >- tapedev.h \ >- scsitape.h \ >- logger.h \ >- commadpt.h \ >- cache.h \ >- ecpsvm.h \ >- memrchr.h \ >- shared.h \ >- hscutl.h \ >- hdl.h \ >- crypto.h \ >- sockdev.h \ >- ltdl.h \ >- herc_getopt.h \ >- service.h \ >- chsc.h \ >- pttrace.h \ >- history.h \ >- sr.h \ >- hchan.h \ >- fillfnam.h \ >- hthreads.h \ >- hostopts.h \ >- w32util.h \ >- hconsts.h \ >- hmacros.h \ >- hstructs.h \ >- hexterns.h \ >- hconsole.h \ >- hextapi.h \ >- hstdinc.h \ >- hstdint.h \ >- hsocket.h \ >- w32stape.h \ >- w32dl.h \ >- hercwind.h \ >- getopt.h \ >- w32mtio.h \ >- $(extra_dynamic_SRC) >- >-all: config.h >- $(MAKE) $(AM_MAKEFLAGS) all-recursive >- >-.SUFFIXES: >-.SUFFIXES: .c .lo .o .obj >-am--refresh: >- @: >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ >- cd $(srcdir) && $(AUTOMAKE) --foreign \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --foreign Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- echo ' $(SHELL) ./config.status'; \ >- $(SHELL) ./config.status;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- $(SHELL) ./config.status --recheck >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(srcdir) && $(AUTOCONF) >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) >- >-config.h: stamp-h1 >- @if test ! -f $@; then \ >- rm -f stamp-h1; \ >- $(MAKE) stamp-h1; \ >- else :; fi >- >-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status >- @rm -f stamp-h1 >- cd $(top_builddir) && $(SHELL) ./config.status config.h >-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_srcdir) && $(AUTOHEADER) >- rm -f stamp-h1 >- touch $@ >- >-distclean-hdr: >- -rm -f config.h stamp-h1 >-install-libLTLIBRARIES: $(lib_LTLIBRARIES) >- @$(NORMAL_INSTALL) >- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" >- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ >- if test -f $$p; then \ >- f=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ >- $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ >- else :; fi; \ >- done >- >-uninstall-libLTLIBRARIES: >- @$(NORMAL_UNINSTALL) >- @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ >- p=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ >- $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ >- done >- >-clean-libLTLIBRARIES: >- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) >- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ >- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ >- test "$$dir" != "$$p" || dir=.; \ >- echo "rm -f \"$${dir}/so_locations\""; \ >- rm -f "$${dir}/so_locations"; \ >- done >-install-modexecLTLIBRARIES: $(modexec_LTLIBRARIES) >- @$(NORMAL_INSTALL) >- test -z "$(modexecdir)" || $(mkdir_p) "$(DESTDIR)$(modexecdir)" >- @list='$(modexec_LTLIBRARIES)'; for p in $$list; do \ >- if test -f $$p; then \ >- f=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=install $(modexecLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(modexecdir)/$$f'"; \ >- $(LIBTOOL) --mode=install $(modexecLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(modexecdir)/$$f"; \ >- else :; fi; \ >- done >- >-uninstall-modexecLTLIBRARIES: >- @$(NORMAL_UNINSTALL) >- @set -x; list='$(modexec_LTLIBRARIES)'; for p in $$list; do \ >- p=$(am__strip_dir) \ >- echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(modexecdir)/$$p'"; \ >- $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(modexecdir)/$$p"; \ >- done >- >-clean-modexecLTLIBRARIES: >- -test -z "$(modexec_LTLIBRARIES)" || rm -f $(modexec_LTLIBRARIES) >- @list='$(modexec_LTLIBRARIES)'; for p in $$list; do \ >- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ >- test "$$dir" != "$$p" || dir=.; \ >- echo "rm -f \"$${dir}/so_locations\""; \ >- rm -f "$${dir}/so_locations"; \ >- done >- >-clean-noinstLTLIBRARIES: >- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) >- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ >- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ >- test "$$dir" != "$$p" || dir=.; \ >- echo "rm -f \"$${dir}/so_locations\""; \ >- rm -f "$${dir}/so_locations"; \ >- done >-dyngui.la: $(dyngui_la_OBJECTS) $(dyngui_la_DEPENDENCIES) >- $(LINK) $(am_dyngui_la_rpath) $(dyngui_la_LDFLAGS) $(dyngui_la_OBJECTS) $(dyngui_la_LIBADD) $(LIBS) >-dyninst.la: $(dyninst_la_OBJECTS) $(dyninst_la_DEPENDENCIES) >- $(LINK) $(am_dyninst_la_rpath) $(dyninst_la_LDFLAGS) $(dyninst_la_OBJECTS) $(dyninst_la_LIBADD) $(LIBS) >-hdt1052c.la: $(hdt1052c_la_OBJECTS) $(hdt1052c_la_DEPENDENCIES) >- $(LINK) $(am_hdt1052c_la_rpath) $(hdt1052c_la_LDFLAGS) $(hdt1052c_la_OBJECTS) $(hdt1052c_la_LIBADD) $(LIBS) >-hdt1403.la: $(hdt1403_la_OBJECTS) $(hdt1403_la_DEPENDENCIES) >- $(LINK) $(am_hdt1403_la_rpath) $(hdt1403_la_LDFLAGS) $(hdt1403_la_OBJECTS) $(hdt1403_la_LIBADD) $(LIBS) >-hdt2703.la: $(hdt2703_la_OBJECTS) $(hdt2703_la_DEPENDENCIES) >- $(LINK) $(am_hdt2703_la_rpath) $(hdt2703_la_LDFLAGS) $(hdt2703_la_OBJECTS) $(hdt2703_la_LIBADD) $(LIBS) >-hdt2880.la: $(hdt2880_la_OBJECTS) $(hdt2880_la_DEPENDENCIES) >- $(LINK) $(am_hdt2880_la_rpath) $(hdt2880_la_LDFLAGS) $(hdt2880_la_OBJECTS) $(hdt2880_la_LIBADD) $(LIBS) >-hdt3088.la: $(hdt3088_la_OBJECTS) $(hdt3088_la_DEPENDENCIES) >- $(LINK) $(am_hdt3088_la_rpath) $(hdt3088_la_LDFLAGS) $(hdt3088_la_OBJECTS) $(hdt3088_la_LIBADD) $(LIBS) >-hdt3270.la: $(hdt3270_la_OBJECTS) $(hdt3270_la_DEPENDENCIES) >- $(LINK) $(am_hdt3270_la_rpath) $(hdt3270_la_LDFLAGS) $(hdt3270_la_OBJECTS) $(hdt3270_la_LIBADD) $(LIBS) >-hdt3420.la: $(hdt3420_la_OBJECTS) $(hdt3420_la_DEPENDENCIES) >- $(LINK) $(am_hdt3420_la_rpath) $(hdt3420_la_LDFLAGS) $(hdt3420_la_OBJECTS) $(hdt3420_la_LIBADD) $(LIBS) >-hdt3505.la: $(hdt3505_la_OBJECTS) $(hdt3505_la_DEPENDENCIES) >- $(LINK) $(am_hdt3505_la_rpath) $(hdt3505_la_LDFLAGS) $(hdt3505_la_OBJECTS) $(hdt3505_la_LIBADD) $(LIBS) >-hdt3525.la: $(hdt3525_la_OBJECTS) $(hdt3525_la_DEPENDENCIES) >- $(LINK) $(am_hdt3525_la_rpath) $(hdt3525_la_LDFLAGS) $(hdt3525_la_OBJECTS) $(hdt3525_la_LIBADD) $(LIBS) >-hdteq.la: $(hdteq_la_OBJECTS) $(hdteq_la_DEPENDENCIES) >- $(LINK) $(am_hdteq_la_rpath) $(hdteq_la_LDFLAGS) $(hdteq_la_OBJECTS) $(hdteq_la_LIBADD) $(LIBS) >-hdtqeth.la: $(hdtqeth_la_OBJECTS) $(hdtqeth_la_DEPENDENCIES) >- $(LINK) $(am_hdtqeth_la_rpath) $(hdtqeth_la_LDFLAGS) $(hdtqeth_la_OBJECTS) $(hdtqeth_la_LIBADD) $(LIBS) >-libherc.la: $(libherc_la_OBJECTS) $(libherc_la_DEPENDENCIES) >- $(LINK) -rpath $(libdir) $(libherc_la_LDFLAGS) $(libherc_la_OBJECTS) $(libherc_la_LIBADD) $(LIBS) >-libhercd.la: $(libhercd_la_OBJECTS) $(libhercd_la_DEPENDENCIES) >- $(LINK) -rpath $(libdir) $(libhercd_la_LDFLAGS) $(libhercd_la_OBJECTS) $(libhercd_la_LIBADD) $(LIBS) >-libhercs.la: $(libhercs_la_OBJECTS) $(libhercs_la_DEPENDENCIES) >- $(LINK) -rpath $(libdir) $(libhercs_la_LDFLAGS) $(libhercs_la_OBJECTS) $(libhercs_la_LIBADD) $(LIBS) >-libherct.la: $(libherct_la_OBJECTS) $(libherct_la_DEPENDENCIES) >- $(LINK) -rpath $(libdir) $(libherct_la_LDFLAGS) $(libherct_la_OBJECTS) $(libherct_la_LIBADD) $(LIBS) >-libhercu.la: $(libhercu_la_OBJECTS) $(libhercu_la_DEPENDENCIES) >- $(LINK) -rpath $(libdir) $(libhercu_la_LDFLAGS) $(libhercu_la_OBJECTS) $(libhercu_la_LIBADD) $(LIBS) >-install-binPROGRAMS: $(bin_PROGRAMS) >- @$(NORMAL_INSTALL) >- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" >- @list='$(bin_PROGRAMS)'; for p in $$list; do \ >- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ >- if test -f $$p \ >- || test -f $$p1 \ >- ; then \ >- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ >- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ >- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ >- else :; fi; \ >- done >- >-uninstall-binPROGRAMS: >- @$(NORMAL_UNINSTALL) >- @list='$(bin_PROGRAMS)'; for p in $$list; do \ >- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ >- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ >- rm -f "$(DESTDIR)$(bindir)/$$f"; \ >- done >- >-clean-binPROGRAMS: >- @list='$(bin_PROGRAMS)'; for p in $$list; do \ >- f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ >- echo " rm -f $$p $$f"; \ >- rm -f $$p $$f ; \ >- done >-cckdcdsk$(EXEEXT): $(cckdcdsk_OBJECTS) $(cckdcdsk_DEPENDENCIES) >- @rm -f cckdcdsk$(EXEEXT) >- $(LINK) $(cckdcdsk_LDFLAGS) $(cckdcdsk_OBJECTS) $(cckdcdsk_LDADD) $(LIBS) >-cckdcomp$(EXEEXT): $(cckdcomp_OBJECTS) $(cckdcomp_DEPENDENCIES) >- @rm -f cckdcomp$(EXEEXT) >- $(LINK) $(cckdcomp_LDFLAGS) $(cckdcomp_OBJECTS) $(cckdcomp_LDADD) $(LIBS) >-cckddiag$(EXEEXT): $(cckddiag_OBJECTS) $(cckddiag_DEPENDENCIES) >- @rm -f cckddiag$(EXEEXT) >- $(LINK) $(cckddiag_LDFLAGS) $(cckddiag_OBJECTS) $(cckddiag_LDADD) $(LIBS) >-cckdswap$(EXEEXT): $(cckdswap_OBJECTS) $(cckdswap_DEPENDENCIES) >- @rm -f cckdswap$(EXEEXT) >- $(LINK) $(cckdswap_LDFLAGS) $(cckdswap_OBJECTS) $(cckdswap_LDADD) $(LIBS) >-dasdcat$(EXEEXT): $(dasdcat_OBJECTS) $(dasdcat_DEPENDENCIES) >- @rm -f dasdcat$(EXEEXT) >- $(LINK) $(dasdcat_LDFLAGS) $(dasdcat_OBJECTS) $(dasdcat_LDADD) $(LIBS) >-dasdconv$(EXEEXT): $(dasdconv_OBJECTS) $(dasdconv_DEPENDENCIES) >- @rm -f dasdconv$(EXEEXT) >- $(LINK) $(dasdconv_LDFLAGS) $(dasdconv_OBJECTS) $(dasdconv_LDADD) $(LIBS) >-dasdcopy$(EXEEXT): $(dasdcopy_OBJECTS) $(dasdcopy_DEPENDENCIES) >- @rm -f dasdcopy$(EXEEXT) >- $(LINK) $(dasdcopy_LDFLAGS) $(dasdcopy_OBJECTS) $(dasdcopy_LDADD) $(LIBS) >-dasdinit$(EXEEXT): $(dasdinit_OBJECTS) $(dasdinit_DEPENDENCIES) >- @rm -f dasdinit$(EXEEXT) >- $(LINK) $(dasdinit_LDFLAGS) $(dasdinit_OBJECTS) $(dasdinit_LDADD) $(LIBS) >-dasdisup$(EXEEXT): $(dasdisup_OBJECTS) $(dasdisup_DEPENDENCIES) >- @rm -f dasdisup$(EXEEXT) >- $(LINK) $(dasdisup_LDFLAGS) $(dasdisup_OBJECTS) $(dasdisup_LDADD) $(LIBS) >-dasdload$(EXEEXT): $(dasdload_OBJECTS) $(dasdload_DEPENDENCIES) >- @rm -f dasdload$(EXEEXT) >- $(LINK) $(dasdload_LDFLAGS) $(dasdload_OBJECTS) $(dasdload_LDADD) $(LIBS) >-dasdls$(EXEEXT): $(dasdls_OBJECTS) $(dasdls_DEPENDENCIES) >- @rm -f dasdls$(EXEEXT) >- $(LINK) $(dasdls_LDFLAGS) $(dasdls_OBJECTS) $(dasdls_LDADD) $(LIBS) >-dasdpdsu$(EXEEXT): $(dasdpdsu_OBJECTS) $(dasdpdsu_DEPENDENCIES) >- @rm -f dasdpdsu$(EXEEXT) >- $(LINK) $(dasdpdsu_LDFLAGS) $(dasdpdsu_OBJECTS) $(dasdpdsu_LDADD) $(LIBS) >-dasdseq$(EXEEXT): $(dasdseq_OBJECTS) $(dasdseq_DEPENDENCIES) >- @rm -f dasdseq$(EXEEXT) >- $(LINK) $(dasdseq_LDFLAGS) $(dasdseq_OBJECTS) $(dasdseq_LDADD) $(LIBS) >-dmap2hrc$(EXEEXT): $(dmap2hrc_OBJECTS) $(dmap2hrc_DEPENDENCIES) >- @rm -f dmap2hrc$(EXEEXT) >- $(LINK) $(dmap2hrc_LDFLAGS) $(dmap2hrc_OBJECTS) $(dmap2hrc_LDADD) $(LIBS) >-hercifc$(EXEEXT): $(hercifc_OBJECTS) $(hercifc_DEPENDENCIES) >- @rm -f hercifc$(EXEEXT) >- $(LINK) $(hercifc_LDFLAGS) $(hercifc_OBJECTS) $(hercifc_LDADD) $(LIBS) >-herclin$(EXEEXT): $(herclin_OBJECTS) $(herclin_DEPENDENCIES) >- @rm -f herclin$(EXEEXT) >- $(LINK) $(herclin_LDFLAGS) $(herclin_OBJECTS) $(herclin_LDADD) $(LIBS) >-hercules$(EXEEXT): $(hercules_OBJECTS) $(hercules_DEPENDENCIES) >- @rm -f hercules$(EXEEXT) >- $(LINK) $(hercules_LDFLAGS) $(hercules_OBJECTS) $(hercules_LDADD) $(LIBS) >-hetget$(EXEEXT): $(hetget_OBJECTS) $(hetget_DEPENDENCIES) >- @rm -f hetget$(EXEEXT) >- $(LINK) $(hetget_LDFLAGS) $(hetget_OBJECTS) $(hetget_LDADD) $(LIBS) >-hetinit$(EXEEXT): $(hetinit_OBJECTS) $(hetinit_DEPENDENCIES) >- @rm -f hetinit$(EXEEXT) >- $(LINK) $(hetinit_LDFLAGS) $(hetinit_OBJECTS) $(hetinit_LDADD) $(LIBS) >-hetmap$(EXEEXT): $(hetmap_OBJECTS) $(hetmap_DEPENDENCIES) >- @rm -f hetmap$(EXEEXT) >- $(LINK) $(hetmap_LDFLAGS) $(hetmap_OBJECTS) $(hetmap_LDADD) $(LIBS) >-hetupd$(EXEEXT): $(hetupd_OBJECTS) $(hetupd_DEPENDENCIES) >- @rm -f hetupd$(EXEEXT) >- $(LINK) $(hetupd_LDFLAGS) $(hetupd_OBJECTS) $(hetupd_LDADD) $(LIBS) >-tapecopy$(EXEEXT): $(tapecopy_OBJECTS) $(tapecopy_DEPENDENCIES) >- @rm -f tapecopy$(EXEEXT) >- $(LINK) $(tapecopy_LDFLAGS) $(tapecopy_OBJECTS) $(tapecopy_LDADD) $(LIBS) >-tapemap$(EXEEXT): $(tapemap_OBJECTS) $(tapemap_DEPENDENCIES) >- @rm -f tapemap$(EXEEXT) >- $(LINK) $(tapemap_LDFLAGS) $(tapemap_OBJECTS) $(tapemap_LDADD) $(LIBS) >-tapesplt$(EXEEXT): $(tapesplt_OBJECTS) $(tapesplt_DEPENDENCIES) >- @rm -f tapesplt$(EXEEXT) >- $(LINK) $(tapesplt_LDFLAGS) $(tapesplt_OBJECTS) $(tapesplt_LDADD) $(LIBS) >- >-mostlyclean-compile: >- -rm -f *.$(OBJEXT) >- >-distclean-compile: >- -rm -f *.tab.c >- >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/assist.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bldcfg.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bootstrap.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cardpch.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cardrdr.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cckdcdsk.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cckdcomp.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cckddasd.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cckddiag.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cckdswap.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cckdutil.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgibin.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chsc.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ckddasd.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmpsc.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codepage.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commadpt.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/con1052c.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/control.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypto.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctc_ctci.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctc_lcs.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctcadpt.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdcat.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdconv.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdcopy.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdinit.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdisup.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdload.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdls.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdpdsu.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdseq.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdtab.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dasdutil.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dat.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decimal.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dfp.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diagmssf.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diagnose.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmap2hrc.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyngui.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dyninst.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecpsvm.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esame.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/external.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fbadasd.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fillfnam.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fishhang.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fthreads.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/general1.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/general2.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hao.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hchan.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hconsole.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hdl.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hdlmain.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hdteq.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hercifc.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/herclin.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hetget.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hetinit.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hetlib.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hetmap.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hetupd.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostinfo.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hsccmd.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hscmisc.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hscutl.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hscutl2.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hsocket.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hsys.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpserv.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieee.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impl.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipl.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadparm.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logger.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logmsg.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ltdl.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/machchk.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memrchr.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opcode.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pfpo.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plo.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printer.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pttrace.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qdio.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qeth.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scsitape.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shared.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sie.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sllib.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockdev.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sr.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strsignal.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tapecopy.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tapedev.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tapemap.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tapesplt.Po@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tuntap.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vm.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vstore.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/w32chan.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/w32ctca.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/w32util.Plo@am__quote@ >-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstore.Plo@am__quote@ >- >-.c.o: >-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(COMPILE) -c $< >- >-.c.obj: >-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` >- >-.c.lo: >-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ >-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >- >-# This directory's subdirectories are mostly independent; you can cd >-# into them and run `make' without going through this Makefile. >-# To change the values of `make' variables: instead of editing Makefiles, >-# (1) if the variable is set in `config.status', edit `config.status' >-# (which will cause the Makefiles to be regenerated when you run `make'); >-# (2) otherwise, pass the desired values on the `make' command line. >-$(RECURSIVE_TARGETS): >- @failcom='exit 1'; \ >- for f in x $$MAKEFLAGS; do \ >- case $$f in \ >- *=* | --[!k]*);; \ >- *k*) failcom='fail=yes';; \ >- esac; \ >- done; \ >- dot_seen=no; \ >- target=`echo $@ | sed s/-recursive//`; \ >- list='$(SUBDIRS)'; for subdir in $$list; do \ >- echo "Making $$target in $$subdir"; \ >- if test "$$subdir" = "."; then \ >- dot_seen=yes; \ >- local_target="$$target-am"; \ >- else \ >- local_target="$$target"; \ >- fi; \ >- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ >- || eval $$failcom; \ >- done; \ >- if test "$$dot_seen" = "no"; then \ >- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ >- fi; test -z "$$fail" >- >-mostlyclean-recursive clean-recursive distclean-recursive \ >-maintainer-clean-recursive: >- @failcom='exit 1'; \ >- for f in x $$MAKEFLAGS; do \ >- case $$f in \ >- *=* | --[!k]*);; \ >- *k*) failcom='fail=yes';; \ >- esac; \ >- done; \ >- dot_seen=no; \ >- case "$@" in \ >- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ >- *) list='$(SUBDIRS)' ;; \ >- esac; \ >- rev=''; for subdir in $$list; do \ >- if test "$$subdir" = "."; then :; else \ >- rev="$$subdir $$rev"; \ >- fi; \ >- done; \ >- rev="$$rev ."; \ >- target=`echo $@ | sed s/-recursive//`; \ >- for subdir in $$rev; do \ >- echo "Making $$target in $$subdir"; \ >- if test "$$subdir" = "."; then \ >- local_target="$$target-am"; \ >- else \ >- local_target="$$target"; \ >- fi; \ >- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ >- || eval $$failcom; \ >- done && test -z "$$fail" >-tags-recursive: >- list='$(SUBDIRS)'; for subdir in $$list; do \ >- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ >- done >-ctags-recursive: >- list='$(SUBDIRS)'; for subdir in $$list; do \ >- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ >- done >- >-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) >- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- mkid -fID $$unique >-tags: TAGS >- >-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ >- $(TAGS_FILES) $(LISP) >- tags=; \ >- here=`pwd`; \ >- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ >- include_option=--etags-include; \ >- empty_fix=.; \ >- else \ >- include_option=--include; \ >- empty_fix=; \ >- fi; \ >- list='$(SUBDIRS)'; for subdir in $$list; do \ >- if test "$$subdir" = .; then :; else \ >- test ! -f $$subdir/TAGS || \ >- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ >- fi; \ >- done; \ >- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ >- test -n "$$unique" || unique=$$empty_fix; \ >- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ >- $$tags $$unique; \ >- fi >-ctags: CTAGS >-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ >- $(TAGS_FILES) $(LISP) >- tags=; \ >- here=`pwd`; \ >- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ >- unique=`for i in $$list; do \ >- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >- done | \ >- $(AWK) ' { files[$$0] = 1; } \ >- END { for (i in files) print i; }'`; \ >- test -z "$(CTAGS_ARGS)$$tags$$unique" \ >- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ >- $$tags $$unique >- >-GTAGS: >- here=`$(am__cd) $(top_builddir) && pwd` \ >- && cd $(top_srcdir) \ >- && gtags -i $(GTAGS_ARGS) $$here >- >-distclean-tags: >- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >- >-distdir: $(DISTFILES) >- $(am__remove_distdir) >- mkdir $(distdir) >- $(mkdir_p) $(distdir)/autoconf $(distdir)/m4 $(distdir)/msvc.makefile.includes $(distdir)/po >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ >- if test "$$subdir" = .; then :; else \ >- test -d "$(distdir)/$$subdir" \ >- || $(mkdir_p) "$(distdir)/$$subdir" \ >- || exit 1; \ >- distdir=`$(am__cd) $(distdir) && pwd`; \ >- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ >- (cd $$subdir && \ >- $(MAKE) $(AM_MAKEFLAGS) \ >- top_distdir="$$top_distdir" \ >- distdir="$$distdir/$$subdir" \ >- distdir) \ >- || exit 1; \ >- fi; \ >- done >- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ >- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ >- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ >- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ >- || chmod -R a+r $(distdir) >-dist-gzip: distdir >- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz >- $(am__remove_distdir) >- >-dist-bzip2: distdir >- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 >- $(am__remove_distdir) >- >-dist-tarZ: distdir >- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z >- $(am__remove_distdir) >- >-dist-shar: distdir >- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz >- $(am__remove_distdir) >- >-dist-zip: distdir >- -rm -f $(distdir).zip >- zip -rq $(distdir).zip $(distdir) >- $(am__remove_distdir) >- >-dist dist-all: distdir >- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz >- $(am__remove_distdir) >- >-# This target untars the dist file and tries a VPATH configuration. Then >-# it guarantees that the distribution is self-contained by making another >-# tarfile. >-distcheck: dist >- case '$(DIST_ARCHIVES)' in \ >- *.tar.gz*) \ >- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ >- *.tar.bz2*) \ >- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ >- *.tar.Z*) \ >- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ >- *.shar.gz*) \ >- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ >- *.zip*) \ >- unzip $(distdir).zip ;;\ >- esac >- chmod -R a-w $(distdir); chmod a+w $(distdir) >- mkdir $(distdir)/_build >- mkdir $(distdir)/_inst >- chmod a-w $(distdir) >- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ >- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ >- && cd $(distdir)/_build \ >- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ >- $(DISTCHECK_CONFIGURE_FLAGS) \ >- && $(MAKE) $(AM_MAKEFLAGS) \ >- && $(MAKE) $(AM_MAKEFLAGS) dvi \ >- && $(MAKE) $(AM_MAKEFLAGS) check \ >- && $(MAKE) $(AM_MAKEFLAGS) install \ >- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ >- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ >- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ >- distuninstallcheck \ >- && chmod -R a-w "$$dc_install_base" \ >- && ({ \ >- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ >- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ >- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ >- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ >- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ >- } || { rm -rf "$$dc_destdir"; exit 1; }) \ >- && rm -rf "$$dc_destdir" \ >- && $(MAKE) $(AM_MAKEFLAGS) dist \ >- && rm -rf $(DIST_ARCHIVES) \ >- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck >- $(am__remove_distdir) >- @(echo "$(distdir) archives ready for distribution: "; \ >- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ >- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' >-distuninstallcheck: >- @cd $(distuninstallcheck_dir) \ >- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ >- || { echo "ERROR: files left after uninstall:" ; \ >- if test -n "$(DESTDIR)"; then \ >- echo " (check DESTDIR support)"; \ >- fi ; \ >- $(distuninstallcheck_listfiles) ; \ >- exit 1; } >&2 >-distcleancheck: distclean >- @if test '$(srcdir)' = . ; then \ >- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ >- exit 1 ; \ >- fi >- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ >- || { echo "ERROR: files left in build directory after distclean:" ; \ >- $(distcleancheck_listfiles) ; \ >- exit 1; } >&2 >-check-am: all-am >-check: check-recursive >-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) config.h >-install-binPROGRAMS: install-libLTLIBRARIES >- >-installdirs: installdirs-recursive >-installdirs-am: >- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(modexecdir)" "$(DESTDIR)$(bindir)"; do \ >- test -z "$$dir" || $(mkdir_p) "$$dir"; \ >- done >-install: install-recursive >-install-exec: install-exec-recursive >-install-data: install-data-recursive >-uninstall: uninstall-recursive >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-recursive >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-recursive >- >-clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ >- clean-libtool clean-modexecLTLIBRARIES clean-noinstLTLIBRARIES \ >- mostlyclean-am >- >-distclean: distclean-recursive >- -rm -f $(am__CONFIG_DISTCLEAN_FILES) >- -rm -rf ./$(DEPDIR) >- -rm -f Makefile >-distclean-am: clean-am distclean-compile distclean-generic \ >- distclean-hdr distclean-libtool distclean-tags >- >-dvi: dvi-recursive >- >-dvi-am: >- >-html: html-recursive >- >-info: info-recursive >- >-info-am: >- >-install-data-am: >- >-install-exec-am: install-binPROGRAMS install-exec-local \ >- install-libLTLIBRARIES install-modexecLTLIBRARIES >- @$(NORMAL_INSTALL) >- $(MAKE) $(AM_MAKEFLAGS) install-exec-hook >- >-install-info: install-info-recursive >- >-install-man: >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-recursive >- -rm -f $(am__CONFIG_DISTCLEAN_FILES) >- -rm -rf $(top_srcdir)/autom4te.cache >- -rm -rf ./$(DEPDIR) >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-recursive >- >-mostlyclean-am: mostlyclean-compile mostlyclean-generic \ >- mostlyclean-libtool >- >-pdf: pdf-recursive >- >-pdf-am: >- >-ps: ps-recursive >- >-ps-am: >- >-uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ >- uninstall-libLTLIBRARIES uninstall-local \ >- uninstall-modexecLTLIBRARIES >- @$(NORMAL_INSTALL) >- $(MAKE) $(AM_MAKEFLAGS) uninstall-hook >- >-uninstall-info: uninstall-info-recursive >- >-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ >- check-am clean clean-binPROGRAMS clean-generic \ >- clean-libLTLIBRARIES clean-libtool clean-modexecLTLIBRARIES \ >- clean-noinstLTLIBRARIES clean-recursive ctags ctags-recursive \ >- dist dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ \ >- dist-zip distcheck distclean distclean-compile \ >- distclean-generic distclean-hdr distclean-libtool \ >- distclean-recursive distclean-tags distcleancheck distdir \ >- distuninstallcheck dvi dvi-am html html-am info info-am \ >- install install-am install-binPROGRAMS install-data \ >- install-data-am install-exec install-exec-am install-exec-hook \ >- install-exec-local install-info install-info-am \ >- install-libLTLIBRARIES install-man install-modexecLTLIBRARIES \ >- install-strip installcheck installcheck-am installdirs \ >- installdirs-am maintainer-clean maintainer-clean-generic \ >- maintainer-clean-recursive mostlyclean mostlyclean-compile \ >- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ >- pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ >- uninstall-binPROGRAMS uninstall-hook uninstall-info-am \ >- uninstall-libLTLIBRARIES uninstall-local \ >- uninstall-modexecLTLIBRARIES >- >- >-cckd: cckd2ckd$(EXEEXT) \ >- cckdcdsk$(EXEEXT) \ >- cckddiag$(EXEEXT) \ >- cckdcomp$(EXEEXT) \ >- cckdswap$(EXEEXT) \ >- dasdcopy$(EXEEXT) >- >-######################################################### >-# B U I L D R U L E S . . . >-######################################################### >-# >-# *** PROGRAMMING NOTE! *** >-# >-# The tabs in the below statements ARE significant! >-# Not all make programs accept (handle correctly) >-# make files that use blanks instead of tabs in their >-# build rules. Thus in order to remain compatible >-# with older make programs the below build rules >-# MUST use *tabs* and NOT BLANKS! >-# >-######################################################### >- >-tar: dist >- >-install-exec-local: >-@SETUID_HERCIFC_TRUE@ chown root $(DESTDIR)$(bindir)/hercifc >-@SETUID_HERCIFC_TRUE@ chmod 0750 $(DESTDIR)$(bindir)/hercifc >-@SETUID_HERCIFC_TRUE@ chmod +s $(DESTDIR)$(bindir)/hercifc >-@SETUID_HERCIFC_TRUE@ rm hercifc >- >-install-exec-hook: >- rm -f $(DESTDIR)$(libdir)/libherc*.a >- rm -f $(DESTDIR)$(modexecdir)/dyn*.a >- rm -f $(DESTDIR)$(modexecdir)/hdt*.a >-@BUILD_SHARED_FALSE@ rm -f $(DESTDIR)$(libdir)/libherc* >-# >-# NOTE : symbolic links point to FINAL destination (not to staged install) >-# >- rm -f $(DESTDIR)$(bindir)/fba2cfba$(EXEEXT) >- (cd $(DESTDIR)$(bindir); @LN_S@ ./dasdcopy$(EXEEXT) fba2cfba$(EXEEXT)) >- rm -f $(DESTDIR)$(bindir)/ckd2cckd$(EXEEXT) >- (cd $(DESTDIR)$(bindir); @LN_S@ ./dasdcopy$(EXEEXT) ckd2cckd$(EXEEXT)) >- rm -f $(DESTDIR)$(bindir)/cfba2fba$(EXEEXT) >- (cd $(DESTDIR)$(bindir); @LN_S@ ./dasdcopy$(EXEEXT) cfba2fba$(EXEEXT)) >- rm -f $(DESTDIR)$(bindir)/cckd2ckd$(EXEEXT) >- (cd $(DESTDIR)$(bindir); @LN_S@ ./dasdcopy$(EXEEXT) cckd2ckd$(EXEEXT)) >- >-uninstall-local: >- >-uninstall-hook: >- rm -f $(DESTDIR)$(bindir)/fba2cfba$(EXEEXT) >- rm -f $(DESTDIR)$(bindir)/ckd2cckd$(EXEEXT) >- rm -f $(DESTDIR)$(bindir)/cfba2fba$(EXEEXT) >- rm -f $(DESTDIR)$(bindir)/cckd2ckd$(EXEEXT) >- >-%.s: %.c >- $(COMPILE) -S $< >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/makefile.w32 hercules-20070717/makefile.w32 >--- hercules-3.05/makefile.w32 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/makefile.w32 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,356 @@ >+# >+# Makefile for Hercules S/370, ESA/390 and z/Architecture emulator >+# >+ >+# $Id: makefile.w32,v 1.58 2008/05/22 19:25:58 fish Exp $ >+ >+VERSION = \"3.05w32\" >+ >+# $Log: makefile.w32,v $ >+# Revision 1.58 2008/05/22 19:25:58 fish >+# Flex FakeTape support >+# >+# Revision 1.57 2008/03/25 11:41:31 fish >+# SCSI TAPE MODS part 1: groundwork: non-functional changes: >+# rename some functions, comments, general restructuring, etc. >+# New source modules awstape.c, omatape.c, hettape.c and >+# tapeccws.c added, but not yet used (all will be used in a future >+# commit though when tapedev.c code is eventually split) >+# >+# Revision 1.56 2008/03/02 22:50:35 rbowler >+# Restore tabs corrupted by previous modification >+# >+# Revision 1.55 2008/03/01 14:19:29 rbowler >+# Add new module general3.c for general-instructions-extension facility >+# >+# Revision 1.54 2007/06/20 23:40:58 jmaynard >+# 3.05 version bump. >+# >+# Revision 1.53 2007/06/02 13:46:41 rbowler >+# PFPO framework >+# >+# Revision 1.52 2006/12/08 09:43:29 jj >+# Add CVS message log >+# >+ >+# Change this if you want to install the Hercules executables somewhere >+# besides /usr/bin. The $PREFIX (which defaults to nothing) can be >+# overridden in the make command line, as in "PREFIX=/foo make install" >+# (the directory is only used when installing). >+DESTDIR = $(PREFIX)/usr/bin >+DESTLIB = $(PREFIX)/usr/lib >+ >+# For Linux use: >+CFLAGS = -O3 -march=pentium -fomit-frame-pointer >+CFLAGS += -DVERSION=$(VERSION) -DHAVE_INTTYPES_H -DMAX_CPU_ENGINES=2 >+CFLAGS += -W -Wall >+# For older Linux versions use: >+# For Linux/390 use: >+#CFLAGS = -DNO_BYTESWAP_H -DNO_ASM_BYTESWAP -DNO_ATTR_REGPARM >+ >+LFLAGS = -lpthread -lm -lz >+ >+#CFLAGS += -DHAVE_SQRTL >+ >+#CFLAGS += -DHAVE_SETRESUID >+ >+# Uncomment the lines below to enable Compressed CKD bzip2 compression >+CFLAGS += -DHAVE_LIBZ -DCCKD_BZIP2 >+LFLAGS += -lbz2 >+ >+# Uncomment the lines below to enable HET bzip2 compression >+CFLAGS += -DHET_BZIP2 >+DFLAGS += -lbz2 -lz >+ >+# Dynamic loader support >+#LFLAGS += -rdynamic -ldl >+CFLAGS += -DOPTION_DYNAMIC_LOAD >+ >+CFLAGS += -DOPTION_CONFIG_SYMBOLS >+ >+#cygwin >+CFLAGS += -DWIN32 >+CFLAGS += -DNO_SIGABEND_HANDLER >+CFLAGS += -DHAVE_STRSIGNAL >+CFLAGS += -DNO_SETUID >+CFLAGS += -DEXTERNALGUI >+DFLAGS += hercules.a -shared -dll >+ >+EXEFILES = hercules \ >+ dasdinit dasdisup dasdload dasdconv dasdls dasdcat dasdpdsu dasdseq \ >+ tapecopy tapemap tapesplt \ >+ cckdcdsk cckdcomp cckddiag cckdswap \ >+ cckd2ckd ckd2cckd fba2cfba cfba2fba dasdcopy \ >+ hetget hetinit hetmap hetupd \ >+ dmap2hrc >+DYNFILES = dyninst dyngui hdteq \ >+ hdt1403 hdt2703 hdt3088 hdt3270 hdt3420 hdt3505 hdt3525 \ >+ hdt1052c >+ >+ >+TARFILES = makefile *.c *.h hercules.cnf tapeconv.jcl dasdlist \ >+ html zzsa.cnf zzsacard.bin >+ >+hercules_OBJ = hostinfo.o impl.o config.o panel.o \ >+ version.o ipl.o assist.o dat.o stack.o cpu.o \ >+ vstore.o general1.o general2.o general3.o \ >+ pfpo.o plo.o control.o \ >+ io.o decimal.o service.o opcode.o diagnose.o \ >+ diagmssf.o vm.o channel.o ckddasd.o fbadasd.o \ >+ crypto.o external.o float.o trace.o chsc.o \ >+ machchk.o vector.o xstore.o cmpsc.o sie.o qdio.o \ >+ timer.o esame.o cckddasd.o cckdutil.o dasdtab.o \ >+ parser.o ieee.o dfp.o httpserv.o bldcfg.o sr.o \ >+ cgibin.o codepage.o loadparm.o fillfnam.o \ >+ hsccmd.o hscmisc.o history.o logger.o \ >+ cache.o ecpsvm.o shared.o logmsg.o hdl.o hdlmain.o \ >+ hscutl.o hscutl2.o hsys.o bootstrap.o pttrace.o \ >+ strsignal.o hconsole.o w32util.o >+ >+hercules_OBJ += memrchr.o >+hdt1403_OBJ = printer.o >+hdt2703_OBJ = commadpt.o >+hdt3088_OBJ = ctc_lcs.o ctc_ctci.o ctcadpt.o w32ctca.o tuntap.o >+hdt3270_OBJ = console.o >+hdt1052c_OBJ = con1052c.o >+hdt3420_OBJ = tapedev.o tapeccws.o faketape.o awstape.o hettape.o omatape.o scsitape.o hetlib.o >+hdt3505_OBJ = cardrdr.o sockdev.o >+hdt3525_OBJ = cardpch.o >+hdteq_OBJ = hdteq.o >+ >+#hercifc_OBJ = hercifc.o hostinfo.o version.o >+ >+dasdinit_OBJ = dasdinit.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdisup_OBJ = dasdisup.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdload_OBJ = dasdload.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdconv_OBJ = dasdconv.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdls_OBJ = dasdls.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdcat_OBJ = dasdcat.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdpdsu_OBJ = dasdpdsu.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+dasdseq_OBJ = dasdseq.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o \ >+ cache.o shared.o logmsg.o hsys.o pttrace.o >+ >+tapecopy_OBJ = tapecopy.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+tapemap_OBJ = tapemap.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+tapesplt_OBJ = tapesplt.o codepage.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckdcdsk_OBJ = cckdcdsk.o cckdutil.o dasdtab.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckdcomp_OBJ = cckdcomp.o cckdutil.o dasdtab.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckddiag_OBJ = cckddiag.o cckddasd.o cckdutil.o ckddasd.o codepage.o \ >+ dasdtab.o dasdutil.o fbadasd.o hostinfo.o version.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+cckdswap_OBJ = cckdswap.o cckdutil.o dasdtab.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+cckd2ckd_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ dasdtab.o ckddasd.o fbadasd.o cckddasd.o cckdutil.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+ckd2cckd_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ dasdtab.o ckddasd.o fbadasd.o cckddasd.o cckdutil.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+fba2cfba_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+cfba2fba_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+dasdcopy_OBJ = dasdcopy.o dasdutil.o codepage.o hostinfo.o version.o \ >+ ckddasd.o cckddasd.o cckdutil.o dasdtab.o fbadasd.o cache.o \ >+ shared.o logmsg.o hsys.o pttrace.o >+ >+hetget_OBJ = hetget.o hetlib.o sllib.o hostinfo.o version.o logmsg.o \ >+ codepage.o hsys.o pttrace.o >+ >+hetinit_OBJ = hetinit.o hetlib.o sllib.o hostinfo.o version.o logmsg.o \ >+ codepage.o hsys.o pttrace.o >+ >+hetmap_OBJ = hetmap.o hetlib.o sllib.o hostinfo.o version.o logmsg.o \ >+ codepage.o hsys.o pttrace.o >+ >+hetupd_OBJ = hetupd.o hetlib.o sllib.o codepage.o hostinfo.o version.o \ >+ logmsg.o hsys.o pttrace.o >+ >+dmap2hrc_OBJ = dmap2hrc.o hostinfo.o version.o logmsg.o pttrace.o hsys.o >+ >+dyninst_OBJ = dyninst.o >+ >+dyngui_OBJ = dyngui.o >+ >+HEADERS = codepage.h commadpt.h cpuint.h ctcadpt.h dasdblks.h \ >+ dasdtab.h dat.h devtype.h esa390.h feat370.h feat390.h \ >+ feat900.h featall.h featchk.h feature.h fishhang.h \ >+ fthreads.h hbyteswp.h hercifc.h hercnls.h hercules.h \ >+ hetlib.h hostinfo.h httpmisc.h htypes.h ieee-w32.h \ >+ inline.h linklist.h logger.h machdep.h opcode.h chsc.h \ >+ parser.h sllib.h tapedev.h tt32api.h tuntap.h version.h \ >+ vstore.h w32chan.h w32ctca.h shared.h hdl.h crypto.h \ >+ sockdev.h history.h sr.h hthreads.h hostopts.h w32util.h \ >+ hconsts.h hmacros.h hstructs.h hexterns.h hconsole.h >+ >+all: $(EXEFILES) $(DYNFILES) >+ >+hercules.def: $(hercules_OBJ) >+ dlltool --export-all-symbols --output-def hercules.def $(hercules_OBJ) >+ >+hercules.exp: hercules.def >+ dlltool --input-def hercules.def --dllname hercules.exe --output-exp hercules.exp >+ >+hercules.a: hercules.def >+ dlltool --input-def hercules.def --dllname hercules.exe --output-lib hercules.a >+ >+hercules: $(hercules_OBJ) hercules.exp >+ $(CC) -o hercules $(hercules_OBJ) hercules.exp $(LFLAGS) >+ >+$(hercules_OBJ): %.o: %.c $(HEADERS) >+ $(CC) $(CFLAGS) -o $@ -c $< >+ >+#hercifc: $(hercifc_OBJ) >+# $(CC) -o hercifc $(hercifc_OBJ) $(LFLAGS) >+ >+dasdinit: $(dasdinit_OBJ) >+ $(CC) -o dasdinit $(dasdinit_OBJ) $(LFLAGS) >+ >+dasdisup: $(dasdisup_OBJ) >+ $(CC) -o dasdisup $(dasdisup_OBJ) $(LFLAGS) >+ >+dasdload: $(dasdload_OBJ) >+ $(CC) -o dasdload $(dasdload_OBJ) $(LFLAGS) >+ >+dasdconv: $(dasdconv_OBJ) >+ $(CC) -o dasdconv $(dasdconv_OBJ) $(LFLAGS) >+ >+dasdls: $(dasdls_OBJ) >+ $(CC) -o dasdls $(dasdls_OBJ) $(LFLAGS) >+ >+dasdcat: $(dasdcat_OBJ) >+ $(CC) -o dasdcat $(dasdcat_OBJ) $(LFLAGS) >+ >+dasdpdsu: $(dasdpdsu_OBJ) >+ $(CC) -o dasdpdsu $(dasdpdsu_OBJ) $(LFLAGS) >+ >+dasdseq: $(dasdseq_OBJ) >+ $(CC) -o dasdseq $(dasdseq_OBJ) $(LFLAGS) >+ >+tapecopy: $(tapecopy_OBJ) >+ $(CC) -o tapecopy $(tapecopy_OBJ) $(LFLAGS) >+ >+tapemap: $(tapemap_OBJ) >+ $(CC) -o tapemap $(tapemap_OBJ) $(LFLAGS) >+ >+tapesplt: $(tapesplt_OBJ) >+ $(CC) -o tapesplt $(tapesplt_OBJ) $(LFLAGS) >+ >+cckdcdsk: $(cckdcdsk_OBJ) >+ $(CC) -o cckdcdsk $(cckdcdsk_OBJ) $(LFLAGS) >+ >+cckdcomp: $(cckdcomp_OBJ) >+ $(CC) -o cckdcomp $(cckdcomp_OBJ) $(LFLAGS) >+ >+cckddiag: $(cckddiag_OBJ) >+ $(CC) -o cckddiag $(cckddiag_OBJ) $(LFLAGS) >+ >+cckdswap: $(cckdswap_OBJ) >+ $(CC) -o cckdswap $(cckdswap_OBJ) $(LFLAGS) >+ >+cckd2ckd: $(cckd2ckd_OBJ) >+ $(CC) -o cckd2ckd $(cckd2ckd_OBJ) $(LFLAGS) >+ >+ckd2cckd: $(ckd2cckd_OBJ) >+ $(CC) -o ckd2cckd $(ckd2cckd_OBJ) $(LFLAGS) >+ >+fba2cfba: $(fba2cfba_OBJ) >+ $(CC) -o fba2cfba $(fba2cfba_OBJ) $(LFLAGS) >+ >+cfba2fba: $(cfba2fba_OBJ) >+ $(CC) -o cfba2fba $(cfba2fba_OBJ) $(LFLAGS) >+ >+dasdcopy: $(dasdcopy_OBJ) >+ $(CC) -o dasdcopy $(dasdcopy_OBJ) $(LFLAGS) >+ >+hetget: $(hetget_OBJ) >+ $(CC) -o hetget $(hetget_OBJ) $(LFLAGS) >+ >+hetinit: $(hetinit_OBJ) >+ $(CC) -o hetinit $(hetinit_OBJ) $(LFLAGS) >+ >+hetmap: $(hetmap_OBJ) >+ $(CC) -o hetmap $(hetmap_OBJ) $(LFLAGS) >+ >+hetupd: $(hetupd_OBJ) >+ $(CC) -o hetupd $(hetupd_OBJ) $(LFLAGS) >+ >+dmap2hrc: $(dmap2hrc_OBJ) >+ $(CC) -o dmap2hrc $(dmap2hrc_OBJ) $(LFLAGS) >+ >+dyninst: $(dyninst_OBJ) hercules.a >+ $(CC) -o dyninst.dll $(dyninst_OBJ) $(DFLAGS) >+ >+dyngui: $(dyngui_OBJ) hercules.a >+ $(CC) -o dyngui.dll $(dyngui_OBJ) $(DFLAGS) >+ >+hdt1403: $(hdt1403_OBJ) hercules.a >+ $(CC) -o hdt1403.dll $(hdt1403_OBJ) $(DFLAGS) >+ >+hdt2703: $(hdt2703_OBJ) hercules.a >+ $(CC) -o hdt2703.dll $(hdt2703_OBJ) $(DFLAGS) >+ >+hdt3088: $(hdt3088_OBJ) hercules.a >+ $(CC) -o hdt3088.dll $(hdt3088_OBJ) $(DFLAGS) >+ >+hdt3270: $(hdt3270_OBJ) hercules.a >+ $(CC) -o hdt3270.dll $(hdt3270_OBJ) $(DFLAGS) >+ >+hdt1052c: $(hdt1052c_OBJ) hercules.a >+ $(CC) -o hdt1052c.dll $(hdt1052c_OBJ) $(DFLAGS) >+ >+hdt3420: $(hdt3420_OBJ) hercules.a >+ $(CC) -o hdt3420.dll $(hdt3420_OBJ) $(DFLAGS) >+ >+hdt3505: $(hdt3505_OBJ) hercules.a >+ $(CC) -o hdt3505.dll $(hdt3505_OBJ) $(DFLAGS) >+ >+hdt3525: $(hdt3525_OBJ) hercules.a >+ $(CC) -o hdt3525.dll $(hdt3525_OBJ) $(DFLAGS) >+ >+hdteq: $(hdteq_OBJ) hercules.a >+ $(CC) -o hdteq.dll $(hdteq_OBJ) $(DFLAGS) >+ >+clean: >+ rm -rf $(EXEFILES) $(DYNFILES) *.o >+ >+tar: clean >+ (cd ..; tar cvzf hercules-$(VERSION).tar.gz hercules-$(VERSION)) >+ >+install: $(EXEFILES) >+ cp $(EXEFILES) $(DESTDIR) >+ cp $(DYNFILES) $(DESTLIB) >diff -Naupr hercules-3.05/man/cckd.4 hercules-20070717/man/cckd.4 >--- hercules-3.05/man/cckd.4 2003-03-10 23:54:07.000000000 +0100 >+++ hercules-20070717/man/cckd.4 2008-09-03 13:07:48.000000000 +0200 >@@ -99,12 +99,12 @@ End Of Track - indicated by 8X'FF' in th > > .SH "SEE ALSO" > .TP >-\fBhttp://www.conmicro.cx/hercules/\fP the Hercules emulator homepage. >+\fBhttp://www.hercules-390.org/\fP the Hercules emulator homepage. > .TP >-\fBhttp://www.conmicro.cx/hercules/cckddasd.html\fP which describes >+\fBhttp://www.hercules-390.org/cckddasd.html\fP which describes > the Hercules CCKD DASD facility. > .TP >-\fBhttp://www.conmicro.cx/hercules/hercconf.html\fP which describes >+\fBhttp://www.hercules-390.org/hercconf.html\fP which describes > the Hercules configuration file. > > .SH HISTORY >diff -Naupr hercules-3.05/man/cckddiag.1 hercules-20070717/man/cckddiag.1 >--- hercules-3.05/man/cckddiag.1 2003-03-10 23:54:25.000000000 +0100 >+++ hercules-20070717/man/cckddiag.1 2008-09-03 13:07:48.000000000 +0200 >@@ -74,9 +74,9 @@ hex display data at offset \fBoo\fP of l > .TP > cckd(4) > .TP >-http://www.conmicro.cx/hercules/ the Hercules emulator homepage. >+http://www.hercules-390.org/ the Hercules emulator homepage. > .TP >-http://www.conmicro.cx/hercules/cckddasd.html which describes >+http://www.hercules-390.org/cckddasd.html which describes > the Hercules CCKD DASD facility. > > .SH HISTORY >diff -Naupr hercules-3.05/man/.cvsignore hercules-20070717/man/.cvsignore >--- hercules-3.05/man/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/man/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+Makefile >+Makefile.in >diff -Naupr hercules-3.05/man/dasdseq.1 hercules-20070717/man/dasdseq.1 >--- hercules-3.05/man/dasdseq.1 2003-03-13 06:52:55.000000000 +0100 >+++ hercules-20070717/man/dasdseq.1 2008-09-03 13:07:48.000000000 +0200 >@@ -129,10 +129,10 @@ dasdpdsu for DSORG=PO datasets > .TP > cckd(4) for CCKD DASD > .TP >-http://www.conmicro.cx/hercules/cckddasd.html which describes >+http://www.hercules-390.org/cckddasd.html which describes > the Hercules CCKD DASD facility. > .TP >-http://www.conmicro.cx/hercules/ the Hercules emulator homepage. >+http://www.hercules-390.org/ the Hercules emulator homepage. > > .SH HISTORY > 2003-03-10 originally written by James M. Morrison >diff -Naupr hercules-3.05/man/Makefile.in hercules-20070717/man/Makefile.in >--- hercules-3.05/man/Makefile.in 2007-06-23 16:59:39.000000000 +0200 >+++ hercules-20070717/man/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,460 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = .. >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-subdir = man >-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = $(top_builddir)/config.h >-CONFIG_CLEAN_FILES = >-SOURCES = >-DIST_SOURCES = >-man1dir = $(mandir)/man1 >-am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man4dir)" >-man4dir = $(mandir)/man4 >-NROFF = nroff >-MANS = $(man_MANS) >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-man_MANS = cckddiag.1 cckd.4 dasdseq.1 >-EXTRA_DIST = $(man_MANS) >-all: all-am >- >-.SUFFIXES: >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --gnu man/Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >-install-man1: $(man1_MANS) $(man_MANS) >- @$(NORMAL_INSTALL) >- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" >- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ >- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ >- for i in $$l2; do \ >- case "$$i" in \ >- *.1*) list="$$list $$i" ;; \ >- esac; \ >- done; \ >- for i in $$list; do \ >- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ >- else file=$$i; fi; \ >- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ >- case "$$ext" in \ >- 1*) ;; \ >- *) ext='1' ;; \ >- esac; \ >- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ >- inst=`echo $$inst | sed -e 's/^.*\///'`; \ >- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ >- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ >- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ >- done >-uninstall-man1: >- @$(NORMAL_UNINSTALL) >- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ >- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ >- for i in $$l2; do \ >- case "$$i" in \ >- *.1*) list="$$list $$i" ;; \ >- esac; \ >- done; \ >- for i in $$list; do \ >- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ >- case "$$ext" in \ >- 1*) ;; \ >- *) ext='1' ;; \ >- esac; \ >- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ >- inst=`echo $$inst | sed -e 's/^.*\///'`; \ >- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ >- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ >- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ >- done >-install-man4: $(man4_MANS) $(man_MANS) >- @$(NORMAL_INSTALL) >- test -z "$(man4dir)" || $(mkdir_p) "$(DESTDIR)$(man4dir)" >- @list='$(man4_MANS) $(dist_man4_MANS) $(nodist_man4_MANS)'; \ >- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ >- for i in $$l2; do \ >- case "$$i" in \ >- *.4*) list="$$list $$i" ;; \ >- esac; \ >- done; \ >- for i in $$list; do \ >- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ >- else file=$$i; fi; \ >- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ >- case "$$ext" in \ >- 4*) ;; \ >- *) ext='4' ;; \ >- esac; \ >- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ >- inst=`echo $$inst | sed -e 's/^.*\///'`; \ >- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ >- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man4dir)/$$inst'"; \ >- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man4dir)/$$inst"; \ >- done >-uninstall-man4: >- @$(NORMAL_UNINSTALL) >- @list='$(man4_MANS) $(dist_man4_MANS) $(nodist_man4_MANS)'; \ >- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ >- for i in $$l2; do \ >- case "$$i" in \ >- *.4*) list="$$list $$i" ;; \ >- esac; \ >- done; \ >- for i in $$list; do \ >- ext=`echo $$i | sed -e 's/^.*\\.//'`; \ >- case "$$ext" in \ >- 4*) ;; \ >- *) ext='4' ;; \ >- esac; \ >- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ >- inst=`echo $$inst | sed -e 's/^.*\///'`; \ >- inst=`echo $$inst | sed '$(transform)'`.$$ext; \ >- echo " rm -f '$(DESTDIR)$(man4dir)/$$inst'"; \ >- rm -f "$(DESTDIR)$(man4dir)/$$inst"; \ >- done >-tags: TAGS >-TAGS: >- >-ctags: CTAGS >-CTAGS: >- >- >-distdir: $(DISTFILES) >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >-check-am: all-am >-check: check-am >-all-am: Makefile $(MANS) >-installdirs: >- for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man4dir)"; do \ >- test -z "$$dir" || $(mkdir_p) "$$dir"; \ >- done >-install: install-am >-install-exec: install-exec-am >-install-data: install-data-am >-uninstall: uninstall-am >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-am >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-am >- >-clean-am: clean-generic clean-libtool mostlyclean-am >- >-distclean: distclean-am >- -rm -f Makefile >-distclean-am: clean-am distclean-generic distclean-libtool >- >-dvi: dvi-am >- >-dvi-am: >- >-html: html-am >- >-info: info-am >- >-info-am: >- >-install-data-am: install-man >- >-install-exec-am: >- >-install-info: install-info-am >- >-install-man: install-man1 install-man4 >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-am >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-am >- >-mostlyclean-am: mostlyclean-generic mostlyclean-libtool >- >-pdf: pdf-am >- >-pdf-am: >- >-ps: ps-am >- >-ps-am: >- >-uninstall-am: uninstall-info-am uninstall-man >- >-uninstall-man: uninstall-man1 uninstall-man4 >- >-.PHONY: all all-am check check-am clean clean-generic clean-libtool \ >- distclean distclean-generic distclean-libtool distdir dvi \ >- dvi-am html html-am info info-am install install-am \ >- install-data install-data-am install-exec install-exec-am \ >- install-info install-info-am install-man install-man1 \ >- install-man4 install-strip installcheck installcheck-am \ >- installdirs maintainer-clean maintainer-clean-generic \ >- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ >- ps ps-am uninstall uninstall-am uninstall-info-am \ >- uninstall-man uninstall-man1 uninstall-man4 >- >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/msvc.makefile.includes/BZIP2_DIR.msvc hercules-20070717/msvc.makefile.includes/BZIP2_DIR.msvc >--- hercules-3.05/msvc.makefile.includes/BZIP2_DIR.msvc 2006-12-28 20:02:34.000000000 +0100 >+++ hercules-20070717/msvc.makefile.includes/BZIP2_DIR.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,11 +3,17 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >+# $Id: BZIP2_DIR.msvc,v 1.2 2008/05/06 19:56:29 rbowler Exp $ > # > # Handles support for BZIP2 compression... > # > # > # CHANGE HISTORY >+# $Log: BZIP2_DIR.msvc,v $ >+# Revision 1.2 2008/05/06 19:56:29 rbowler >+# Default BZIP2_DIR to winbuild/bzip2 if it exists >+# >+# > # DD/MM/YY Description > # > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc >@@ -32,10 +38,19 @@ > # --------------------------------------------------------------------- > > !IFDEF BZIP2_DIR >- > !IF "$(BZIP2_DIR)" == "NONE" > !UNDEF BZIP2_DIR >-!ELSEIF !EXIST("$(BZIP2_DIR)\bzlib.h") >+!ENDIF >+!ELSE >+# BZIP2_DIR defaults to winbuild\bzip2 relative to current directory >+!IF EXIST(winbuild\bzip2) >+BZIP2_DIR = winbuild\bzip2 >+!ENDIF >+!ENDIF >+ >+!IFDEF BZIP2_DIR >+ >+!IF !EXIST("$(BZIP2_DIR)\bzlib.h") > !ERROR BZIP2_DIR "$(BZIP2_DIR)\bzlib.h" does not exist. Check BZIP2_DIR > !ELSEIF !EXIST("$(BZIP2_DIR)\libbz2.lib") > !ERROR BZIP2_DIR "$(BZIP2_DIR)\libbz2.lib" does not exist. Check BZIP2_DIR >@@ -43,4 +58,8 @@ > !ERROR BZIP2_DIR "$(BZIP2_DIR)\libbz2.dll" does not exist. Check BZIP2_DIR > !ENDIF > >+!MESSAGE BZIP2 support will be included from "$(BZIP2_DIR)" >+ >+!ELSE >+!MESSAGE BZIP2 support will not be generated > !ENDIF >diff -Naupr hercules-3.05/msvc.makefile.includes/CONFIG.msvc hercules-20070717/msvc.makefile.includes/CONFIG.msvc >--- hercules-3.05/msvc.makefile.includes/CONFIG.msvc 2006-12-28 20:02:34.000000000 +0100 >+++ hercules-20070717/msvc.makefile.includes/CONFIG.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,17 +3,40 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >+# $Id: CONFIG.msvc,v 1.2 2008/01/31 22:32:36 rbowler Exp $ > # > # Set NODEBUG flag appropriately before !INCLUDEing <win32.mak> >+# and attempt to determine the Visual Studio compiler version > # > # > # CHANGE HISTORY >-# DD/MM/YY Description >+# $Log: CONFIG.msvc,v $ >+# Revision 1.2 2008/01/31 22:32:36 rbowler >+# Move MSVC compiler level determination to CONFIG.msvc >+# > # >+# DD/MM/YY Description > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc > # > # *************************************************************************** > >+# Use environment variables to determine the Visual Studio compiler level >+ >+!IFDEF VS90COMNTOOLS >+!MESSAGE Makefile will assume VS9 or VS2008Express (MSVC version 15) >+vsversion=9 >+!ELSEIFDEF VS80COMNTOOLS >+!MESSAGE Makefile will assume VS8 or VS2005Express (MSVC version 14) >+vsversion=8 >+!ELSEIFDEF VS70COMNTOOLS >+!MESSAGE Makefile will assume VS7 (MSVC version 13) >+vsversion=7 >+!ELSE >+!MESSAGE Makefile will assume VC++ Toolkit 2003 (MSVC version 13) >+vsversion=7 >+!ENDIF >+!MESSAGE >+ > # ------------------------------------------------- > # NOTE! must set the 'NODEBUG' variable properly > # BEFORE calling win32.mak since it uses it. >diff -Naupr hercules-3.05/msvc.makefile.includes/DEBUG_RETAIL.msvc hercules-20070717/msvc.makefile.includes/DEBUG_RETAIL.msvc >--- hercules-3.05/msvc.makefile.includes/DEBUG_RETAIL.msvc 2006-12-28 20:02:34.000000000 +0100 >+++ hercules-20070717/msvc.makefile.includes/DEBUG_RETAIL.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,6 +3,7 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >+# $Id: DEBUG_RETAIL.msvc,v 1.4 2008/01/31 22:32:36 rbowler Exp $ > # > # Sets appropriate compiler/linker flags (cdebug & ldebug) depending on > # whether a normal retail release or debugging version of the product is >@@ -10,6 +11,16 @@ > # > # > # CHANGE HISTORY >+# $Log: DEBUG_RETAIL.msvc,v $ >+# Revision 1.4 2008/01/31 22:32:36 rbowler >+# Move MSVC compiler level determination to CONFIG.msvc >+# >+# Revision 1.3 2008/01/23 17:59:28 rbowler >+# Modify detection of MSVC level in makefile >+# >+# Revision 1.2 2008/01/23 00:47:40 rbowler >+# Modifications for VS9 C++ 2008 Express by Charlie Brint >+# > # DD/MM/YY Description > # > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc >@@ -21,7 +32,7 @@ > # AFTER calling win32.mak since it sets it. > # ------------------------------------------------- > >-!IFDEF VS70COMNTOOLS >+!IF $(vsversion) < 8 > MAPFILE = /map:$(MAPDIR)\$(@B).map /mapinfo:lines > !ELSE > MAPFILE = /map:$(MAPDIR)\$(@B).map >@@ -39,8 +50,9 @@ MAPFILE = /map:$(MAPDIR)\$(@B).map > # kicks out the warning: "D9035 option 'QIfist' has been deprecated > # and will be removed in a future release"). Their documentation > # says to use the new /fp option instead. >+# rbowler: Compiler version check (vsversion) is now in CONFIG.msvc > >-!IFDEF VS70COMNTOOLS >+!IF $(vsversion) < 8 > > cflags = $(cflags) /QIfist > >@@ -50,7 +62,7 @@ cflags = $(cflags) /QIfist > cdebug = /O2 /D NDEBUG > ldebug = $(ldebug) > >-!ELSEIFDEF VS80COMNTOOLS >+!ELSE # vsversion >= 8 > > # PROGRAMMING NOTE: we're purposely discarding win32.mak's $(cdebug) settings > # and replacing them with our own by leaving "$(cdebug)" out of the statement >@@ -79,7 +91,7 @@ ldebug = /DEBUG /PDB:$(PDBDIR)\$(@B).pdb > > !ENDIF > >-!IFDEF VS80COMNTOOLS >+!IF $(vsversion) >= 8 > cflags = $(cflags) -D _CRT_SECURE_NO_DEPRECATE > cflags = $(cflags) -D _CRT_NONSTDC_NO_DEPRECATE > cflags = $(cflags) -D _USE_32BIT_TIME_T >diff -Naupr hercules-3.05/msvc.makefile.includes/MOD_RULES2.msvc hercules-20070717/msvc.makefile.includes/MOD_RULES2.msvc >--- hercules-3.05/msvc.makefile.includes/MOD_RULES2.msvc 2006-12-28 20:02:34.000000000 +0100 >+++ hercules-20070717/msvc.makefile.includes/MOD_RULES2.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -8,8 +8,16 @@ > # > # > # CHANGE HISTORY >-# DD/MM/YY Description >+# $Log: MOD_RULES2.msvc,v $ >+# Revision 1.2 2008/03/25 11:41:32 fish >+# SCSI TAPE MODS part 1: groundwork: non-functional changes: >+# rename some functions, comments, general restructuring, etc. >+# New source modules awstape.c, omatape.c, hettape.c and >+# tapeccws.c added, but not yet used (all will be used in a future >+# commit though when tapedev.c code is eventually split) >+# > # >+# DD/MM/YY Description > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc > # > # *************************************************************************** >@@ -58,7 +66,7 @@ $(X)hdt2703.dll: $(O)commadpt.obj $(O)he > $(X)hdt3088.dll: $(O)ctc_lcs.obj $(O)ctc_ctci.obj $(O)ctcadpt.obj $(O)w32ctca.obj $(O)tuntap.obj $(O)hengine.lib $(O)hutil.lib $(O)hsys.lib $(O)hercver.res > $(linkdll) > >-$(X)hdt3420.dll: $(O)tapedev.obj $(O)scsitape.obj $(O)hengine.lib $(O)htape.lib $(O)hutil.lib $(O)hsys.lib $(O)hercver.res >+$(X)hdt3420.dll: $(hdt3420_OBJ) $(O)hengine.lib $(O)htape.lib $(O)hutil.lib $(O)hsys.lib $(O)hercver.res > $(linkdll) > > $(X)hdt1403.dll: $(O)printer.obj $(O)hengine.lib $(O)hutil.lib $(O)hsys.lib $(O)hercver.res >diff -Naupr hercules-3.05/msvc.makefile.includes/OBJ_CODE.msvc hercules-20070717/msvc.makefile.includes/OBJ_CODE.msvc >--- hercules-3.05/msvc.makefile.includes/OBJ_CODE.msvc 2007-06-22 18:35:01.000000000 +0200 >+++ hercules-20070717/msvc.makefile.includes/OBJ_CODE.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,13 +3,26 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >-# $Id: OBJ_CODE.msvc,v 1.2 2007/06/02 13:46:42 rbowler Exp $ >+# $Id: OBJ_CODE.msvc,v 1.5 2008/05/22 19:25:58 fish Exp $ > # > # What object code goes in what module... > # > # > # CHANGE HISTORY > # $Log: OBJ_CODE.msvc,v $ >+# Revision 1.5 2008/05/22 19:25:58 fish >+# Flex FakeTape support >+# >+# Revision 1.4 2008/03/25 11:41:32 fish >+# SCSI TAPE MODS part 1: groundwork: non-functional changes: >+# rename some functions, comments, general restructuring, etc. >+# New source modules awstape.c, omatape.c, hettape.c and >+# tapeccws.c added, but not yet used (all will be used in a future >+# commit though when tapedev.c code is eventually split) >+# >+# Revision 1.3 2008/03/03 22:33:44 rbowler >+# Add new module general3.c for general-instructions-extension facility >+# > # Revision 1.2 2007/06/02 13:46:42 rbowler > # PFPO framework > # >@@ -94,6 +107,7 @@ hengine_OBJ = \ > $(O)float.obj \ > $(O)general1.obj \ > $(O)general2.obj \ >+ $(O)general3.obj \ > $(O)hconsole.obj \ > $(O)history.obj \ > $(O)hsccmd.obj \ >@@ -134,6 +148,14 @@ hmodule_OBJ = \ > $(O)printer.obj \ > $(O)qeth.obj \ > $(O)sockdev.obj \ >- $(O)tapedev.obj \ > $(O)tuntap.obj \ > $(O)w32ctca.obj >+ >+hdt3420_OBJ = \ >+ $(O)tapedev.obj \ >+ $(O)tapeccws.obj \ >+ $(O)awstape.obj \ >+ $(O)faketape.obj \ >+ $(O)hettape.obj \ >+ $(O)omatape.obj \ >+ $(O)scsitape.obj >diff -Naupr hercules-3.05/msvc.makefile.includes/PCRE_DIR.msvc hercules-20070717/msvc.makefile.includes/PCRE_DIR.msvc >--- hercules-3.05/msvc.makefile.includes/PCRE_DIR.msvc 2006-12-28 20:02:34.000000000 +0100 >+++ hercules-20070717/msvc.makefile.includes/PCRE_DIR.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,12 +3,18 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >+# $Id: PCRE_DIR.msvc,v 1.2 2008/05/05 21:50:10 rbowler Exp $ > # > # Handles support for PCRE (Perl Compatible Regular Expressions), > # for MSVC, needed by HAO (Hercules Automatic Operator) facility... > # > # > # CHANGE HISTORY >+# $Log: PCRE_DIR.msvc,v $ >+# Revision 1.2 2008/05/05 21:50:10 rbowler >+# Default PCRE_DIR to winbuild/pcre if it exists >+# >+# > # DD/MM/YY Description > # > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc >@@ -29,7 +35,15 @@ > !IFDEF PCRE_DIR > !IF "$(PCRE_DIR)" == "NONE" > !UNDEF PCRE_DIR >+!ENDIF > !ELSE >+# PCRE_DIR defaults to winbuild\pcre relative to current directory >+!IF EXIST(winbuild\pcre) >+PCRE_DIR = winbuild\pcre >+!ENDIF >+!ENDIF >+ >+!IFDEF PCRE_DIR > > PCRE_INCNAME = pcreposix.h > PCRE_LIBNAME1 = pcre.lib >@@ -55,5 +69,8 @@ PCRE_DLLPATH2 = $(PCRE_DIR)\bin\$(PCRE_D > !ERROR PCRE_DIR "$(PCRE_DLLPATH2)" does not exist. Check PCRE_DIR > !ENDIF > >-!ENDIF >+!MESSAGE PCRE support will be included from "$(PCRE_DIR)" >+ >+!ELSE >+!MESSAGE PCRE support will not be generated > !ENDIF >diff -Naupr hercules-3.05/msvc.makefile.includes/VERSION.msvc hercules-20070717/msvc.makefile.includes/VERSION.msvc >--- hercules-3.05/msvc.makefile.includes/VERSION.msvc 2007-06-24 06:16:50.000000000 +0200 >+++ hercules-20070717/msvc.makefile.includes/VERSION.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,11 +3,16 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >+# $Id: VERSION.msvc,v 1.5 2008/01/31 22:45:17 rbowler Exp $ > # > # Handles defining the product VERSION strings > # > # > # CHANGE HISTORY >+# $Log: VERSION.msvc,v $ >+# Revision 1.5 2008/01/31 22:45:17 rbowler >+# Fix LNK4010: invalid subsystem version number 4.0 >+# > # DD/MM/YY Description > # > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc >@@ -18,6 +23,7 @@ > !IFNDEF VERSION > > # >>> Jay! <<< Be sure to change the below V1/V2/V3/V4 values to match! >+# > # >>> Fish!! <<< If you move this again, please change the comment in > # configure.ac so I can find it again! :-) > >@@ -54,5 +60,15 @@ V4 = 0 > > !ENDIF > >+!IF $(vsversion) < 9 >+ > APPVER = 4.0 > TARGETOS = BOTH >+ >+!ELSE # $(vsversion) >= 9 >+ >+APPVER = 5.0 >+TARGETOS = WINNT >+ >+!ENDIF >+ >diff -Naupr hercules-3.05/msvc.makefile.includes/ZLIB_DIR.msvc hercules-20070717/msvc.makefile.includes/ZLIB_DIR.msvc >--- hercules-3.05/msvc.makefile.includes/ZLIB_DIR.msvc 2006-12-28 20:02:34.000000000 +0100 >+++ hercules-20070717/msvc.makefile.includes/ZLIB_DIR.msvc 2008-09-03 13:07:48.000000000 +0200 >@@ -3,11 +3,17 @@ > # -------------------------------------------------------------------------- > # (c) Copyright Roger Bowler, 2005-2007 > # -------------------------------------------------------------------------- >+# $Id: ZLIB_DIR.msvc,v 1.2 2008/05/06 20:16:22 rbowler Exp $ > # > # Handles support for ZLIB compression... > # > # > # CHANGE HISTORY >+# $Log: ZLIB_DIR.msvc,v $ >+# Revision 1.2 2008/05/06 20:16:22 rbowler >+# Make ZLIB_DIR default handling consistent with BZIP2 and PCRE >+# >+# > # DD/MM/YY Description > # > # 26/12/06 Fish: created by extraction from existing makefile-dllmod.msvc >@@ -33,9 +39,18 @@ > # ZLIB_DIR = C:\winbuild\zlib\win32_32 > # --------------------------------------------------------------------- > >+!IFDEF ZLIB_DIR >+!IF "$(ZLIB_DIR)" == "NONE" >+!UNDEF ZLIB_DIR >+!ENDIF >+!ELSE > # ISW 20050311 > # If winbuild\zlib\win32_32 exists (relative to current dir) > # then use it for ZLIB_DIR *UNLESS* ZLIB_DIR is already set. >+!IF EXIST(winbuild\zlib\win32_32) >+ZLIB_DIR = winbuild\zlib\win32_32 >+!ENDIF >+!ENDIF > # > # If ZLIB_DIR is improperly set, issue a message and exit *UNLESS* > # it is set to the word "NONE" >@@ -43,19 +58,18 @@ > # DBT 20050312 > # Minor changes to support paths with blanks in them. > >-!IFNDEF ZLIB_DIR >+!IFDEF ZLIB_DIR > >-!IF EXIST(winbuild\zlib\win32_32\include\zlib.h) >-ZLIB_DIR = winbuild\zlib\win32_32 >-!MESSAGE ZLIB_DIR not set. "$(ZLIB_DIR)" implied and checked >-!ENDIF >- >-!ELSE >- >-!IF "$(ZLIB_DIR)" == "NONE" >-!UNDEF ZLIB_DIR >-!ELSEIF !EXIST("$(ZLIB_DIR)\include\zlib.h") >+!IF !EXIST("$(ZLIB_DIR)\include\zlib.h") > !ERROR ZLIB_DIR "$(ZLIB_DIR)\include\zlib.h" does not exist. Check ZLIB_DIR >+!ELSEIF !EXIST("$(ZLIB_DIR)\lib\zdll.lib") >+!ERROR ZLIB_DIR "$(ZLIB_DIR)\lib\zdll.lib" does not exist. Check ZLIB_DIR >+!ELSEIF !EXIST("$(ZLIB_DIR)\zlib1.dll") >+!ERROR ZLIB_DIR "$(ZLIB_DIR)\zlib1.dll" does not exist. Check ZLIB_DIR > !ENDIF > >+!MESSAGE ZLIB support will be included from "$(ZLIB_DIR)" >+ >+!ELSE >+!MESSAGE ZLIB support will not be generated > !ENDIF >diff -Naupr hercules-3.05/omatape.c hercules-20070717/omatape.c >--- hercules-3.05/omatape.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/omatape.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,1440 @@ >+/* OMATAPE.C (c) Copyright Roger Bowler, 1999-2007 */ >+/* ESA/390 Tape Device Handler */ >+ >+/* Original Author: Roger Bowler */ >+/* Prime Maintainer: Ivan Warren */ >+/* Secondary Maintainer: "Fish" (David B. Trout) */ >+ >+// $Id: omatape.c,v 1.7 2008/06/22 05:54:30 fish Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This module contains the OMATAPE emulated tape format support. */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Five emulated tape formats are supported: */ >+/* */ >+/* 1. AWSTAPE This is the format used by the P/390. */ >+/* The entire tape is contained in a single flat file. */ >+/* A tape block consists of one or more block segments. */ >+/* Each block segment is preceded by a 6-byte header. */ >+/* Files are separated by tapemarks, which consist */ >+/* of headers with zero block length. */ >+/* AWSTAPE files are readable and writable. */ >+/* */ >+/* Support for AWSTAPE is in the "AWSTAPE.C" member. */ >+/* */ >+/* */ >+/* 2. OMATAPE This is the Optical Media Attach device format. */ >+/* Each physical file on the tape is represented by */ >+/* a separate flat file. The collection of files that */ >+/* make up the physical tape is obtained from an ASCII */ >+/* text file called the "tape description file", whose */ >+/* file name is always tapes/xxxxxx.tdf (where xxxxxx */ >+/* is the volume serial number of the tape). */ >+/* Three formats of tape files are supported: */ >+/* * FIXED files contain fixed length EBCDIC blocks */ >+/* with no headers or delimiters. The block length */ >+/* is specified in the TDF file. */ >+/* * TEXT files contain variable length ASCII blocks */ >+/* delimited by carriage return line feed sequences. */ >+/* The data is translated to EBCDIC by this module. */ >+/* * HEADER files contain variable length blocks of */ >+/* EBCDIC data prefixed by a 16-byte header. */ >+/* The TDF file and all of the tape files must reside */ >+/* reside under the same directory which is normally */ >+/* on CDROM but can be on disk. */ >+/* OMATAPE files are supported as read-only media. */ >+/* */ >+/* OMATAPE tape Support is in the "OMATAPE.C" member. */ >+/* */ >+/* */ >+/* 3. SCSITAPE This format allows reading and writing of 4mm or */ >+/* 8mm DAT tape, 9-track open-reel tape, or 3480-type */ >+/* cartridge on an appropriate SCSI-attached drive. */ >+/* All SCSI tapes are processed using the generalized */ >+/* SCSI tape driver (st.c) which is controlled using */ >+/* the MTIOCxxx set of IOCTL commands. */ >+/* PROGRAMMING NOTE: the 'tape' portability macros for */ >+/* physical (SCSI) tapes MUST be used for all tape i/o! */ >+/* */ >+/* SCSI tape Support is in the "SCSITAPE.C" member. */ >+/* */ >+/* */ >+/* 4. HET This format is based on the AWSTAPE format but has */ >+/* been extended to support compression. Since the */ >+/* basic file format has remained the same, AWSTAPEs */ >+/* can be read/written using the HET routines. */ >+/* */ >+/* Support for HET is in the "HETTAPE.C" member. */ >+/* */ >+/* */ >+/* 5. FAKETAPE This is the format used by Fundamental Software */ >+/* on their FLEX-ES systems. It it similar to the AWS */ >+/* format. The entire tape is contained in a single */ >+/* flat file. A tape block is preceded by a 12-ASCII- */ >+/* hex-characters header which indicate the size of */ >+/* the previous and next blocks. Files are separated */ >+/* by tapemarks which consist of headers with a zero */ >+/* current block length. FakeTapes are both readable */ >+/* and writable. */ >+/* */ >+/* Support for FAKETAPE is in the "FAKETAPE.C" member. */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Additional credits: */ >+/* 3480 commands contributed by Jan Jaeger */ >+/* Sense byte improvements by Jan Jaeger */ >+/* 3480 Read Block ID and Locate CCWs by Brandon Hill */ >+/* Unloaded tape support by Brandon Hill v209*/ >+/* HET format support by Leland Lucius v209*/ >+/* JCS - minor changes by John Summerfield 2003*/ >+/* PERFORM SUBSYSTEM FUNCTION / CONTROL ACCESS support by */ >+/* Adrian Trenkwalder (with futher enhancements by Fish) */ >+/* **INCOMPLETE** 3590 support by Fish (David B. Trout) */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Reference information: */ >+/* SC53-1200 S/370 and S/390 Optical Media Attach/2 User's Guide */ >+/* SC53-1201 S/370 and S/390 Optical Media Attach/2 Technical Ref */ >+/* SG24-2506 IBM 3590 Tape Subsystem Technical Guide */ >+/* GA32-0331 IBM 3590 Hardware Reference */ >+/* GA32-0329 IBM 3590 Introduction and Planning Guide */ >+/* SG24-2594 IBM 3590 Multiplatform Implementation */ >+/* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference */ >+/* GA32-0127 IBM 3490E Hardware Reference */ >+/* GC35-0152 EREP Release 3.5.0 Reference */ >+/* SA22-7204 ESA/390 Common I/O-Device Commands */ >+/* Flex FakeTape format (http://preview.tinyurl.com/67rgnp) */ >+/*-------------------------------------------------------------------*/ >+ >+// $Log: omatape.c,v $ >+// Revision 1.7 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.6 2008/05/22 19:25:58 fish >+// Flex FakeTape support >+// >+// Revision 1.5 2008/03/30 02:51:33 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.4 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.3 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.2 2008/03/26 07:23:51 fish >+// SCSI MODS part 2: split tapedev.c: aws, het, oma processing moved >+// to separate modules, CCW processing moved to separate module. >+// >+// Revision 1.1 2008/03/25 18:42:36 fish >+// AWS, HET and OMA processing logic moved to separate modules. >+// Tape device CCW processing logic also moved to separate module. >+// (tapedev.c was becoming too large and unwieldy) >+// >+// Revision 1.133 2008/03/13 01:44:17 kleonard >+// Fix residual read-only setting for tape device >+// >+// Revision 1.132 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.131 2008/03/04 00:25:25 ivan >+// Ooops.. finger check on 8809 case for numdevid.. Thanks Roger ! >+// >+// Revision 1.130 2008/03/02 12:00:04 ivan >+// Re-disable Sense ID on 3410, 3420, 8809 : report came in that it breaks MTS >+// >+// Revision 1.129 2007/12/14 17:48:52 rbowler >+// Enable SENSE ID CCW for 2703,3410,3420 >+// >+// Revision 1.128 2007/11/29 03:36:40 fish >+// Re-sequence CCW opcode 'case' statements to be in ascending order. >+// COSMETIC CHANGE ONLY. NO ACTUAL LOGIC WAS CHANGED. >+// >+// Revision 1.127 2007/11/13 15:10:52 rbowler >+// fsb_awstape support for segmented blocks >+// >+// Revision 1.126 2007/11/11 20:46:50 rbowler >+// read_awstape support for segmented blocks >+// >+// Revision 1.125 2007/11/09 14:59:34 rbowler >+// Move misplaced comment and restore original programming style >+// >+// Revision 1.124 2007/11/02 16:04:15 jmaynard >+// Removing redundant #if !(defined OPTION_SCSI_TAPE). >+// >+// Revision 1.123 2007/09/01 06:32:24 fish >+// Surround 3590 SCSI test w/#ifdef (OPTION_SCSI_TAPE) >+// >+// Revision 1.122 2007/08/26 14:37:17 fish >+// Fix missed unfixed 31 Aug 2006 non-SCSI tape Locate bug >+// >+// Revision 1.121 2007/07/24 23:06:32 fish >+// Force command-reject for 3590 Medium Sense and Mode Sense >+// >+// Revision 1.120 2007/07/24 22:54:49 fish >+// (comment changes only) >+// >+// Revision 1.119 2007/07/24 22:46:09 fish >+// Default to --blkid-32 and --no-erg for 3590 SCSI >+// >+// Revision 1.118 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// >+// Revision 1.117 2007/07/24 21:57:29 fish >+// Fix Win32 SCSI tape "Locate" and "ReadBlockId" SNAFU >+// >+// Revision 1.116 2007/06/23 00:04:18 ivan >+// Update copyright notices to include current year (2007) >+// >+// Revision 1.115 2007/04/06 15:40:25 fish >+// Fix Locate Block & Read BlockId for SCSI tape broken by 31 Aug 2006 preliminary-3590-support change >+// >+// Revision 1.114 2007/02/25 21:10:44 fish >+// Fix het_locate to continue on tapemark >+// >+// Revision 1.113 2007/02/03 18:58:06 gsmith >+// Fix MVT tape CMDREJ error >+// >+// Revision 1.112 2006/12/28 03:04:17 fish >+// PR# tape/100: Fix crash in "open_omatape()" in tapedev.c if bad filespec entered in OMA (TDF) file >+// >+// Revision 1.111 2006/12/11 17:25:59 rbowler >+// Change locblock from long to U32 to correspond with dev->blockid >+// >+// Revision 1.110 2006/12/08 09:43:30 jj >+// Add CVS message log >+// >+/*-------------------------------------------------------------------*/ >+ >+#include "hstdinc.h" >+#include "hercules.h" /* need Hercules control blocks */ >+#include "tapedev.h" /* Main tape handler header file */ >+ >+/*-------------------------------------------------------------------*/ >+//#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) >+ >+#ifdef ENABLE_TRACING_STMTS >+ #if !defined(DEBUG) >+ #warning DEBUG required for ENABLE_TRACING_STMTS >+ #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) >+#else >+ #undef TRACE >+ #undef ASSERT >+ #undef VERIFY >+ #define TRACE 1 ? ((void)0) : logmsg >+ #define ASSERT(a) >+ #define VERIFY(a) ((void)(a)) >+#endif >+ >+/*-------------------------------------------------------------------*/ >+/* Read the OMA tape descriptor file */ >+/*-------------------------------------------------------------------*/ >+int read_omadesc (DEVBLK *dev) >+{ >+int rc; /* Return code */ >+int i; /* Array subscript */ >+int pathlen; /* Length of TDF path name */ >+int tdfsize; /* Size of TDF file in bytes */ >+int filecount; /* Number of files */ >+int stmt; /* TDF file statement number */ >+int fd; /* TDF file descriptor */ >+struct stat statbuf; /* TDF file information */ >+U32 blklen; /* Fixed block length */ >+int tdfpos; /* Position in TDF buffer */ >+char *tdfbuf; /* -> TDF file buffer */ >+char *tdfrec; /* -> TDF record */ >+char *tdffilenm; /* -> Filename in TDF record */ >+char *tdfformat; /* -> Format in TDF record */ >+char *tdfreckwd; /* -> Keyword in TDF record */ >+char *tdfblklen; /* -> Length in TDF record */ >+OMATAPE_DESC *tdftab; /* -> Tape descriptor array */ >+BYTE c; /* Work area for sscanf */ >+char pathname[MAX_PATH]; /* file path in host format */ >+ >+ /* Isolate the base path name of the TDF file */ >+ for (pathlen = strlen(dev->filename); pathlen > 0; ) >+ { >+ pathlen--; >+ if (dev->filename[pathlen-1] == '/') break; >+ } >+#if 0 >+ // JCS thinks this is bad >+ if (pathlen < 7 >+ || strncasecmp(dev->filename+pathlen-7, "/tapes/", 7) != 0) >+ { >+ logmsg (_("HHC232I Invalid filename %s: " >+ "TDF files must be in the TAPES subdirectory\n"), >+ dev->filename+pathlen); >+ return -1; >+ } >+ pathlen -= 7; >+#endif >+ >+ /* Open the tape descriptor file */ >+ hostpath(pathname, dev->filename, sizeof(pathname)); >+ fd = open (pathname, O_RDONLY | O_BINARY); >+ if (fd < 0) >+ { >+ logmsg (_("HHCTA039E Error opening TDF file %s: %s\n"), >+ dev->filename, strerror(errno)); >+ return -1; >+ } >+ >+ /* Determine the size of the tape descriptor file */ >+ rc = fstat (fd, &statbuf); >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA040E %s fstat error: %s\n"), >+ dev->filename, strerror(errno)); >+ close (fd); >+ return -1; >+ } >+ tdfsize = statbuf.st_size; >+ >+ /* Obtain a buffer for the tape descriptor file */ >+ tdfbuf = malloc (tdfsize); >+ if (tdfbuf == NULL) >+ { >+ logmsg (_("HHCTA041E Cannot obtain buffer for TDF file %s: %s\n"), >+ dev->filename, strerror(errno)); >+ close (fd); >+ return -1; >+ } >+ >+ /* Read the tape descriptor file into the buffer */ >+ rc = read (fd, tdfbuf, tdfsize); >+ if (rc < tdfsize) >+ { >+ logmsg (_("HHCTA042E Error reading TDF file %s: %s\n"), >+ dev->filename, strerror(errno)); >+ free (tdfbuf); >+ close (fd); >+ return -1; >+ } >+ >+ /* Close the tape descriptor file */ >+ close (fd); fd = -1; >+ >+ /* Check that the first record is a TDF header */ >+ if (memcmp(tdfbuf, "@TDF", 4) != 0) >+ { >+ logmsg (_("HHCTA043E %s is not a valid TDF file\n"), >+ dev->filename); >+ free (tdfbuf); >+ return -1; >+ } >+ >+ /* Count the number of linefeeds in the tape descriptor file >+ to determine the size of the descriptor array required */ >+ for (i = 0, filecount = 0; i < tdfsize; i++) >+ { >+ if (tdfbuf[i] == '\n') filecount++; >+ } /* end for(i) */ >+ /* ISW Add 1 to filecount to add an extra EOT marker */ >+ filecount++; >+ >+ /* Obtain storage for the tape descriptor array */ >+ tdftab = (OMATAPE_DESC*)malloc (filecount * sizeof(OMATAPE_DESC)); >+ if (tdftab == NULL) >+ { >+ logmsg (_("HHCTA044E Cannot obtain buffer for TDF array: %s\n"), >+ strerror(errno)); >+ free (tdfbuf); >+ return -1; >+ } >+ >+ /* Build the tape descriptor array */ >+ for (filecount = 0, tdfpos = 0, stmt = 1; ; filecount++) >+ { >+ /* Clear the tape descriptor array entry */ >+ memset (&(tdftab[filecount]), 0, sizeof(OMATAPE_DESC)); >+ >+ /* Point past the next linefeed in the TDF file */ >+ while (tdfpos < tdfsize && tdfbuf[tdfpos++] != '\n'); >+ stmt++; >+ >+ /* Exit at end of TDF file */ >+ if (tdfpos >= tdfsize) break; >+ >+ /* Mark the end of the TDF record with a null terminator */ >+ tdfrec = tdfbuf + tdfpos; >+ while (tdfpos < tdfsize && tdfbuf[tdfpos]!='\r' >+ && tdfbuf[tdfpos]!='\n') tdfpos++; >+ c = tdfbuf[tdfpos]; >+ if (tdfpos >= tdfsize) break; >+ tdfbuf[tdfpos] = '\0'; >+ >+ /* Exit if TM or EOT record */ >+ if (strcasecmp(tdfrec, "TM") == 0) >+ { >+ tdftab[filecount].format='X'; >+ tdfbuf[tdfpos] = c; >+ continue; >+ } >+ if(strcasecmp(tdfrec, "EOT") == 0) >+ { >+ tdftab[filecount].format='E'; >+ break; >+ } >+ >+ /* Parse the TDF record */ >+ tdffilenm = strtok (tdfrec, " \t"); >+ tdfformat = strtok (NULL, " \t"); >+ tdfreckwd = strtok (NULL, " \t"); >+ tdfblklen = strtok (NULL, " \t"); >+ >+ /* Check for missing fields */ >+ if (tdffilenm == NULL || tdfformat == NULL) >+ { >+ logmsg (_("HHCTA045E Filename or format missing in " >+ "line %d of file %s\n"), >+ stmt, dev->filename); >+ free (tdftab); >+ free (tdfbuf); >+ return -1; >+ } >+ >+ /* Check that the file name is not too long */ >+ if (pathlen + 1 + strlen(tdffilenm) >+ > sizeof(tdftab[filecount].filename) - 1) >+ { >+ logmsg (_("HHCTA046E Filename %s too long in " >+ "line %d of file %s\n"), >+ tdffilenm, stmt, dev->filename); >+ free (tdftab); >+ free (tdfbuf); >+ return -1; >+ } >+ >+ /* Convert the file name to Unix format */ >+ for (i = 0; i < (int)strlen(tdffilenm); i++) >+ { >+ if (tdffilenm[i] == '\\') >+ tdffilenm[i] = '/'; >+/* JCS */ >+// else >+// tdffilenm[i] = tolower(tdffilenm[i]); >+ } /* end for(i) */ >+ >+ /* Prefix the file name with the base path name and >+ save it in the tape descriptor array */ >+ /* but only if the filename lacks a leading slash - JCS */ >+/* >+ strncpy (tdftab[filecount].filename, dev->filename, pathlen); >+ if (tdffilenm[0] != '/') >+ stlrcat ( tdftab[filecount].filename, "/", sizeof(tdftab[filecount].filename) ); >+ strlcat ( tdftab[filecount].filename, tdffilenm, sizeof(tdftab[filecount].filename) ); >+*/ >+ tdftab[filecount].filename[0] = 0; >+ >+ if ((tdffilenm[0] != '/') && (tdffilenm[1] != ':')) >+ { >+ strncpy (tdftab[filecount].filename, dev->filename, pathlen); >+ strlcat (tdftab[filecount].filename, "/", sizeof(tdftab[filecount].filename) ); >+ } >+ >+ strlcat (tdftab[filecount].filename, tdffilenm, sizeof(tdftab[filecount].filename) ); >+ >+ /* Check for valid file format code */ >+ if (strcasecmp(tdfformat, "HEADERS") == 0) >+ { >+ tdftab[filecount].format = 'H'; >+ } >+ else if (strcasecmp(tdfformat, "TEXT") == 0) >+ { >+ tdftab[filecount].format = 'T'; >+ } >+ else if (strcasecmp(tdfformat, "FIXED") == 0) >+ { >+ /* Check for RECSIZE keyword */ >+ if (tdfreckwd == NULL >+ || strcasecmp(tdfreckwd, "RECSIZE") != 0) >+ { >+ logmsg (_("HHCTA047E RECSIZE keyword missing in " >+ "line %d of file %s\n"), >+ stmt, dev->filename); >+ free (tdftab); >+ free (tdfbuf); >+ return -1; >+ } >+ >+ /* Check for valid fixed block length */ >+ if (tdfblklen == NULL >+ || sscanf(tdfblklen, "%u%c", &blklen, &c) != 1 >+ || blklen < 1 || blklen > MAX_BLKLEN) >+ { >+ logmsg (_("HHCTA048E Invalid record size %s in " >+ "line %d of file %s\n"), >+ tdfblklen, stmt, dev->filename); >+ free (tdftab); >+ free (tdfbuf); >+ return -1; >+ } >+ >+ /* Set format and block length in descriptor array */ >+ tdftab[filecount].format = 'F'; >+ tdftab[filecount].blklen = blklen; >+ } >+ else >+ { >+ logmsg (_("HHCTA049E Invalid record format %s in " >+ "line %d of file %s\n"), >+ tdfformat, stmt, dev->filename); >+ free (tdftab); >+ free (tdfbuf); >+ return -1; >+ } >+ tdfbuf[tdfpos] = c; >+ } /* end for(filecount) */ >+ /* Force an EOT as last entry (filecount is correctly adjusted here) */ >+ tdftab[filecount].format='E'; >+ >+ /* Save the file count and TDF array pointer in the device block */ >+ dev->omafiles = filecount+1; >+ dev->omadesc = tdftab; >+ >+ /* Release the TDF file buffer and exit */ >+ free (tdfbuf); >+ return 0; >+ >+} /* end function read_omadesc */ >+ >+/*-------------------------------------------------------------------*/ >+/* Open the OMATAPE file defined by the current file number */ >+/* */ >+/* The OMA tape descriptor file is read if necessary. */ >+/* If successful, the file descriptor is stored in the device block */ >+/* and the return value is zero. Otherwise the return value is -1. */ >+/*-------------------------------------------------------------------*/ >+int open_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int fd; /* File descriptor integer */ >+int rc; /* Return code */ >+OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >+char pathname[MAX_PATH]; /* file path in host format */ >+ >+ /* Read the OMA descriptor file if necessary */ >+ if (dev->omadesc == NULL) >+ { >+ rc = read_omadesc (dev); >+ if (rc < 0) >+ { >+ build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >+ return -1; >+ } >+ dev->blockid = 0; >+ } >+ >+ dev->fenced = 0; >+ >+ /* Unit exception if beyond end of tape */ >+ /* ISW: CHANGED PROCESSING - RETURN UNDEFINITE Tape Marks */ >+ /* NOTE: The last entry in the TDF table is ALWAYS */ >+ /* an EOT Condition */ >+ /* This is ensured by the TDF reading routine */ >+#if 0 >+ if (dev->curfilen >= dev->omafiles) >+ { >+ logmsg (_("HHCTA050E Attempt to access beyond end of tape %s\n"), >+ dev->filename); >+ >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ return -1; >+ } >+#else >+ if(dev->curfilen>dev->omafiles) >+ { >+ dev->curfilen=dev->omafiles; >+ return(0); >+ } >+#endif >+ >+ /* Point to the current file entry in the OMA descriptor table */ >+ omadesc = (OMATAPE_DESC*)(dev->omadesc); >+ omadesc += (dev->curfilen-1); >+ if(omadesc->format=='X') >+ { >+ return 0; >+ } >+ if(omadesc->format=='E') >+ { >+ return 0; >+ } >+ >+ /* Open the OMATAPE file */ >+ hostpath(pathname, omadesc->filename, sizeof(pathname)); >+ fd = open (pathname, O_RDONLY | O_BINARY); >+ >+ /* Check for successful open */ >+ if (fd < 0 || lseek (fd, 0, SEEK_END) > LONG_MAX) >+ { >+ if (fd >= 0) /* (if open was successful, then it) */ >+ errno = EOVERFLOW; /* (must have been a lseek overflow) */ >+ >+ logmsg (_("HHCTA051E Error opening %s: %s\n"), >+ omadesc->filename, strerror(errno)); >+ >+ if (fd >= 0) >+ close(fd); /* (close the file if it was opened) */ >+ >+ build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* OMA tapes are always read-only */ >+ dev->readonly = 1; >+ >+ /* Store the file descriptor in the device block */ >+ dev->fd = fd; >+ return 0; >+ >+} /* end function open_omatape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block header from an OMA tape file in OMA headers format */ >+/* */ >+/* If successful, return value is zero, and the current block */ >+/* length and previous and next header offsets are returned. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int readhdr_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ long blkpos, S32 *pcurblkl, S32 *pprvhdro, >+ S32 *pnxthdro, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+int padding; /* Number of padding bytes */ >+OMATAPE_BLKHDR omahdr; /* OMATAPE block header */ >+S32 curblkl; /* Length of current block */ >+S32 prvhdro; /* Offset of previous header */ >+S32 nxthdro; /* Offset of next header */ >+ >+ /* Seek to start of block header */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA052E Error seeking to offset "I32_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, omadesc->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Read the 16-byte block header */ >+ rc = read (dev->fd, &omahdr, sizeof(omahdr)); >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA053E Error reading block header " >+ "at offset "I32_FMTX" in file %s: %s\n"), >+ blkpos, omadesc->filename, >+ strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file within block header */ >+ if (rc < (int)sizeof(omahdr)) >+ { >+ logmsg (_("HHCTA054E Unexpected end of file in block header " >+ "at offset "I32_FMTX" in file %s\n"), >+ blkpos, omadesc->filename); >+ >+ /* Set unit check with data check and partial record */ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Extract the current block length and previous header offset */ >+ curblkl = (S32)(((U32)(omahdr.curblkl[3]) << 24) >+ | ((U32)(omahdr.curblkl[2]) << 16) >+ | ((U32)(omahdr.curblkl[1]) << 8) >+ | omahdr.curblkl[0]); >+ prvhdro = (S32)((U32)(omahdr.prvhdro[3]) << 24) >+ | ((U32)(omahdr.prvhdro[2]) << 16) >+ | ((U32)(omahdr.prvhdro[1]) << 8) >+ | omahdr.prvhdro[0]; >+ >+ /* Check for valid block header */ >+ if (curblkl < -1 || curblkl == 0 || curblkl > MAX_BLKLEN >+ || memcmp(omahdr.omaid, "@HDF", 4) != 0) >+ { >+ logmsg (_("HHCTA055E Invalid block header " >+ "at offset "I32_FMTX" in file %s\n"), >+ blkpos, omadesc->filename); >+ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Calculate the number of padding bytes which follow the data */ >+ padding = (16 - (curblkl & 15)) & 15; >+ >+ /* Calculate the offset of the next block header */ >+ nxthdro = blkpos + sizeof(OMATAPE_BLKHDR) + curblkl + padding; >+ >+ /* Return current block length and previous/next header offsets */ >+ *pcurblkl = curblkl; >+ *pprvhdro = prvhdro; >+ *pnxthdro = nxthdro; >+ return 0; >+ >+} /* end function readhdr_omaheaders */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from an OMA tape file in OMA headers format */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the file is closed, the current file */ >+/* number in the device block is incremented so that the next file */ >+/* will be opened by the next CCW, and the return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int read_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+long blkpos; /* Offset to block header */ >+S32 curblkl; /* Length of current block */ >+S32 prvhdro; /* Offset of previous header */ >+S32 nxthdro; /* Offset of next header */ >+ >+ /* Read the 16-byte block header */ >+ blkpos = dev->nxtblkpos; >+ rc = readhdr_omaheaders (dev, omadesc, blkpos, &curblkl, >+ &prvhdro, &nxthdro, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Update the offsets of the next and previous blocks */ >+ dev->nxtblkpos = nxthdro; >+ dev->prvblkpos = blkpos; >+ >+ /* Increment file number and return zero if tapemark */ >+ if (curblkl == -1) >+ { >+ close (dev->fd); >+ dev->fd = -1; >+ dev->curfilen++; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ return 0; >+ } >+ >+ /* Read data block from tape file */ >+ rc = read (dev->fd, buf, curblkl); >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA056E Error reading data block " >+ "at offset "I32_FMTX" in file %s: %s\n"), >+ blkpos, omadesc->filename, >+ strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Handle end of file within data block */ >+ if (rc < curblkl) >+ { >+ logmsg (_("HHCTA057E Unexpected end of file in data block " >+ "at offset "I32_FMTX" in file %s\n"), >+ blkpos, omadesc->filename); >+ >+ /* Set unit check with data check and partial record */ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Return block length */ >+ return curblkl; >+ >+} /* end function read_omaheaders */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from an OMA tape file in fixed block format */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the file is closed, the current file */ >+/* number in the device block is incremented so that the next file */ >+/* will be opened by the next CCW, and the return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int read_omafixed (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+off_t rcoff; /* Return code from lseek() */ >+int blklen; /* Block length */ >+long blkpos; /* Offset of block in file */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Seek to new current block position */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA058E Error seeking to offset "I32_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, omadesc->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Read fixed length block or short final block */ >+ blklen = read (dev->fd, buf, omadesc->blklen); >+ >+ /* Handle read error condition */ >+ if (blklen < 0) >+ { >+ logmsg (_("HHCTA059E Error reading data block " >+ "at offset "I32_FMTX" in file %s: %s\n"), >+ blkpos, omadesc->filename, >+ strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* At end of file return zero to indicate tapemark */ >+ if (blklen == 0) >+ { >+ close (dev->fd); >+ dev->fd = -1; >+ dev->curfilen++; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ return 0; >+ } >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos + blklen; >+ dev->prvblkpos = blkpos; >+ >+ /* Return block length, or zero to indicate tapemark */ >+ return blklen; >+ >+} /* end function read_omafixed */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from an OMA tape file in ASCII text format */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the file is closed, the current file */ >+/* number in the device block is incremented so that the next file */ >+/* will be opened by the next CCW, and the return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* */ >+/* The buf parameter points to the I/O buffer during a read */ >+/* operation, or is NULL for a forward space block operation. */ >+/*-------------------------------------------------------------------*/ >+int read_omatext (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t rcoff; /* Return code from lseek() */ >+int num; /* Number of characters read */ >+int pos; /* Position in I/O buffer */ >+long blkpos; /* Offset of block in file */ >+BYTE c; /* Character work area */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Seek to new current block position */ >+ rcoff = lseek (dev->fd, blkpos, SEEK_SET); >+ if (rcoff < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA060E Error seeking to offset "I32_FMTX" " >+ "in file %s: %s\n"), >+ blkpos, omadesc->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Read data from tape file until end of line */ >+ for (num = 0, pos = 0; ; ) >+ { >+ rc = read (dev->fd, &c, 1); >+ if (rc < 1) break; >+ >+ /* Treat X'1A' as end of file */ >+ if (c == '\x1A') >+ { >+ rc = 0; >+ break; >+ } >+ >+ /* Count characters read */ >+ num++; >+ >+ /* Ignore carriage return character */ >+ if (c == '\r') continue; >+ >+ /* Exit if newline character */ >+ if (c == '\n') break; >+ >+ /* Ignore characters in excess of I/O buffer length */ >+ if (pos >= MAX_BLKLEN) continue; >+ >+ /* Translate character to EBCDIC and copy to I/O buffer */ >+ if (buf != NULL) >+ buf[pos] = host_to_guest(c); >+ >+ /* Count characters copied or skipped */ >+ pos++; >+ >+ } /* end for(num) */ >+ >+ /* At end of file return zero to indicate tapemark */ >+ if (rc == 0 && num == 0) >+ { >+ close (dev->fd); >+ dev->fd = -1; >+ dev->curfilen++; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ return 0; >+ } >+ >+ /* Handle read error condition */ >+ if (rc < 0) >+ { >+ logmsg (_("HHCTA061E Error reading data block " >+ "at offset "I32_FMTX" in file %s: %s\n"), >+ blkpos, omadesc->filename, >+ strerror(errno)); >+ >+ build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Check for block not terminated by newline */ >+ if (rc < 1) >+ { >+ logmsg (_("HHCTA062E Unexpected end of file in data block " >+ "at offset "I32_FMTX" in file %s\n"), >+ blkpos, omadesc->filename); >+ >+ /* Set unit check with data check and partial record */ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Check for invalid zero length block */ >+ if (pos == 0) >+ { >+ logmsg (_("HHCTA063E Invalid zero length block " >+ "at offset "I32_FMTX" in file %s\n"), >+ blkpos, omadesc->filename); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Calculate the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos + num; >+ dev->prvblkpos = blkpos; >+ >+ /* Return block length */ >+ return pos; >+ >+} /* end function read_omatext */ >+ >+/*-------------------------------------------------------------------*/ >+/* Read a block from an OMA - Selection of format done here */ >+/* */ >+/* If successful, return value is block length read. */ >+/* If a tapemark was read, the file is closed, the current file */ >+/* number in the device block is incremented so that the next file */ >+/* will be opened by the next CCW, and the return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* */ >+/* The buf parameter points to the I/O buffer during a read */ >+/* operation, or is NULL for a forward space block operation. */ >+/*-------------------------------------------------------------------*/ >+int read_omatape (DEVBLK *dev, >+ BYTE *buf, BYTE *unitstat,BYTE code) >+{ >+int len; >+OMATAPE_DESC *omadesc; >+ omadesc = (OMATAPE_DESC*)(dev->omadesc); >+ omadesc += (dev->curfilen-1); >+ >+ switch (omadesc->format) >+ { >+ default: >+ case 'H': >+ len = read_omaheaders (dev, omadesc, buf, unitstat,code); >+ break; >+ case 'F': >+ len = read_omafixed (dev, omadesc, buf, unitstat,code); >+ break; >+ case 'T': >+ len = read_omatext (dev, omadesc, buf, unitstat,code); >+ break; >+ case 'X': >+ len=0; >+ dev->curfilen++; >+ break; >+ case 'E': >+ len=0; >+ break; >+ } /* end switch(omadesc->format) */ >+ >+ if (len >= 0) >+ dev->blockid++; >+ >+ return len; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space to next file of OMA tape device */ >+/* */ >+/* For OMA tape devices, the forward space file operation is */ >+/* achieved by closing the current file, and incrementing the */ >+/* current file number in the device block, which causes the */ >+/* next file will be opened when the next CCW is processed. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsf_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+ UNREFERENCED(unitstat); >+ UNREFERENCED(code); >+ >+ /* Close the current OMA file */ >+ if (dev->fd >= 0) >+ close (dev->fd); >+ dev->fd = -1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ >+ /* Increment the current file number */ >+ dev->curfilen++; >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function fsf_omatape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space over next block of OMA file in OMA headers format */ >+/* */ >+/* If successful, return value is the length of the block skipped. */ >+/* If the block skipped was a tapemark, the return value is zero, */ >+/* the file is closed, and the current file number in the device */ >+/* block is incremented so that the next file belonging to the OMA */ >+/* tape will be opened when the next CCW is executed. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsb_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+long blkpos; /* Offset of block header */ >+S32 curblkl; /* Length of current block */ >+S32 prvhdro; /* Offset of previous header */ >+S32 nxthdro; /* Offset of next header */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Read the 16-byte block header */ >+ rc = readhdr_omaheaders (dev, omadesc, blkpos, &curblkl, >+ &prvhdro, &nxthdro, unitstat,code); >+ if (rc < 0) return -1; >+ >+ /* Check if tapemark was skipped */ >+ if (curblkl == -1) >+ { >+ /* Close the current OMA file */ >+ if (dev->fd >= 0) >+ close (dev->fd); >+ dev->fd = -1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ >+ /* Increment the file number */ >+ dev->curfilen++; >+ >+ /* Return zero to indicate tapemark */ >+ return 0; >+ } >+ >+ /* Update the offsets of the next and previous blocks */ >+ dev->nxtblkpos = nxthdro; >+ dev->prvblkpos = blkpos; >+ >+ /* Return block length */ >+ return curblkl; >+ >+} /* end function fsb_omaheaders */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space over next block of OMA file in fixed block format */ >+/* */ >+/* If successful, return value is the length of the block skipped. */ >+/* If already at end of file, the return value is zero, */ >+/* the file is closed, and the current file number in the device */ >+/* block is incremented so that the next file belonging to the OMA */ >+/* tape will be opened when the next CCW is executed. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsb_omafixed (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ BYTE *unitstat,BYTE code) >+{ >+off_t eofpos; /* Offset of end of file */ >+off_t blkpos; /* Offset of current block */ >+int curblkl; /* Length of current block */ >+ >+ /* Initialize current block position */ >+ blkpos = dev->nxtblkpos; >+ >+ /* Seek to end of file to determine file size */ >+ eofpos = lseek (dev->fd, 0, SEEK_END); >+ if (eofpos < 0 || eofpos >= LONG_MAX) >+ { >+ /* Handle seek error condition */ >+ if ( eofpos >= LONG_MAX) errno = EOVERFLOW; >+ logmsg (_("HHCTA064E Error seeking to end of file %s: %s\n"), >+ omadesc->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Check if already at end of file */ >+ if (blkpos >= eofpos) >+ { >+ /* Close the current OMA file */ >+ if (dev->fd >= 0) >+ close (dev->fd); >+ dev->fd = -1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ >+ /* Increment the file number */ >+ dev->curfilen++; >+ >+ /* Return zero to indicate tapemark */ >+ return 0; >+ } >+ >+ /* Calculate current block length */ >+ curblkl = (int)(eofpos - blkpos); >+ if (curblkl > omadesc->blklen) >+ curblkl = omadesc->blklen; >+ >+ /* Update the offsets of the next and previous blocks */ >+ dev->nxtblkpos = (long)(blkpos + curblkl); >+ dev->prvblkpos = (long)(blkpos); >+ >+ /* Return block length */ >+ return curblkl; >+ >+} /* end function fsb_omafixed */ >+ >+/*-------------------------------------------------------------------*/ >+/* Forward space to next block of OMA file */ >+/* */ >+/* If successful, return value is the length of the block skipped. */ >+/* If forward spaced over end of file, return value is 0. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int fsb_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >+ >+ /* Point to the current file entry in the OMA descriptor table */ >+ omadesc = (OMATAPE_DESC*)(dev->omadesc); >+ omadesc += (dev->curfilen-1); >+ >+ /* Forward space block depending on OMA file type */ >+ switch (omadesc->format) >+ { >+ default: >+ case 'H': >+ rc = fsb_omaheaders (dev, omadesc, unitstat,code); >+ break; >+ case 'F': >+ rc = fsb_omafixed (dev, omadesc, unitstat,code); >+ break; >+ case 'T': >+ rc = read_omatext (dev, omadesc, NULL, unitstat,code); >+ break; >+ } /* end switch(omadesc->format) */ >+ >+ if (rc >= 0) dev->blockid++; >+ >+ return rc; >+ >+} /* end function fsb_omatape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous file of OMA tape device */ >+/* */ >+/* If the current file number is 1, then backspace file simply */ >+/* closes the file, setting the current position to start of tape. */ >+/* Otherwise, the current file is closed, the current file number */ >+/* is decremented, the new file is opened, and the new file is */ >+/* repositioned to just before the tape mark at the end of the file. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int bsf_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+off_t pos; /* File position */ >+OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >+S32 curblkl; /* Length of current block */ >+S32 prvhdro; /* Offset of previous header */ >+S32 nxthdro; /* Offset of next header */ >+ >+ /* Close the current OMA file */ >+ if (dev->fd >= 0) >+ close (dev->fd); >+ dev->fd = -1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ >+ /* Exit with tape at load point if currently on first file */ >+ if (dev->curfilen <= 1) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Decrement current file number */ >+ dev->curfilen--; >+ >+ /* Point to the current file entry in the OMA descriptor table */ >+ omadesc = (OMATAPE_DESC*)(dev->omadesc); >+ omadesc += (dev->curfilen-1); >+ >+ /* Open the new current file */ >+ rc = open_omatape (dev, unitstat,code); >+ if (rc < 0) return rc; >+ >+ /* Reposition before tapemark header at end of file, or >+ to end of file for fixed block or ASCII text files */ >+ pos = 0; >+ if ( 'H' == omadesc->format ) >+ pos -= sizeof(OMATAPE_BLKHDR); >+ >+ pos = lseek (dev->fd, pos, SEEK_END); >+ if (pos < 0) >+ { >+ /* Handle seek error condition */ >+ logmsg (_("HHCTA065E Error seeking to end of file %s: %s\n"), >+ omadesc->filename, strerror(errno)); >+ >+ /* Set unit check with equipment check */ >+ build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >+ dev->sense[0] = SENSE_EC; >+ *unitstat = CSW_CE | CSW_DE | CSW_UC; >+ return -1; >+ } >+ dev->nxtblkpos = pos; >+ dev->prvblkpos = -1; >+ >+ /* Determine the offset of the previous block */ >+ switch (omadesc->format) >+ { >+ case 'H': >+ /* For OMA headers files, read the tapemark header >+ and extract the previous block offset */ >+ rc = readhdr_omaheaders (dev, omadesc, pos, &curblkl, >+ &prvhdro, &nxthdro, unitstat,code); >+ if (rc < 0) return -1; >+ dev->prvblkpos = prvhdro; >+ break; >+ case 'F': >+ /* For OMA fixed block files, calculate the previous block >+ offset allowing for a possible short final block */ >+ pos = (pos + omadesc->blklen - 1) / omadesc->blklen; >+ dev->prvblkpos = (pos > 0 ? (pos - 1) * omadesc->blklen : -1); >+ break; >+ case 'T': >+ /* For OMA ASCII text files, the previous block is unknown */ >+ dev->prvblkpos = -1; >+ break; >+ } /* end switch(omadesc->format) */ >+ >+ /* Return normal status */ >+ return 0; >+ >+} /* end function bsf_omatape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Backspace to previous block of OMA file */ >+/* */ >+/* If successful, return value is +1. */ >+/* If current position is at start of a file, then a backspace file */ >+/* operation is performed to reset the position to the end of the */ >+/* previous file, and the return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* */ >+/* Note that for ASCII text files, the previous block position is */ >+/* known only if the previous CCW was a read or a write, so any */ >+/* attempt to issue more than one consecutive backspace block on */ >+/* an ASCII text file will fail with unit check status. */ >+/*-------------------------------------------------------------------*/ >+int bsb_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; /* Return code */ >+OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >+long blkpos; /* Offset of block header */ >+S32 curblkl; /* Length of current block */ >+S32 prvhdro; /* Offset of previous header */ >+S32 nxthdro; /* Offset of next header */ >+ >+ /* Point to the current file entry in the OMA descriptor table */ >+ omadesc = (OMATAPE_DESC*)(dev->omadesc); >+ omadesc += (dev->curfilen-1); >+ >+ /* Backspace file if current position is at start of file */ >+ if (dev->nxtblkpos == 0) >+ { >+ /* Unit check if already at start of tape */ >+ if (dev->curfilen <= 1) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Perform backspace file operation */ >+ rc = bsf_omatape (dev, unitstat,code); >+ if (rc < 0) return -1; >+ >+ dev->blockid--; >+ >+ /* Return zero to indicate tapemark detected */ >+ return 0; >+ } >+ >+ /* Unit check if previous block position is unknown */ >+ if (dev->prvblkpos < 0) >+ { >+ build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ return -1; >+ } >+ >+ /* Backspace to previous block position */ >+ blkpos = dev->prvblkpos; >+ >+ /* Determine new previous block position */ >+ switch (omadesc->format) >+ { >+ case 'H': >+ /* For OMA headers files, read the previous block header to >+ extract the block length and new previous block offset */ >+ rc = readhdr_omaheaders (dev, omadesc, blkpos, &curblkl, >+ &prvhdro, &nxthdro, unitstat,code); >+ if (rc < 0) return -1; >+ break; >+ case 'F': >+ /* For OMA fixed block files, calculate the new previous >+ block offset by subtracting the fixed block length */ >+ if (blkpos >= omadesc->blklen) >+ prvhdro = blkpos - omadesc->blklen; >+ else >+ prvhdro = -1; >+ break; >+ case 'T': >+ /* For OMA ASCII text files, new previous block is unknown */ >+ prvhdro = -1; >+ break; >+ } /* end switch(omadesc->format) */ >+ >+ /* Update the offsets of the next and previous blocks */ >+ dev->nxtblkpos = blkpos; >+ dev->prvblkpos = prvhdro; >+ >+ dev->blockid--; >+ >+ /* Return +1 to indicate backspace successful */ >+ return +1; >+ >+} /* end function bsb_omatape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Close an OMA tape file set */ >+/* */ >+/* All errors are ignored */ >+/*-------------------------------------------------------------------*/ >+void close_omatape2(DEVBLK *dev) >+{ >+ if (dev->fd >= 0) >+ close (dev->fd); >+ dev->fd=-1; >+ if (dev->omadesc != NULL) >+ { >+ free (dev->omadesc); >+ dev->omadesc = NULL; >+ } >+ >+ /* Reset the device dependent fields */ >+ dev->nxtblkpos=0; >+ dev->prvblkpos=-1; >+ dev->curfilen=1; >+ dev->blockid=0; >+ dev->fenced = 0; >+ dev->omafiles = 0; >+ return; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Close an OMA tape file set */ >+/* */ >+/* All errors are ignored */ >+/* Change the filename to '*' - unloaded */ >+/* TAPE REALLY UNLOADED */ >+/*-------------------------------------------------------------------*/ >+void close_omatape(DEVBLK *dev) >+{ >+ close_omatape2(dev); >+ strcpy(dev->filename,TAPE_UNLOADED); >+ dev->blockid = 0; >+ dev->fenced = 0; >+ return; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Rewind an OMA tape file set */ >+/* */ >+/* All errors are ignored */ >+/*-------------------------------------------------------------------*/ >+int rewind_omatape(DEVBLK *dev,BYTE *unitstat,BYTE code) >+{ >+ UNREFERENCED(unitstat); >+ UNREFERENCED(code); >+ close_omatape2(dev); >+ dev->fenced = 0; >+ return 0; >+} >diff -Naupr hercules-3.05/opcode.c hercules-20070717/opcode.c >--- hercules-3.05/opcode.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/opcode.c 2008-09-03 13:07:48.000000000 +0200 >@@ -5,9 +5,96 @@ > > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: opcode.c,v 1.124 2007/06/23 00:04:14 ivan Exp $ >+// $Id: opcode.c,v 1.153 2008/03/28 21:50:43 rbowler Exp $ > // > // $Log: opcode.c,v $ >+// Revision 1.153 2008/03/28 21:50:43 rbowler >+// Correct formatting of disassembly for relative instructions >+// >+// Revision 1.152 2008/03/10 15:06:41 rbowler >+// Fix warning: "/*" within comment >+// >+// Revision 1.151 2008/03/08 23:25:40 rbowler >+// Indicate CGRJ,CLGRJ,CGIJ,CLGIJ as ESAME only in opcode table >+// >+// Revision 1.150 2008/03/04 14:42:28 rbowler >+// Permit CGHSI,CLGHSI,CLFHSI instructions in S/370 and ESA/390 mode >+// >+// Revision 1.149 2008/03/03 23:20:03 rbowler >+// Allow MVGHI in S/370 and ESA/390 (does not use 64-bit regs) >+// >+// Revision 1.148 2008/03/03 23:14:43 rbowler >+// Remove extraneous trailing blanks (cosmetic change only) >+// >+// Revision 1.147 2008/03/01 23:12:39 rbowler >+// Permit AGSI,ALGSI instructions in S/370 and ESA/390 mode >+// >+// Revision 1.146 2008/03/01 12:19:04 rbowler >+// Rename new features to include the word facility >+// >+// Revision 1.145 2008/02/29 15:53:10 rbowler >+// Instruction decoder for C4xx and C6xx instructions >+// >+// Revision 1.144 2008/02/29 02:01:48 rbowler >+// Opcode tables for General-Instructions-Extension feature >+// >+// Revision 1.143 2008/02/29 00:57:03 rbowler >+// Modify compare_and_branch instruction names >+// >+// Revision 1.142 2008/02/29 00:08:25 rbowler >+// Additional RIE instruction formats >+// >+// Revision 1.141 2008/02/28 23:01:35 rbowler >+// RRS,SIL instruction formats >+// >+// Revision 1.140 2008/02/28 18:54:51 rbowler >+// RIS instruction format >+// >+// Revision 1.139 2008/02/28 17:18:00 rbowler >+// Opcodes for General-Instructions-Extension feature >+// >+// Revision 1.138 2008/02/28 11:08:26 rbowler >+// Opcodes for new instructions in zPOP-06 >+// >+// Revision 1.137 2008/02/28 10:11:50 rbowler >+// STFL bit settings for new features in zPOP-06 >+// >+// Revision 1.136 2008/02/18 17:28:20 rbowler >+// Misplaced definition causes duplicate symbol set_dfp_rounding_mode >+// >+// Revision 1.135 2008/01/21 22:20:35 rbowler >+// Correct previous changelog entry (ETF3 not ETF2) >+// >+// Revision 1.134 2008/01/21 14:02:13 rbowler >+// Permit Extended-Translation-Facility-3 in S/370 and ESA/390 modes >+// >+// Revision 1.133 2007/12/23 00:29:20 rbowler >+// reset_channel_path, cancel_subchannel unresolved if no channel subsystem feature >+// >+// Revision 1.132 2007/12/02 16:34:23 rbowler >+// Permit Extended-Translation-Facility-2 to be activated in S/370 mode >+// >+// Revision 1.131 2007/12/02 15:59:12 rbowler >+// Enable B9xx,EBxx opcodes in S/370 mode for ETF2 >+// >+// Revision 1.130 2007/12/02 15:45:17 rbowler >+// Permit Extended-Translation facility to be activated in S/370 mode >+// >+// Revision 1.129 2007/12/02 15:32:46 rbowler >+// Permit Compare-and-Move-Extended facility to be activated in S/370 mode >+// >+// Revision 1.128 2007/11/30 15:14:14 rbowler >+// Permit String-Instruction facility to be activated in S/370 mode >+// >+// Revision 1.127 2007/11/23 14:12:04 rbowler >+// Permit LDGR, LGDR in ESAME mode only >+// >+// Revision 1.126 2007/11/18 22:18:51 rbowler >+// Permit FEATURE_IMMEDIATE_AND_RELATIVE to be activated in S/370 mode >+// >+// Revision 1.125 2007/11/16 13:01:49 rbowler >+// Add HFP-multiply-add/subtract facility to ESA/390 >+// > // Revision 1.124 2007/06/23 00:04:14 ivan > // Update copyright notices to include current year (2007) > // >@@ -80,6 +167,7 @@ > UNDEF_INST(clear_subchannel) > UNDEF_INST(halt_subchannel) > UNDEF_INST(modify_subchannel) >+ UNDEF_INST(reset_channel_path) > UNDEF_INST(resume_subchannel) > UNDEF_INST(set_address_limit) > UNDEF_INST(set_channel_monitor) >@@ -118,6 +206,14 @@ > #endif /*!defined(FEATURE_IMMEDIATE_AND_RELATIVE)*/ > > >+#if !defined(FEATURE_STRING_INSTRUCTION) >+ UNDEF_INST(compare_logical_string) >+ UNDEF_INST(compare_until_substring_equal) >+ UNDEF_INST(move_string) >+ UNDEF_INST(search_string) >+#endif /*!defined(FEATURE_STRING_INSTRUCTION)*/ >+ >+ > #if !defined(FEATURE_COMPARE_AND_MOVE_EXTENDED) > UNDEF_INST(compare_logical_long_extended) > UNDEF_INST(move_long_extended) >@@ -244,9 +340,9 @@ > UNDEF_INST(store_clock_extended) > #endif /*!defined(FEATURE_EXTENDED_TOD_CLOCK)*/ > >-#if !defined(FEATURE_MVCOS) >+#if !defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS) > UNDEF_INST(move_with_optional_specifications) >-#endif /*!defined(FEATURE_MVCOS)*/ >+#endif /*!defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS)*/ > > #if !defined(FEATURE_EXTRACT_CPU_TIME) > UNDEF_INST(extract_cpu_time) >@@ -260,6 +356,98 @@ > UNDEF_INST(store_system_information) > #endif /*!defined(FEATURE_STORE_SYSTEM_INFORMATION)*/ > >+#if !defined(FEATURE_CONFIGURATION_TOPOLOGY_FACILITY) /*208*/ >+ UNDEF_INST(perform_topology_function) /*208*/ >+#endif /*!defined(FEATURE_CONFIGURATION_TOPOLOGY_FACILITY)*/ /*208*/ >+ >+#if !defined(FEATURE_ENHANCED_DAT_FACILITY) /*208*/ >+ UNDEF_INST(perform_frame_management_function) /*208*/ >+#endif /*!defined(FEATURE_ENHANCED_DAT_FACILITY)*/ /*208*/ >+ >+#if !defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY) /*208*/ >+ UNDEF_INST(execute_relative_long) /*208*/ >+#endif /*!defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY)*/ /*208*/ >+ >+#if !defined(FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY) /*208*/ >+ UNDEF_INST(add_immediate_long_storage) >+ UNDEF_INST(add_immediate_storage) >+ UNDEF_INST(add_logical_with_signed_immediate) >+ UNDEF_INST(add_logical_with_signed_immediate_long) >+ UNDEF_INST(compare_and_branch_register) >+ UNDEF_INST(compare_and_branch_long_register) >+ UNDEF_INST(compare_and_branch_relative_register) >+ UNDEF_INST(compare_and_branch_relative_long_register) >+ UNDEF_INST(compare_and_trap_long_register) >+ UNDEF_INST(compare_and_trap_register) >+ UNDEF_INST(compare_halfword_immediate_halfword_storage) >+ UNDEF_INST(compare_halfword_immediate_long_storage) >+ UNDEF_INST(compare_halfword_immediate_storage) >+ UNDEF_INST(compare_halfword_long) >+ UNDEF_INST(compare_halfword_relative_long) >+ UNDEF_INST(compare_halfword_relative_long_long) >+ UNDEF_INST(compare_immediate_and_branch) >+ UNDEF_INST(compare_immediate_and_branch_long) >+ UNDEF_INST(compare_immediate_and_branch_relative) >+ UNDEF_INST(compare_immediate_and_branch_relative_long) >+ UNDEF_INST(compare_immediate_and_trap) >+ UNDEF_INST(compare_immediate_and_trap_long) >+ UNDEF_INST(compare_logical_and_branch_long_register) >+ UNDEF_INST(compare_logical_and_branch_register) >+ UNDEF_INST(compare_logical_and_branch_relative_long_register) >+ UNDEF_INST(compare_logical_and_branch_relative_register) >+ UNDEF_INST(compare_logical_and_trap_long_register) >+ UNDEF_INST(compare_logical_and_trap_register) >+ UNDEF_INST(compare_logical_immediate_and_branch) >+ UNDEF_INST(compare_logical_immediate_and_branch_long) >+ UNDEF_INST(compare_logical_immediate_and_branch_relative) >+ UNDEF_INST(compare_logical_immediate_and_branch_relative_long) >+ UNDEF_INST(compare_logical_immediate_and_trap_fullword) >+ UNDEF_INST(compare_logical_immediate_and_trap_long) >+ UNDEF_INST(compare_logical_immediate_fullword_storage) >+ UNDEF_INST(compare_logical_immediate_halfword_storage) >+ UNDEF_INST(compare_logical_immediate_long_storage) >+ UNDEF_INST(compare_logical_relative_long) >+ UNDEF_INST(compare_logical_relative_long_halfword) >+ UNDEF_INST(compare_logical_relative_long_long) >+ UNDEF_INST(compare_logical_relative_long_long_fullword) >+ UNDEF_INST(compare_logical_relative_long_long_halfword) >+ UNDEF_INST(compare_relative_long) >+ UNDEF_INST(compare_relative_long_long) >+ UNDEF_INST(compare_relative_long_long_fullword) >+ UNDEF_INST(extract_cache_attribute) >+ UNDEF_INST(load_address_extended_y) >+ UNDEF_INST(load_and_test_long_fullword) >+ UNDEF_INST(load_halfword_relative_long) >+ UNDEF_INST(load_halfword_relative_long_long) >+ UNDEF_INST(load_logical_halfword_relative_long) >+ UNDEF_INST(load_logical_halfword_relative_long_long) >+ UNDEF_INST(load_logical_relative_long_long_fullword) >+ UNDEF_INST(load_relative_long) >+ UNDEF_INST(load_relative_long_long) >+ UNDEF_INST(load_relative_long_long_fullword) >+ UNDEF_INST(move_fullword_from_halfword_immediate) >+ UNDEF_INST(move_halfword_from_halfword_immediate) >+ UNDEF_INST(move_long_from_halfword_immediate) >+ UNDEF_INST(multiply_halfword_y) >+ UNDEF_INST(multiply_single_immediate_fullword) >+ UNDEF_INST(multiply_single_immediate_long_fullword) >+ UNDEF_INST(multiply_y) >+ UNDEF_INST(prefetch_data) >+ UNDEF_INST(prefetch_data_relative_long) >+ UNDEF_INST(rotate_then_and_selected_bits_long_reg) >+ UNDEF_INST(rotate_then_exclusive_or_selected_bits_long_reg) >+ UNDEF_INST(rotate_then_insert_selected_bits_long_reg) >+ UNDEF_INST(rotate_then_or_selected_bits_long_reg) >+ UNDEF_INST(store_halfword_relative_long) >+ UNDEF_INST(store_relative_long) >+ UNDEF_INST(store_relative_long_long) >+#endif /*!defined(FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY)*/ /*208*/ >+ >+#if !defined(FEATURE_PARSING_ENHANCEMENT_FACILITY) /*208*/ >+ UNDEF_INST(translate_and_test_extended) /*208*/ >+ UNDEF_INST(translate_and_test_reverse_extended) /*208*/ >+#endif /*!defined(FEATURE_PARSING_ENHANCEMENT_FACILITY)*/ /*208*/ >+ > > #if !defined(FEATURE_VECTOR_FACILITY) > UNDEF_INST(execute_a4xx) >@@ -300,9 +488,7 @@ > > > #if !defined(FEATURE_ESAME) && !defined(FEATURE_ESAME_N3_ESA390) >- UNDEF_INST(execute_b9xx) > UNDEF_INST(execute_e3xx) >- UNDEF_INST(execute_ebxx) > UNDEF_INST(execute_ecxx) > UNDEF_INST(execute_c0xx) > UNDEF_INST(execute_c2xx) /*@Z9*/ >@@ -424,7 +610,6 @@ > UNDEF_INST(load_zero_float_ext_reg) > UNDEF_INST(load_zero_float_long_reg) > UNDEF_INST(load_zero_float_short_reg) >- UNDEF_INST(set_dfp_rounding_mode) > #endif /*!defined(FEATURE_FPS_EXTENSIONS)*/ > > >@@ -435,6 +620,7 @@ > UNDEF_INST(load_gr_from_fpr_long_reg) > UNDEF_INST(load_negative_fpr_long_reg) > UNDEF_INST(load_positive_fpr_long_reg) >+ UNDEF_INST(set_dfp_rounding_mode) > #endif /*!defined(FEATURE_FPS_ENHANCEMENT)*/ > > >@@ -594,7 +780,7 @@ > UNDEF_INST(convert_dfp_long_to_sbcd64_reg) > UNDEF_INST(convert_dfp_ext_to_ubcd128_reg) > UNDEF_INST(convert_dfp_long_to_ubcd64_reg) >- UNDEF_INST(divide_dfp_ext_reg) >+ UNDEF_INST(divide_dfp_ext_reg) > UNDEF_INST(divide_dfp_long_reg) > UNDEF_INST(extract_biased_exponent_dfp_ext_to_fix64_reg) > UNDEF_INST(extract_biased_exponent_dfp_long_to_fix64_reg) >@@ -921,13 +1107,13 @@ > UNDEF_INST(load_page_table_entry_address) /*@Z9*/ > #endif /*!defined(FEATURE_DAT_ENHANCEMENT_FACILITY_2)*/ /*@Z9*/ > >- >-#if !defined(FEATURE_STORE_CLOCK_FAST) >- UNDEF_INST(store_clock_fast) >-#else /*!defined(FEATURE_STORE_CLOCK_FAST)*/ >+ >+#if !defined(FEATURE_STORE_CLOCK_FAST) >+ UNDEF_INST(store_clock_fast) >+#else /*!defined(FEATURE_STORE_CLOCK_FAST)*/ > #define z900_store_clock_fast z900_store_clock >-#endif /*!defined(FEATURE_STORE_CLOCK_FAST)*/ >- >+#endif /*!defined(FEATURE_STORE_CLOCK_FAST)*/ >+ > #if !defined(FEATURE_STORE_FACILITY_LIST_EXTENDED) /*@Z9*/ > UNDEF_INST(store_facility_list_extended) /*@Z9*/ > #endif /*!defined(FEATURE_STORE_FACILITY_LIST_EXTENDED)*/ /*@Z9*/ >@@ -943,13 +1129,13 @@ DEF_INST(execute_01xx) > { > regs->ARCH_DEP(opcode_01xx)[inst[1]](inst, regs); > } >+#endif > > > DEF_INST(execute_a7xx) > { > regs->ARCH_DEP(opcode_a7xx)[inst[1]](inst, regs); > } >-#endif > > > DEF_INST(execute_b2xx) >@@ -958,6 +1144,18 @@ DEF_INST(execute_b2xx) > } > > >+DEF_INST(execute_b9xx) >+{ >+ regs->ARCH_DEP(opcode_b9xx)[inst[1]](inst, regs); >+} >+ >+ >+DEF_INST(execute_ebxx) >+{ >+ regs->ARCH_DEP(opcode_ebxx)[inst[5]](inst, regs); >+} >+ >+ > #if defined(FEATURE_BASIC_FP_EXTENSIONS) > DEF_INST(execute_b3xx) > { >@@ -990,24 +1188,12 @@ DEF_INST(execute_a5xx) > } > > >-DEF_INST(execute_b9xx) >-{ >- regs->ARCH_DEP(opcode_b9xx)[inst[1]](inst, regs); >-} >- >- > DEF_INST(execute_e3xx) > { > regs->ARCH_DEP(opcode_e3xx)[inst[5]](inst, regs); > } > > >-DEF_INST(execute_ebxx) >-{ >- regs->ARCH_DEP(opcode_ebxx)[inst[5]](inst, regs); >-} >- >- > DEF_INST(execute_ecxx) > { > regs->ARCH_DEP(opcode_ecxx[inst[5]])(inst, regs); >@@ -1027,6 +1213,18 @@ DEF_INST(execute_c2xx) > #endif /*defined(FEATURE_ESAME) || defined(FEATURE_ESAME_N3_ESA390)*/ > > >+DEF_INST(execute_c4xx) /*208*/ >+{ /*208*/ >+ regs->ARCH_DEP(opcode_c4xx)[inst[1]](inst, regs); /*208*/ >+} /*208*/ >+ >+ >+DEF_INST(execute_c6xx) /*208*/ >+{ /*208*/ >+ regs->ARCH_DEP(opcode_c6xx)[inst[1]](inst, regs); /*208*/ >+} /*208*/ >+ >+ > #if defined(FEATURE_ESAME) > DEF_INST(execute_c8xx) > { >@@ -1109,6 +1307,8 @@ DISASM_ROUTE(b3xx,[1]) > DISASM_ROUTE(b9xx,[1]) > DISASM_ROUTE(c0xx,[1] & 0x0F) > DISASM_ROUTE(c2xx,[1] & 0x0F) /*@Z9*/ >+DISASM_ROUTE(c4xx,[1] & 0x0F) /*208*/ >+DISASM_ROUTE(c6xx,[1] & 0x0F) /*208*/ > DISASM_ROUTE(c8xx,[1] & 0x0F) > DISASM_ROUTE(e3xx,[5]) > DISASM_ROUTE(e5xx,[1]) >@@ -1452,7 +1652,7 @@ int r1,r3,i2; > i2 = (S16)(((U16)inst[2] << 8) | inst[3]); > DISASM_SET_NAME; > DISASM_PRINT_OPERANDS >- "%d,%d,%d",r1,r3,i2*2); >+ "%d,%d,*%+d",r1,r3,i2*2); > DISASM_LOGMSG; > } > >@@ -1476,7 +1676,7 @@ int r1,i2; > i2 = (S16)(((U16)inst[2] << 8) | inst[3]); > DISASM_SET_NAME; > DISASM_PRINT_OPERANDS >- "%d,%d",r1,i2*2); >+ "%d,*%+d",r1,i2*2); > DISASM_LOGMSG; > } > >@@ -1489,7 +1689,63 @@ int r1,r3,i2; > i2 = (S16)(((U16)inst[2] << 8) | inst[3]); > DISASM_SET_NAME; > DISASM_PRINT_OPERANDS >- "%d,%d,%d",r1,r3,i2*2); >+ "%d,%d,*%+d",r1,r3,i2*2); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RIE_RIM (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,i2,m3; >+ r1 = inst[1] >> 4; >+ i2 = (S16)(((U16)inst[2] << 8) | inst[3]); >+ m3 = inst[4] >> 4; >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%d,%d",r1,i2,m3); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RIE_RRIM (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,r2,i4,m3; >+ r1 = inst[1] >> 4; >+ r2 = inst[1] & 0x0F; >+ i4 = (S16)(((U16)inst[2] << 8) | inst[3]); >+ m3 = inst[4] >> 4; >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%d,%d,*%+d",r1,r2,m3,i4*2); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RIE_RMII (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,m3,i4,i2; >+ r1 = inst[1] >> 4; >+ m3 = inst[1] & 0x0F; >+ i4 = (S16)(((U16)inst[2] << 8) | inst[3]); >+ i2 = inst[4]; >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%d,%d,*%+d",r1,i2,m3,i4*2); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RIE_RRIII (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,r2,i3,i4,i5; >+ r1 = inst[1] >> 4; >+ r2 = inst[1] & 0x0F; >+ i3 = inst[2]; >+ i4 = inst[3]; >+ i5 = inst[4]; >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%d,%d,%d,%d",r1,r2,i3,i4,i5); > DISASM_LOGMSG; > } > >@@ -1497,13 +1753,56 @@ void disasm_RIL (BYTE inst[], char mnemo > { > DISASM_COMMON_VARS; > int r1,i2; >+ r1 = inst[1] >> 4; >+ i2 = (S32)((((U32)inst[2] << 24) | ((U32)inst[3] << 16) >+ | ((U32)inst[4] << 8)) | inst[5]); >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%"I32_FMT"d",r1,i2); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RIL_A (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,i2; > const S64 Two_S64=2; > r1 = inst[1] >> 4; > i2 = (S32)((((U32)inst[2] << 24) | ((U32)inst[3] << 16) > | ((U32)inst[4] << 8)) | inst[5]); > DISASM_SET_NAME; > DISASM_PRINT_OPERANDS >- "%d,%" I64_FMT "d",r1,i2*Two_S64); >+ "%d,*%+"I64_FMT"d",r1,i2*Two_S64); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RIS (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,i2,m3,b4,d4; >+ r1 = inst[1] >> 4; >+ m3 = inst[1] & 0x0F; >+ b4 = inst[2] >> 4; >+ d4 = (inst[2] & 0x0F) << 8 | inst[3]; >+ i2 = inst[4]; >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%d,%d,%d(%d)",r1,i2,m3,d4,b4); >+ DISASM_LOGMSG; >+} >+ >+void disasm_RRS (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int r1,r2,m3,b4,d4; >+ r1 = inst[1] >> 4; >+ r2 = inst[1] & 0x0F; >+ b4 = inst[2] >> 4; >+ d4 = (inst[2] & 0x0F) << 8 | inst[3]; >+ m3 = inst[4] >> 4; >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d,%d,%d,%d(%d)",r1,r2,m3,d4,b4); > DISASM_LOGMSG; > } > >@@ -1533,6 +1832,19 @@ int i2,b1,d1; > DISASM_LOGMSG; > } > >+void disasm_SIL (BYTE inst[], char mnemonic[]) /*208*/ >+{ >+DISASM_COMMON_VARS; >+int b1,d1,i2; >+ b1 = inst[2] >> 4; >+ d1 = (inst[2] & 0x0F) << 8 | inst[3]; >+ i2 = (S16)(((U16)inst[4] << 8) | inst[5]); >+ DISASM_SET_NAME; >+ DISASM_PRINT_OPERANDS >+ "%d(%d),%d",d1,b1,i2); >+ DISASM_LOGMSG; >+} >+ > void disasm_S (BYTE inst[], char mnemonic[]) > { > DISASM_COMMON_VARS; >@@ -1757,10 +2069,16 @@ DLL_EXPORT zz_func s370_opcode_table[256 > static zz_func s370_opcode_a4xx[256]; > static zz_func s370_opcode_a5xx[256]; > static zz_func s370_opcode_a6xx[256]; >+static zz_func s370_opcode_a7xx[256]; > static zz_func s370_opcode_b2xx[256]; >+static zz_func s370_opcode_b9xx[256]; >+static zz_func s370_opcode_c2xx[256]; /*208*/ >+static zz_func s370_opcode_c4xx[256]; /*208*/ >+static zz_func s370_opcode_c6xx[256]; /*208*/ > static zz_func s370_opcode_e4xx[256]; > static zz_func s370_opcode_e5xx[256]; > static zz_func s370_opcode_e6xx[256]; >+static zz_func s370_opcode_ebxx[256]; > > zz_func s390_opcode_table[256]; > static zz_func s390_opcode_01xx[256]; >@@ -1773,6 +2091,8 @@ static zz_func s390_opcode_b3xx[256]; > static zz_func s390_opcode_b9xx[256]; > static zz_func s390_opcode_c0xx[256]; > static zz_func s390_opcode_c2xx[256]; /*@Z9*/ >+static zz_func s390_opcode_c4xx[256]; /*208*/ >+static zz_func s390_opcode_c6xx[256]; /*208*/ > static zz_func s390_opcode_e3xx[256]; > static zz_func s390_opcode_e4xx[256]; > static zz_func s390_opcode_e5xx[256]; >@@ -1789,6 +2109,8 @@ static zz_func z900_opcode_b3xx[256]; > static zz_func z900_opcode_b9xx[256]; > static zz_func z900_opcode_c0xx[256]; > static zz_func z900_opcode_c2xx[256]; /*@Z9*/ >+static zz_func z900_opcode_c4xx[256]; /*208*/ >+static zz_func z900_opcode_c6xx[256]; /*208*/ > static zz_func z900_opcode_c8xx[256]; > static zz_func z900_opcode_e3xx[256]; > static zz_func z900_opcode_e5xx[256]; >@@ -1807,10 +2129,16 @@ int i; > s370_opcode_a4xx [i] = v_opcode_a4xx [i][ARCH_370]; > s370_opcode_a5xx [i] = v_opcode_a5xx [i][ARCH_370]; > s370_opcode_a6xx [i] = v_opcode_a6xx [i][ARCH_370]; >+ s370_opcode_a7xx [i] = opcode_a7xx [i&0x0F][ARCH_370]; > s370_opcode_b2xx [i] = opcode_b2xx [i][ARCH_370]; >+ s370_opcode_b9xx [i] = opcode_b9xx [i][ARCH_370]; >+ s370_opcode_c2xx [i] = opcode_c2xx [i&0x0F][ARCH_370]; /*208*/ >+ s370_opcode_c4xx [i] = opcode_c4xx [i&0x0F][ARCH_370]; /*208*/ >+ s370_opcode_c6xx [i] = opcode_c6xx [i&0x0F][ARCH_370]; /*208*/ > s370_opcode_e4xx [i] = v_opcode_e4xx [i][ARCH_370]; > s370_opcode_e5xx [i] = opcode_e5xx [i][ARCH_370]; > s370_opcode_e6xx [i] = opcode_e6xx [i][ARCH_370]; >+ s370_opcode_ebxx [i] = opcode_ebxx [i][ARCH_370]; > #endif > > #if defined(_390) >@@ -1825,6 +2153,8 @@ int i; > s390_opcode_b9xx [i] = opcode_b9xx [i][ARCH_390]; > s390_opcode_c0xx [i] = opcode_c0xx [i&0x0F][ARCH_390]; > s390_opcode_c2xx [i] = opcode_c2xx [i&0x0F][ARCH_390]; /*@Z9*/ >+ s390_opcode_c4xx [i] = opcode_c4xx [i&0x0F][ARCH_390]; /*208*/ >+ s390_opcode_c6xx [i] = opcode_c6xx [i&0x0F][ARCH_390]; /*208*/ > s390_opcode_e3xx [i] = opcode_e3xx [i][ARCH_390]; > s390_opcode_e4xx [i] = v_opcode_e4xx [i][ARCH_390]; > s390_opcode_e5xx [i] = opcode_e5xx [i][ARCH_390]; >@@ -1843,6 +2173,8 @@ int i; > z900_opcode_b9xx [i] = opcode_b9xx [i][ARCH_900]; > z900_opcode_c0xx [i] = opcode_c0xx [i&0x0F][ARCH_900]; > z900_opcode_c2xx [i] = opcode_c2xx [i&0x0F][ARCH_900]; /*@Z9*/ >+ z900_opcode_c4xx [i] = opcode_c4xx [i&0x0F][ARCH_900]; /*208*/ >+ z900_opcode_c6xx [i] = opcode_c6xx [i&0x0F][ARCH_900]; /*208*/ > z900_opcode_c8xx [i] = opcode_c8xx [i&0x0F][ARCH_900]; > z900_opcode_e3xx [i] = opcode_e3xx [i][ARCH_900]; > z900_opcode_e5xx [i] = opcode_e5xx [i][ARCH_900]; >@@ -1862,11 +2194,23 @@ void set_opcode_pointers(REGS *regs) > regs->s370_opcode_a5xx = s370_opcode_a5xx; > regs->s370_opcode_a6xx = s370_opcode_a6xx; > #if defined(MULTI_BYTE_ASSIST) >+ memcpy(regs->s370_opcode_a7xx, s370_opcode_a7xx, >+ sizeof(s370_opcode_a7xx)); > memcpy(regs->s370_opcode_b2xx, s370_opcode_b2xx, > sizeof(s370_opcode_b2xx)); >+ memcpy(regs->s370_opcode_b9xx, s370_opcode_b9xx, >+ sizeof(s370_opcode_b9xx)); >+ memcpy(regs->s370_opcode_ebxx, s370_opcode_ebxx, >+ sizeof(s370_opcode_ebxx)); > #else >+ regs->s370_opcode_a7xx = s370_opcode_a7xx; > regs->s370_opcode_b2xx = s370_opcode_b2xx; >+ regs->s370_opcode_b9xx = s370_opcode_b9xx; >+ regs->s370_opcode_ebxx = s370_opcode_ebxx; > #endif >+ regs->s370_opcode_c2xx = s370_opcode_c2xx; /*208*/ >+ regs->s370_opcode_c4xx = s370_opcode_c4xx; /*208*/ >+ regs->s370_opcode_c6xx = s370_opcode_c6xx; /*208*/ > regs->s370_opcode_e4xx = s370_opcode_e4xx; > regs->s370_opcode_e5xx = s370_opcode_e5xx; > regs->s370_opcode_e6xx = s370_opcode_e6xx; >@@ -1901,6 +2245,8 @@ void set_opcode_pointers(REGS *regs) > #endif > regs->s390_opcode_b3xx = s390_opcode_b3xx; > regs->s390_opcode_c2xx = s390_opcode_c2xx; /*@Z9*/ >+ regs->s390_opcode_c4xx = s390_opcode_c4xx; /*208*/ >+ regs->s390_opcode_c6xx = s390_opcode_c6xx; /*208*/ > regs->s390_opcode_e4xx = s390_opcode_e4xx; > regs->s390_opcode_e5xx = s390_opcode_e5xx; > regs->s390_opcode_ecxx = s390_opcode_ecxx; >@@ -1934,6 +2280,8 @@ void set_opcode_pointers(REGS *regs) > #endif > regs->z900_opcode_b3xx = z900_opcode_b3xx; > regs->z900_opcode_c2xx = z900_opcode_c2xx; /*@Z9*/ >+ regs->z900_opcode_c4xx = z900_opcode_c4xx; /*208*/ >+ regs->z900_opcode_c6xx = z900_opcode_c6xx; /*208*/ > regs->z900_opcode_c8xx = z900_opcode_c8xx; > regs->z900_opcode_e5xx = z900_opcode_e5xx; > regs->z900_opcode_ecxx = z900_opcode_ecxx; >@@ -2055,7 +2403,7 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*6E*/ GENx370x390x900 (add_unnormal_float_long,RX,"AW"), > /*6F*/ GENx370x390x900 (subtract_unnormal_float_long,RX,"SW"), > /*70*/ GENx370x390x900 (store_float_short,RX,"STE"), >- /*71*/ GENx___x390x900 (multiply_single,RX,"MS"), >+ /*71*/ GENx370x390x900 (multiply_single,RX,"MS"), > /*72*/ GENx___x___x___ , > /*73*/ GENx___x___x___ , > /*74*/ GENx___x___x___ , >@@ -2074,8 +2422,8 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*81*/ GENx___x___x___ , > /*82*/ GENx370x390x900 (load_program_status_word,S,"LPSW"), > /*83*/ GENx370x390x900 (diagnose,RS,"DIAG"), >- /*84*/ GENx___x390x900 (branch_relative_on_index_high,RSI,"BRXH"), >- /*85*/ GENx___x390x900 (branch_relative_on_index_low_or_equal,RSI,"BRXLE"), >+ /*84*/ GENx370x390x900 (branch_relative_on_index_high,RSI,"BRXH"), >+ /*85*/ GENx370x390x900 (branch_relative_on_index_low_or_equal,RSI,"BRXLE"), > /*86*/ GENx370x390x900 (branch_on_index_high,RS,"BXH"), > /*87*/ GENx370x390x900 (branch_on_index_low_or_equal,RS,"BXLE"), > /*88*/ GENx370x390x900 (shift_right_single_logical,RS_R1D2B2,"SRL"), >@@ -2109,9 +2457,9 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*A4*/ GENx370x390x___ (execute_a4xx,a4xx,""), > /*A5*/ GENx370x390x900 (execute_a5xx,a5xx,""), > /*A6*/ GENx370x390x___ (execute_a6xx,a6xx,""), >- /*A7*/ GENx___x390x900 (execute_a7xx,a7xx,""), >- /*A8*/ GENx___x390x900 (move_long_extended,RS,"MVCLE"), >- /*A9*/ GENx___x390x900 (compare_logical_long_extended,RS,"CLCLE"), >+ /*A7*/ GENx370x390x900 (execute_a7xx,a7xx,""), >+ /*A8*/ GENx370x390x900 (move_long_extended,RS,"MVCLE"), >+ /*A9*/ GENx370x390x900 (compare_logical_long_extended,RS,"CLCLE"), > /*AA*/ GENx___x___x___ , > /*AB*/ GENx___x___x___ , > /*AC*/ GENx370x390x900 (store_then_and_system_mask,SI,"STNSM"), >@@ -2127,7 +2475,7 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*B6*/ GENx370x390x900 (store_control,RS,"STCTL"), > /*B7*/ GENx370x390x900 (load_control,RS,"LCTL"), > /*B8*/ GENx___x___x___ , >- /*B9*/ GENx___x390x900 (execute_b9xx,b9xx,""), >+ /*B9*/ GENx370x390x900 (execute_b9xx,b9xx,""), > /*BA*/ GENx370x390x900 (compare_and_swap,RS,"CS"), > /*BB*/ GENx370x390x900 (compare_double_and_swap,RS,"CDS"), > /*BC*/ GENx___x___x___ , >@@ -2138,9 +2486,9 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*C1*/ GENx___x___x___ , > /*C2*/ GENx___x390x900 (execute_c2xx,c2xx,""), /*@Z9*/ > /*C3*/ GENx___x___x___ , >- /*C4*/ GENx___x___x___ , >+ /*C4*/ GENx370x390x900 (execute_c4xx,c4xx,""), /*208*/ > /*C5*/ GENx___x___x___ , >- /*C6*/ GENx___x___x___ , >+ /*C6*/ GENx370x390x900 (execute_c6xx,c6xx,""), /*208*/ > /*C7*/ GENx___x___x___ , > /*C8*/ GENx___x___x900 (execute_c8xx,c8xx,""), > /*C9*/ GENx___x___x___ , >@@ -2150,7 +2498,7 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*CD*/ GENx___x___x___ , > /*CE*/ GENx___x___x___ , > /*CF*/ GENx___x___x___ , >- /*D0*/ GENx___x___x900 (translate_and_test_reverse,SS_L,"TRTR"), >+ /*D0*/ GENx370x390x900 (translate_and_test_reverse,SS_L,"TRTR"), > /*D1*/ GENx370x390x900 (move_numerics,SS_L,"MVN"), > /*D2*/ GENx370x390x900 (move_character,SS_L,"MVC"), > /*D3*/ GENx370x390x900 (move_zones,SS_L,"MVZ"), >@@ -2167,17 +2515,17 @@ DLL_EXPORT zz_func opcode_table[256][GEN > /*DE*/ GENx370x390x900 (edit_x_edit_and_mark,SS_L,"ED"), > /*DF*/ GENx370x390x900 (edit_x_edit_and_mark,SS_L,"EDMK"), > /*E0*/ GENx___x___x___ , >- /*E1*/ GENx___x390x900 (pack_unicode,SS_L2,"PKU"), >- /*E2*/ GENx___x390x900 (unpack_unicode,SS_L,"UNPKU"), >+ /*E1*/ GENx370x390x900 (pack_unicode,SS_L2,"PKU"), >+ /*E2*/ GENx370x390x900 (unpack_unicode,SS_L,"UNPKU"), > /*E3*/ GENx___x390x900 (execute_e3xx,e3xx,""), > /*E4*/ GENx370x390x___ (execute_e4xx,e4xx,""), > /*E5*/ GENx370x390x900 (execute_e5xx,e5xx,""), > /*E6*/ GENx370x___x___ (execute_e6xx,e6xx,""), > /*E7*/ GENx___x___x___ , > /*E8*/ GENx370x390x900 (move_inverse,SS_L,"MVCIN"), >- /*E9*/ GENx___x390x900 (pack_ascii,SS_L2,"PKA"), >- /*EA*/ GENx___x390x900 (unpack_ascii,SS_L,"UNPKA"), >- /*EB*/ GENx___x390x900 (execute_ebxx,ebxx,""), >+ /*E9*/ GENx370x390x900 (pack_ascii,SS_L2,"PKA"), >+ /*EA*/ GENx370x390x900 (unpack_ascii,SS_L,"UNPKA"), >+ /*EB*/ GENx370x390x900 (execute_ebxx,ebxx,""), > /*EC*/ GENx___x390x900 (execute_ecxx,ecxx,""), > /*ED*/ GENx___x390x900 (execute_edxx,edxx,""), > /*EE*/ GENx___x390x900 (perform_locked_operation,SS_RSRS,"PLO"), >@@ -2744,21 +3092,21 @@ DLL_EXPORT zz_func opcode_a5xx[16][GEN_M > // #endif /*defined(FEATURE_ESAME)*/ > > DLL_EXPORT zz_func opcode_a7xx[16][GEN_MAXARCH] = { >- /*A7x0*/ GENx___x390x900 (test_under_mask_high,RI,"TMLH"), >- /*A7x1*/ GENx___x390x900 (test_under_mask_low,RI,"TMLL"), >+ /*A7x0*/ GENx370x390x900 (test_under_mask_high,RI,"TMLH"), >+ /*A7x1*/ GENx370x390x900 (test_under_mask_low,RI,"TMLL"), > /*A7x2*/ GENx___x___x900 (test_under_mask_high_high,RI,"TMHH"), > /*A7x3*/ GENx___x___x900 (test_under_mask_high_low,RI,"TMHL"), >- /*A7x4*/ GENx___x390x900 (branch_relative_on_condition,RI_B,"BRC"), >- /*A7x5*/ GENx___x390x900 (branch_relative_and_save,RI_B,"BRAS"), >- /*A7x6*/ GENx___x390x900 (branch_relative_on_count,RI_B,"BRCT"), >+ /*A7x4*/ GENx370x390x900 (branch_relative_on_condition,RI_B,"BRC"), >+ /*A7x5*/ GENx370x390x900 (branch_relative_and_save,RI_B,"BRAS"), >+ /*A7x6*/ GENx370x390x900 (branch_relative_on_count,RI_B,"BRCT"), > /*A7x7*/ GENx___x___x900 (branch_relative_on_count_long,RI_B,"BRCTG"), >- /*A7x8*/ GENx___x390x900 (load_halfword_immediate,RI,"LHI"), >+ /*A7x8*/ GENx370x390x900 (load_halfword_immediate,RI,"LHI"), > /*A7x9*/ GENx___x___x900 (load_long_halfword_immediate,RI,"LGHI"), >- /*A7xA*/ GENx___x390x900 (add_halfword_immediate,RI,"AHI"), >+ /*A7xA*/ GENx370x390x900 (add_halfword_immediate,RI,"AHI"), > /*A7xB*/ GENx___x___x900 (add_long_halfword_immediate,RI,"AGHI"), >- /*A7xC*/ GENx___x390x900 (multiply_halfword_immediate,RI,"MHI"), >+ /*A7xC*/ GENx370x390x900 (multiply_halfword_immediate,RI,"MHI"), > /*A7xD*/ GENx___x___x900 (multiply_long_halfword_immediate,RI,"MGHI"), >- /*A7xE*/ GENx___x390x900 (compare_halfword_immediate,RI,"CHI"), >+ /*A7xE*/ GENx370x390x900 (compare_halfword_immediate,RI,"CHI"), > /*A7xF*/ GENx___x___x900 (compare_long_halfword_immediate,RI,"CGHI") }; > > >@@ -2845,19 +3193,19 @@ DLL_EXPORT zz_func opcode_b2xx[256][GEN_ > /*B24F*/ GENx___x390x900 (extract_access_register,RRE,"EAR"), > /*B250*/ GENx___x390x900 (compare_and_swap_and_purge,RRE,"CSP"), > /*B251*/ GENx___x___x___ , >- /*B252*/ GENx___x390x900 (multiply_single_register,RRE,"MSR"), >+ /*B252*/ GENx370x390x900 (multiply_single_register,RRE,"MSR"), > /*B253*/ GENx___x___x___ , > /*B254*/ GENx___x390x900 (move_page,RRE,"MVPG"), >- /*B255*/ GENx___x390x900 (move_string,RRE,"MVST"), >+ /*B255*/ GENx370x390x900 (move_string,RRE,"MVST"), > /*B256*/ GENx___x___x___ , >- /*B257*/ GENx___x390x900 (compare_until_substring_equal,RRE,"CUSE"), >+ /*B257*/ GENx370x390x900 (compare_until_substring_equal,RRE,"CUSE"), > /*B258*/ GENx___x390x900 (branch_in_subspace_group,RRE,"BSG"), > /*B259*/ GENx___x390x900 (invalidate_expanded_storage_block_entry,RRE,"IESBE"), > /*B25A*/ GENx___x390x900 (branch_and_set_authority,RRE,"BSA"), > /*B25B*/ GENx___x___x___ , /*%PGXIN */ > /*B25C*/ GENx___x___x___ , /*%PGXOUT */ >- /*B25D*/ GENx___x390x900 (compare_logical_string,RRE,"CLST"), >- /*B25E*/ GENx___x390x900 (search_string,RRE,"SRST"), >+ /*B25D*/ GENx370x390x900 (compare_logical_string,RRE,"CLST"), >+ /*B25E*/ GENx370x390x900 (search_string,RRE,"SRST"), > /*B25F*/ GENx___x390x900 (channel_subsystem_call,RRE,"CHSC"), > /*B260*/ GENx___x___x___ , /* Sysplex */ > /*B261*/ GENx___x___x___ , /* Sysplex */ >@@ -2928,9 +3276,9 @@ DLL_EXPORT zz_func opcode_b2xx[256][GEN_ > /*B2A2*/ GENx___x___x___ , > /*B2A3*/ GENx___x___x___ , > /*B2A4*/ GENx___x___x___ , /* Sysplex */ >- /*B2A5*/ GENx___x390x900 (translate_extended,RRE,"TRE"), >- /*B2A6*/ GENx___x390x900 (convert_utf16_to_utf8,RRF_M3,"CU21 (CUUTF)"), >- /*B2A7*/ GENx___x390x900 (convert_utf8_to_utf16,RRF_M3,"CU12 (CUTFU)"), >+ /*B2A5*/ GENx370x390x900 (translate_extended,RRE,"TRE"), >+ /*B2A6*/ GENx370x390x900 (convert_utf16_to_utf8,RRF_M3,"CU21 (CUUTF)"), >+ /*B2A7*/ GENx370x390x900 (convert_utf8_to_utf16,RRF_M3,"CU12 (CUTFU)"), > /*B2A8*/ GENx___x___x___ , /* Sysplex */ > /*B2A9*/ GENx___x___x___ , > /*B2AA*/ GENx___x___x___ , >@@ -3070,8 +3418,8 @@ DLL_EXPORT zz_func opcode_b3xx[256][GEN_ > /*B32B*/ GENx___x___x___ , > /*B32C*/ GENx___x___x___ , > /*B32D*/ GENx___x___x___ , >- /*B32E*/ GENx___x___x900 (multiply_add_float_short_reg,RRF_R,"MAER"), >- /*B32F*/ GENx___x___x900 (multiply_subtract_float_short_reg,RRF_R,"MSER"), >+ /*B32E*/ GENx___x390x900 (multiply_add_float_short_reg,RRF_R,"MAER"), >+ /*B32F*/ GENx___x390x900 (multiply_subtract_float_short_reg,RRF_R,"MSER"), > /*B330*/ GENx___x___x___ , > /*B331*/ GENx___x___x___ , > /*B332*/ GENx___x___x___ , >@@ -3086,8 +3434,8 @@ DLL_EXPORT zz_func opcode_b3xx[256][GEN_ > /*B33B*/ GENx___x___x900 (multiply_unnormal_float_long_to_ext_reg,RRF_R,"MYR"), /*@Z9*/ > /*B33C*/ GENx___x___x900 (multiply_add_unnormal_float_long_to_ext_high_reg,RRF_R,"MAYHR"), /*@Z9*/ > /*B33D*/ GENx___x___x900 (multiply_unnormal_float_long_to_ext_high_reg,RRF_R,"MYHR"), /*@Z9*/ >- /*B33E*/ GENx___x___x900 (multiply_add_float_long_reg,RRF_R,"MADR"), >- /*B33F*/ GENx___x___x900 (multiply_subtract_float_long_reg,RRF_R,"MSDR"), >+ /*B33E*/ GENx___x390x900 (multiply_add_float_long_reg,RRF_R,"MADR"), >+ /*B33F*/ GENx___x390x900 (multiply_subtract_float_long_reg,RRF_R,"MSDR"), > /*B340*/ GENx___x390x900 (load_positive_bfp_ext_reg,RRE,"LPXBR"), > /*B341*/ GENx___x390x900 (load_negative_bfp_ext_reg,RRE,"LNXBR"), > /*B342*/ GENx___x390x900 (load_and_test_bfp_ext_reg,RRE,"LTXBR"), >@@ -3217,7 +3565,7 @@ DLL_EXPORT zz_func opcode_b3xx[256][GEN_ > /*B3BE*/ GENx___x___x___ , > /*B3BF*/ GENx___x___x___ , > /*B3C0*/ GENx___x___x___ , >- /*B3C1*/ GENx___x390x900 (load_fpr_from_gr_long_reg,RRE,"LDGR"), >+ /*B3C1*/ GENx___x___x900 (load_fpr_from_gr_long_reg,RRE,"LDGR"), > /*B3C2*/ GENx___x___x___ , > /*B3C3*/ GENx___x___x___ , > /*B3C4*/ GENx___x___x900 (convert_fix64_to_float_short_reg,RRE,"CEGR"), >@@ -3229,7 +3577,7 @@ DLL_EXPORT zz_func opcode_b3xx[256][GEN_ > /*B3CA*/ GENx___x___x900 (convert_float_ext_to_fix64_reg,RRF_M,"CGXR"), > /*B3CB*/ GENx___x___x___ , > /*B3CC*/ GENx___x___x___ , >- /*B3CD*/ GENx___x390x900 (load_gr_from_fpr_long_reg,RRE,"LGDR"), >+ /*B3CD*/ GENx___x___x900 (load_gr_from_fpr_long_reg,RRE,"LGDR"), > /*B3CE*/ GENx___x___x___ , > /*B3CF*/ GENx___x___x___ , > /*B3D0*/ GENx___x390x900 (multiply_dfp_long_reg,RRR,"MDTR"), >@@ -3382,8 +3730,8 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > /*B95D*/ GENx___x___x___ , > /*B95E*/ GENx___x___x___ , > /*B95F*/ GENx___x___x___ , >- /*B960*/ GENx___x___x___ , >- /*B961*/ GENx___x___x___ , >+ /*B960*/ GENx___x___x900 (compare_and_trap_long_register,RRF_M3,"CGRT"), /*208*/ >+ /*B961*/ GENx___x___x900 (compare_logical_and_trap_long_register,RRF_M3,"CLGRT"), /*208*/ > /*B962*/ GENx___x___x___ , > /*B963*/ GENx___x___x___ , > /*B964*/ GENx___x___x___ , >@@ -3400,8 +3748,8 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > /*B96F*/ GENx___x___x___ , > /*B970*/ GENx___x___x___ , > /*B971*/ GENx___x___x___ , >- /*B972*/ GENx___x___x___ , >- /*B973*/ GENx___x___x___ , >+ /*B972*/ GENx370x390x900 (compare_and_trap_register,RRF_M3,"CRT"), /*208*/ >+ /*B973*/ GENx370x390x900 (compare_logical_and_trap_register,RRF_M3,"CLRT"), /*208*/ > /*B974*/ GENx___x___x___ , > /*B975*/ GENx___x___x___ , > /*B976*/ GENx___x___x___ , >@@ -3430,10 +3778,10 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > /*B98D*/ GENx___x390x900 (extract_psw,RRE,"EPSW"), > /*B98E*/ GENx___x___x900 (invalidate_dat_table_entry,RRF_R,"IDTE"), > /*B98F*/ GENx___x___x___ , >- /*B990*/ GENx___x390x900 (translate_two_to_two,RRF_M3,"TRTT"), >- /*B991*/ GENx___x390x900 (translate_two_to_one,RRF_M3,"TRTO"), >- /*B992*/ GENx___x390x900 (translate_one_to_two,RRF_M3,"TROT"), >- /*B993*/ GENx___x390x900 (translate_one_to_one,RRF_M3,"TROO"), >+ /*B990*/ GENx370x390x900 (translate_two_to_two,RRF_M3,"TRTT"), >+ /*B991*/ GENx370x390x900 (translate_two_to_one,RRF_M3,"TRTO"), >+ /*B992*/ GENx370x390x900 (translate_one_to_two,RRF_M3,"TROT"), >+ /*B993*/ GENx370x390x900 (translate_one_to_one,RRF_M3,"TROO"), > /*B994*/ GENx___x390x900 (load_logical_character_register,RRE,"LLCR"), /*@Z9*/ > /*B995*/ GENx___x390x900 (load_logical_halfword_register,RRE,"LLHR"), /*@Z9*/ > /*B996*/ GENx___x390x900 (multiply_logical_register,RRE,"MLR"), >@@ -3448,7 +3796,7 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > /*B99F*/ GENx___x___x900 (set_secondary_asn_with_instance,RRE_R1,"SSAIR"), > /*B9A0*/ GENx___x___x___ , > /*B9A1*/ GENx___x___x___ , >- /*B9A2*/ GENx___x___x___ , >+ /*B9A2*/ GENx___x___x900 (perform_topology_function,RRE,"PTF"), > /*B9A3*/ GENx___x___x___ , > /*B9B9*/ GENx___x___x___ , > /*B9A5*/ GENx___x___x___ , >@@ -3461,11 +3809,11 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > /*B9AC*/ GENx___x___x___ , > /*B9AD*/ GENx___x___x___ , > /*B9AE*/ GENx___x___x___ , >- /*B9AF*/ GENx___x___x___ , >- /*B9B0*/ GENx___x___x900 (convert_utf8_to_utf32,RRF_M3,"CU14"), >- /*B9B1*/ GENx___x___x900 (convert_utf16_to_utf32,RRF_M3,"CU24"), >- /*B9B2*/ GENx___x___x900 (convert_utf32_to_utf8,RRE,"CU41"), >- /*B9B3*/ GENx___x___x900 (convert_utf32_to_utf16,RRE,"CU42"), >+ /*B9AF*/ GENx___x___x900 (perform_frame_management_function,RRE,"PFMF"), >+ /*B9B0*/ GENx370x390x900 (convert_utf8_to_utf32,RRF_M3,"CU14"), >+ /*B9B1*/ GENx370x390x900 (convert_utf16_to_utf32,RRF_M3,"CU24"), >+ /*B9B2*/ GENx370x390x900 (convert_utf32_to_utf8,RRE,"CU41"), >+ /*B9B3*/ GENx370x390x900 (convert_utf32_to_utf16,RRE,"CU42"), > /*B9B4*/ GENx___x___x___ , > /*B9B5*/ GENx___x___x___ , > /*B9B6*/ GENx___x___x___ , >@@ -3475,9 +3823,9 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > /*B9BA*/ GENx___x___x___ , > /*B9BB*/ GENx___x___x___ , > /*B9BC*/ GENx___x___x___ , >- /*B9BD*/ GENx___x___x___ , >- /*B9BE*/ GENx___x___x900 (search_string_unicode,RRE,"SRSTU"), >- /*B9BF*/ GENx___x___x___ , >+ /*B9BD*/ GENx370x390x900 (translate_and_test_reverse_extended,RRF_M3,"TRTRE"), >+ /*B9BE*/ GENx370x390x900 (search_string_unicode,RRE,"SRSTU"), >+ /*B9BF*/ GENx370x390x900 (translate_and_test_extended,RRF_M3,"TRTE"), > /*B9C0*/ GENx___x___x___ , > /*B9C1*/ GENx___x___x___ , > /*B9C2*/ GENx___x___x___ , >@@ -3548,12 +3896,12 @@ DLL_EXPORT zz_func opcode_b9xx[256][GEN_ > // #if defined(FEATURE_ESAME) > > DLL_EXPORT zz_func opcode_c0xx[16][GEN_MAXARCH] = { >- /*C0x0*/ GENx___x390x900 (load_address_relative_long,RIL,"LARL"), >+ /*C0x0*/ GENx___x390x900 (load_address_relative_long,RIL_A,"LARL"), > /*C0x1*/ GENx___x___x900 (load_long_fullword_immediate,RIL,"LGFI"), /*@Z9*/ > /*C0x2*/ GENx___x___x___ , > /*C0x3*/ GENx___x___x___ , >- /*C0x4*/ GENx___x390x900 (branch_relative_on_condition_long,RIL,"BRCL"), >- /*C0x5*/ GENx___x390x900 (branch_relative_and_save_long,RIL,"BRASL"), >+ /*C0x4*/ GENx___x390x900 (branch_relative_on_condition_long,RIL_A,"BRCL"), >+ /*C0x5*/ GENx___x390x900 (branch_relative_and_save_long,RIL_A,"BRASL"), > /*C0x6*/ GENx___x___x900 (exclusive_or_immediate_high_fullword,RIL,"XIHF"), /*@Z9*/ > /*C0x7*/ GENx___x___x900 (exclusive_or_immediate_low_fullword,RIL,"XILF"), /*@Z9*/ > /*C0x8*/ GENx___x___x900 (insert_immediate_high_fullword,RIL,"IIHF"), /*@Z9*/ >@@ -3563,11 +3911,11 @@ DLL_EXPORT zz_func opcode_c0xx[16][GEN_M > /*C0xC*/ GENx___x___x900 (or_immediate_high_fullword,RIL,"OIHF"), /*@Z9*/ > /*C0xD*/ GENx___x___x900 (or_immediate_low_fullword,RIL,"OILF"), /*@Z9*/ > /*C0xE*/ GENx___x___x900 (load_logical_immediate_high_fullword,RIL,"LLIHF"), /*@Z9*/ >- /*C0xF*/ GENx___x___x900 (load_logical_immediate_low_fullword,RIL,"LLILF") }; /*@Z9*/ >+ /*C0xF*/ GENx___x___x900 (load_logical_immediate_low_fullword,RIL,"LLILF") }; /*@Z9*/ > > DLL_EXPORT zz_func opcode_c2xx[16][GEN_MAXARCH] = { /*@Z9*/ >- /*C2x0*/ GENx___x___x___ , /*@Z9*/ >- /*C2x1*/ GENx___x___x___ , /*@Z9*/ >+ /*C2x0*/ GENx___x___x900 (multiply_single_immediate_long_fullword,RIL,"MSGFI"), /*208*/ >+ /*C2x1*/ GENx370x390x900 (multiply_single_immediate_fullword,RIL,"MSFI"), /*208*/ > /*C2x2*/ GENx___x___x___ , /*@Z9*/ > /*C2x3*/ GENx___x___x___ , /*@Z9*/ > /*C2x4*/ GENx___x___x900 (subtract_logical_long_fullword_immediate,RIL,"SLGFI"), /*@Z9*/ >@@ -3583,6 +3931,42 @@ DLL_EXPORT zz_func opcode_c2xx[16][GEN_M > /*C2xE*/ GENx___x___x900 (compare_logical_long_fullword_immediate,RIL,"CLGFI"), /*@Z9*/ > /*C2xF*/ GENx___x390x900 (compare_logical_fullword_immediate,RIL,"CLFI") }; /*@Z9*/ > >+DLL_EXPORT zz_func opcode_c4xx[16][GEN_MAXARCH] = { /*208*/ >+ /*C4x0*/ GENx___x___x___ , /*208*/ >+ /*C4x1*/ GENx___x___x___ , /*208*/ >+ /*C4x2*/ GENx370x390x900 (load_logical_halfword_relative_long,RIL_A,"LLHRL"), /*208*/ >+ /*C4x3*/ GENx___x___x___ , /*208*/ >+ /*C4x4*/ GENx___x___x900 (load_halfword_relative_long_long,RIL_A,"LGHRL"), /*208*/ >+ /*C4x5*/ GENx370x390x900 (load_halfword_relative_long,RIL_A,"LHRL"), /*208*/ >+ /*C4x6*/ GENx___x___x900 (load_logical_halfword_relative_long_long,RIL_A,"LLGHRL"), /*208*/ >+ /*C4x7*/ GENx370x390x900 (store_halfword_relative_long,RIL_A,"STHRL"), /*208*/ >+ /*C4x8*/ GENx___x___x900 (load_relative_long_long,RIL_A,"LGRL"), /*208*/ >+ /*C4x9*/ GENx___x___x___ , /*208*/ >+ /*C4xA*/ GENx___x___x___ , /*208*/ >+ /*C4xB*/ GENx___x___x900 (store_relative_long_long,RIL_A,"STGRL"), /*208*/ >+ /*C4xC*/ GENx___x___x900 (load_relative_long_long_fullword,RIL_A,"LGFRL"), /*208*/ >+ /*C4xD*/ GENx370x390x900 (load_relative_long,RIL_A,"LRL"), /*208*/ >+ /*C4xE*/ GENx___x___x900 (load_logical_relative_long_long_fullword,RIL_A,"LLGFRL"), /*208*/ >+ /*C4xF*/ GENx370x390x900 (store_relative_long,RIL_A,"STRL") }; /*208*/ >+ >+DLL_EXPORT zz_func opcode_c6xx[16][GEN_MAXARCH] = { /*208*/ >+ /*C6x0*/ GENx370x390x900 (execute_relative_long,RIL_A,"EXRL"), /*208*/ >+ /*C6x1*/ GENx___x___x___ , /*208*/ >+ /*C6x2*/ GENx370x390x900 (prefetch_data_relative_long,RIL_A,"PFDRL"), /*208*/ >+ /*C6x3*/ GENx___x___x___ , /*208*/ >+ /*C6x4*/ GENx___x___x900 (compare_halfword_relative_long_long,RIL_A,"CGHRL"), /*208*/ >+ /*C6x5*/ GENx370x390x900 (compare_halfword_relative_long,RIL_A,"CHRL"), /*208*/ >+ /*C6x6*/ GENx___x___x900 (compare_logical_relative_long_long_halfword,RIL_A,"CLGHRL"), /*208*/ >+ /*C6x7*/ GENx370x390x900 (compare_logical_relative_long_halfword,RIL_A,"CLHRL"), /*208*/ >+ /*C6x8*/ GENx___x___x900 (compare_relative_long_long,RIL_A,"CGRL"), /*208*/ >+ /*C6x9*/ GENx___x___x___ , /*208*/ >+ /*C6xA*/ GENx___x___x900 (compare_logical_relative_long_long,RIL_A,"CLGRL"), /*208*/ >+ /*C6xB*/ GENx___x___x___ , /*208*/ >+ /*C6xC*/ GENx___x___x900 (compare_relative_long_long_fullword,RIL_A,"CGFRL"), /*208*/ >+ /*C6xD*/ GENx370x390x900 (compare_relative_long,RIL_A,"CRL"), /*208*/ >+ /*C6xE*/ GENx___x___x900 (compare_logical_relative_long_long_fullword,RIL_A,"CLGFRL"), /*208*/ >+ /*C6xF*/ GENx370x390x900 (compare_logical_relative_long,RIL_A,"CLRL") }; /*208*/ >+ > DLL_EXPORT zz_func opcode_c8xx[16][GEN_MAXARCH] = { > /*C8x0*/ GENx___x___x900 (move_with_optional_specifications,SSF,"MVCOS"), > /*C8x1*/ GENx___x___x900 (extract_cpu_time,SSF,"ECTG"), >@@ -3656,11 +4040,11 @@ DLL_EXPORT zz_func opcode_e3xx[256][GEN_ > /*E32F*/ GENx___x___x900 (store_reversed_long,RXY,"STRVG"), > /*E330*/ GENx___x___x900 (compare_long_fullword,RXY,"CGF"), > /*E331*/ GENx___x___x900 (compare_logical_long_fullword,RXY,"CLGF"), >- /*E332*/ GENx___x___x___ , >+ /*E332*/ GENx___x___x900 (load_and_test_long_fullword,RXY,"LTGF"), /*208*/ > /*E333*/ GENx___x___x___ , >- /*E334*/ GENx___x___x___ , >+ /*E334*/ GENx___x___x900 (compare_halfword_long,RXY,"CGH"), /*208*/ > /*E335*/ GENx___x___x___ , >- /*E336*/ GENx___x___x___ , >+ /*E336*/ GENx370x390x900 (prefetch_data,RXY,"PFD"), /*208*/ > /*E337*/ GENx___x___x___ , > /*E338*/ GENx___x___x___ , > /*E339*/ GENx___x___x___ , >@@ -3698,7 +4082,7 @@ DLL_EXPORT zz_func opcode_e3xx[256][GEN_ > /*E359*/ GENx___x___x900 (compare_y,RXY,"CY"), > /*E35A*/ GENx___x___x900 (add_y,RXY,"AY"), > /*E35B*/ GENx___x___x900 (subtract_y,RXY,"SY"), >- /*E35C*/ GENx___x___x___ , >+ /*E35C*/ GENx___x___x900 (multiply_y,RXY,"MFY"), /*208*/ > /*E35D*/ GENx___x___x___ , > /*E35E*/ GENx___x___x900 (add_logical_y,RXY,"ALY"), > /*E35F*/ GENx___x___x900 (subtract_logical_y,RXY,"SLY"), >@@ -3723,14 +4107,14 @@ DLL_EXPORT zz_func opcode_e3xx[256][GEN_ > /*E372*/ GENx___x___x900 (store_character_y,RXY,"STCY"), > /*E373*/ GENx___x___x900 (insert_character_y,RXY,"ICY"), > /*E374*/ GENx___x___x___ , >- /*E375*/ GENx___x___x___ , >+ /*E375*/ GENx___x___x900 (load_address_extended_y,RXY,"LAEY"), /*208*/ > /*E376*/ GENx___x___x900 (load_byte,RXY,"LB"), > /*E377*/ GENx___x___x900 (load_byte_long,RXY,"LGB"), > /*E378*/ GENx___x___x900 (load_halfword_y,RXY,"LHY"), > /*E379*/ GENx___x___x900 (compare_halfword_y,RXY,"CHY"), > /*E37A*/ GENx___x___x900 (add_halfword_y,RXY,"AHY"), > /*E37B*/ GENx___x___x900 (subtract_halfword_y,RXY,"SHY"), >- /*E37C*/ GENx___x___x___ , >+ /*E37C*/ GENx___x___x900 (multiply_halfword_y,RXY,"MHY"), /*208*/ > /*E37D*/ GENx___x___x___ , > /*E37E*/ GENx___x___x___ , > /*E37F*/ GENx___x___x___ , >@@ -3936,15 +4320,15 @@ DLL_EXPORT zz_func opcode_e5xx[256][GEN_ > /*E541*/ GENx___x___x___ , > /*E542*/ GENx___x___x___ , > /*E543*/ GENx___x___x___ , >- /*E544*/ GENx___x___x___ , >+ /*E544*/ GENx370x390x900 (move_halfword_from_halfword_immediate,SIL,"MVHHI"), /*208*/ > /*E545*/ GENx___x___x___ , > /*E546*/ GENx___x___x___ , > /*E547*/ GENx___x___x___ , >- /*E548*/ GENx___x___x___ , >+ /*E548*/ GENx370x390x900 (move_long_from_halfword_immediate,SIL,"MVGHI"), /*208*/ > /*E549*/ GENx___x___x___ , > /*E54A*/ GENx___x___x___ , > /*E54B*/ GENx___x___x___ , >- /*E54C*/ GENx___x___x___ , >+ /*E54C*/ GENx370x390x900 (move_fullword_from_halfword_immediate,SIL,"MVHI"), /*208*/ > /*E54D*/ GENx___x___x___ , > /*E54E*/ GENx___x___x___ , > /*E54F*/ GENx___x___x___ , >@@ -3952,16 +4336,16 @@ DLL_EXPORT zz_func opcode_e5xx[256][GEN_ > /*E551*/ GENx___x___x___ , > /*E552*/ GENx___x___x___ , > /*E553*/ GENx___x___x___ , >- /*E554*/ GENx___x___x___ , >- /*E555*/ GENx___x___x___ , >+ /*E554*/ GENx370x390x900 (compare_halfword_immediate_halfword_storage,SIL,"CHHSI"), /*208*/ >+ /*E555*/ GENx370x390x900 (compare_logical_immediate_halfword_storage,SIL,"CLHHSI"), /*208*/ > /*E556*/ GENx___x___x___ , > /*E557*/ GENx___x___x___ , >- /*E558*/ GENx___x___x___ , >- /*E559*/ GENx___x___x___ , >+ /*E558*/ GENx370x390x900 (compare_halfword_immediate_long_storage,SIL,"CGHSI"), /*208*/ >+ /*E559*/ GENx370x390x900 (compare_logical_immediate_long_storage,SIL,"CLGHSI"), /*208*/ > /*E55A*/ GENx___x___x___ , > /*E55B*/ GENx___x___x___ , >- /*E55C*/ GENx___x___x___ , >- /*E55D*/ GENx___x___x___ , >+ /*E55C*/ GENx370x390x900 (compare_halfword_immediate_storage,SIL,"CHSI"), /*208*/ >+ /*E55D*/ GENx370x390x900 (compare_logical_immediate_fullword_storage,SIL,"CLFHSI"), /*208*/ > /*E55E*/ GENx___x___x___ , > /*E55F*/ GENx___x___x___ , > /*E560*/ GENx___x___x___ , >@@ -4463,7 +4847,7 @@ DLL_EXPORT zz_func opcode_ebxx[256][GEN_ > /*EB49*/ GENx___x___x___ , > /*EB4A*/ GENx___x___x___ , > /*EB4B*/ GENx___x___x___ , >- /*EB4C*/ GENx___x___x___ , >+ /*EB4C*/ GENx___x___x900 (extract_cache_attribute,RSY,"ECAG"), /*208*/ > /*EB4D*/ GENx___x___x___ , > /*EB4E*/ GENx___x___x___ , > /*EB4F*/ GENx___x___x___ , >@@ -4493,11 +4877,11 @@ DLL_EXPORT zz_func opcode_ebxx[256][GEN_ > /*EB67*/ GENx___x___x___ , > /*EB68*/ GENx___x___x___ , > /*EB69*/ GENx___x___x___ , >- /*EB6A*/ GENx___x___x___ , >+ /*EB6A*/ GENx370x390x900 (add_immediate_storage,SIY,"ASI"), /*208*/ > /*EB6B*/ GENx___x___x___ , > /*EB6C*/ GENx___x___x___ , > /*EB6D*/ GENx___x___x___ , >- /*EB6E*/ GENx___x___x___ , >+ /*EB6E*/ GENx370x390x900 (add_logical_with_signed_immediate,SIY,"ALSI"), /*208*/ > /*EB6F*/ GENx___x___x___ , > /*EB70*/ GENx___x___x___ , > /*EB71*/ GENx___x___x___ , >@@ -4509,11 +4893,11 @@ DLL_EXPORT zz_func opcode_ebxx[256][GEN_ > /*EB77*/ GENx___x___x___ , > /*EB78*/ GENx___x___x___ , > /*EB79*/ GENx___x___x___ , >- /*EB7A*/ GENx___x___x___ , >+ /*EB7A*/ GENx370x390x900 (add_immediate_long_storage,SIY,"AGSI"), /*208*/ > /*EB7B*/ GENx___x___x___ , > /*EB7C*/ GENx___x___x___ , > /*EB7D*/ GENx___x___x___ , >- /*EB7E*/ GENx___x___x___ , >+ /*EB7E*/ GENx370x390x900 (add_logical_with_signed_immediate_long,SIY,"ALGSI"), /*208*/ > /*EB7F*/ GENx___x___x___ , > /*EB80*/ GENx___x___x900 (insert_characters_under_mask_high,RSY,"ICMH"), > /*EB81*/ GENx___x___x900 (insert_characters_under_mask_y,RSY,"ICMY"), >@@ -4529,8 +4913,8 @@ DLL_EXPORT zz_func opcode_ebxx[256][GEN_ > /*EB8B*/ GENx___x___x___ , > /*EB8C*/ GENx___x___x___ , > /*EB8D*/ GENx___x___x___ , >- /*EB8E*/ GENx___x390x900 (move_long_unicode,RSY,"MVCLU"), >- /*EB8F*/ GENx___x390x900 (compare_logical_long_unicode,RSY,"CLCLU"), >+ /*EB8E*/ GENx370x390x900 (move_long_unicode,RSY,"MVCLU"), >+ /*EB8F*/ GENx370x390x900 (compare_logical_long_unicode,RSY,"CLCLU"), > /*EB90*/ GENx___x___x900 (store_multiple_y,RSY,"STMY"), > /*EB91*/ GENx___x___x___ , > /*EB92*/ GENx___x___x___ , >@@ -4579,7 +4963,7 @@ DLL_EXPORT zz_func opcode_ebxx[256][GEN_ > /*EBBD*/ GENx___x___x___ , > /*EBBE*/ GENx___x___x___ , > /*EBBF*/ GENx___x___x___ , >- /*EBC0*/ GENx___x390x900 (test_decimal,RSL,"TP"), >+ /*EBC0*/ GENx370x390x900 (test_decimal,RSL,"TP"), > /*EBC1*/ GENx___x___x___ , > /*EBC2*/ GENx___x___x___ , > /*EBC3*/ GENx___x___x___ , >@@ -4733,10 +5117,10 @@ DLL_EXPORT zz_func opcode_ecxx[256][GEN_ > /*EC51*/ GENx___x___x___ , > /*EC52*/ GENx___x___x___ , > /*EC53*/ GENx___x___x___ , >- /*EC54*/ GENx___x___x___ , >- /*EC55*/ GENx___x___x___ , >- /*EC56*/ GENx___x___x___ , >- /*EC57*/ GENx___x___x___ , >+ /*EC54*/ GENx___x___x900 (rotate_then_and_selected_bits_long_reg,RIE_RRIII,"RNSBG"), /*208*/ >+ /*EC55*/ GENx___x___x900 (rotate_then_insert_selected_bits_long_reg,RIE_RRIII,"RISBG"), /*208*/ >+ /*EC56*/ GENx___x___x900 (rotate_then_or_selected_bits_long_reg,RIE_RRIII,"ROSBG"), /*208*/ >+ /*EC57*/ GENx___x___x900 (rotate_then_exclusive_or_selected_bits_long_reg,RIE_RRIII,"RXSBG"), /*208*/ > /*EC58*/ GENx___x___x___ , > /*EC59*/ GENx___x___x___ , > /*EC5A*/ GENx___x___x___ , >@@ -4749,8 +5133,8 @@ DLL_EXPORT zz_func opcode_ecxx[256][GEN_ > /*EC61*/ GENx___x___x___ , > /*EC62*/ GENx___x___x___ , > /*EC63*/ GENx___x___x___ , >- /*EC64*/ GENx___x___x___ , >- /*EC65*/ GENx___x___x___ , >+ /*EC64*/ GENx___x___x900 (compare_and_branch_relative_long_register,RIE_RRIM,"CGRJ"), /*208*/ >+ /*EC65*/ GENx___x___x900 (compare_logical_and_branch_relative_long_register,RIE_RRIM,"CLGRJ"), /*208*/ > /*EC66*/ GENx___x___x___ , > /*EC67*/ GENx___x___x___ , > /*EC68*/ GENx___x___x___ , >@@ -4761,22 +5145,22 @@ DLL_EXPORT zz_func opcode_ecxx[256][GEN_ > /*EC6D*/ GENx___x___x___ , > /*EC6E*/ GENx___x___x___ , > /*EC6F*/ GENx___x___x___ , >- /*EC70*/ GENx___x___x___ , >- /*EC71*/ GENx___x___x___ , >- /*EC72*/ GENx___x___x___ , >- /*EC73*/ GENx___x___x___ , >+ /*EC70*/ GENx___x___x900 (compare_immediate_and_trap_long,RIE_RIM,"CGIT"), /*208*/ >+ /*EC71*/ GENx___x___x900 (compare_logical_immediate_and_trap_long,RIE_RIM,"CLGIT"), /*208*/ >+ /*EC72*/ GENx370x390x900 (compare_immediate_and_trap,RIE_RIM,"CIT"), /*208*/ >+ /*EC73*/ GENx370x390x900 (compare_logical_immediate_and_trap_fullword,RIE_RIM,"CLFIT"), /*208*/ > /*EC74*/ GENx___x___x___ , > /*EC75*/ GENx___x___x___ , >- /*EC76*/ GENx___x___x___ , >- /*EC77*/ GENx___x___x___ , >+ /*EC76*/ GENx370x390x900 (compare_and_branch_relative_register,RIE_RRIM,"CRJ"), /*208*/ >+ /*EC77*/ GENx370x390x900 (compare_logical_and_branch_relative_register,RIE_RRIM,"CLRJ"), /*208*/ > /*EC78*/ GENx___x___x___ , > /*EC79*/ GENx___x___x___ , > /*EC7A*/ GENx___x___x___ , > /*EC7B*/ GENx___x___x___ , >- /*EC7C*/ GENx___x___x___ , >- /*EC7D*/ GENx___x___x___ , >- /*EC7E*/ GENx___x___x___ , >- /*EC7F*/ GENx___x___x___ , >+ /*EC7C*/ GENx___x___x900 (compare_immediate_and_branch_relative_long,RIE_RMII,"CGIJ"), /*208*/ >+ /*EC7D*/ GENx___x___x900 (compare_logical_immediate_and_branch_relative_long,RIE_RMII,"CLGIJ"), /*208*/ >+ /*EC7E*/ GENx370x390x900 (compare_immediate_and_branch_relative,RIE_RMII,"CIJ"), /*208*/ >+ /*EC7F*/ GENx370x390x900 (compare_logical_immediate_and_branch_relative,RIE_RMII,"CLIJ"), /*208*/ > /*EC80*/ GENx___x___x___ , > /*EC81*/ GENx___x___x___ , > /*EC82*/ GENx___x___x___ , >@@ -4877,8 +5261,8 @@ DLL_EXPORT zz_func opcode_ecxx[256][GEN_ > /*ECE1*/ GENx___x___x___ , > /*ECE2*/ GENx___x___x___ , > /*ECE3*/ GENx___x___x___ , >- /*ECE4*/ GENx___x___x___ , >- /*ECE5*/ GENx___x___x___ , >+ /*ECE4*/ GENx___x___x900 (compare_and_branch_long_register,RRS,"CGRB"), /*208*/ >+ /*ECE5*/ GENx___x___x900 (compare_logical_and_branch_long_register,RRS,"CLGRB"), /*208*/ > /*ECE6*/ GENx___x___x___ , > /*ECE7*/ GENx___x___x___ , > /*ECE8*/ GENx___x___x___ , >@@ -4895,16 +5279,16 @@ DLL_EXPORT zz_func opcode_ecxx[256][GEN_ > /*ECF3*/ GENx___x___x___ , > /*ECF4*/ GENx___x___x___ , > /*ECF5*/ GENx___x___x___ , >- /*ECF6*/ GENx___x___x___ , >- /*ECF7*/ GENx___x___x___ , >+ /*ECF6*/ GENx370x390x900 (compare_and_branch_register,RRS,"CRB"), /*208*/ >+ /*ECF7*/ GENx370x390x900 (compare_logical_and_branch_register,RRS,"CLRB"), /*208*/ > /*ECF8*/ GENx___x___x___ , > /*ECF9*/ GENx___x___x___ , > /*ECFA*/ GENx___x___x___ , > /*ECFB*/ GENx___x___x___ , >- /*ECFC*/ GENx___x___x___ , >- /*ECFD*/ GENx___x___x___ , >- /*ECFE*/ GENx___x___x___ , >- /*ECFF*/ GENx___x___x___ }; >+ /*ECFC*/ GENx___x___x900 (compare_immediate_and_branch_long,RIS,"CGIB"), /*208*/ >+ /*ECFD*/ GENx___x___x900 (compare_logical_immediate_and_branch_long,RIS,"CLGIB"), /*208*/ >+ /*ECFE*/ GENx370x390x900 (compare_immediate_and_branch,RIS,"CIB"), /*208*/ >+ /*ECFF*/ GENx370x390x900 (compare_logical_immediate_and_branch,RIS,"CLIB") }; /*208*/ > > // #endif /*defined(FEATURE_ESAME)*/ > >@@ -4957,8 +5341,8 @@ DLL_EXPORT zz_func opcode_edxx[256][GEN_ > /*ED2B*/ GENx___x___x___ , > /*ED2C*/ GENx___x___x___ , > /*ED2D*/ GENx___x___x___ , >- /*ED2E*/ GENx___x___x900 (multiply_add_float_short,RXF,"MAE"), >- /*ED2F*/ GENx___x___x900 (multiply_subtract_float_short,RXF,"MSE"), >+ /*ED2E*/ GENx___x390x900 (multiply_add_float_short,RXF,"MAE"), >+ /*ED2F*/ GENx___x390x900 (multiply_subtract_float_short,RXF,"MSE"), > /*ED30*/ GENx___x___x___ , > /*ED31*/ GENx___x___x___ , > /*ED32*/ GENx___x___x___ , >@@ -4973,8 +5357,8 @@ DLL_EXPORT zz_func opcode_edxx[256][GEN_ > /*ED3B*/ GENx___x___x900 (multiply_unnormal_float_long_to_ext,RXF,"MY"), /*@Z9*/ > /*ED3C*/ GENx___x___x900 (multiply_add_unnormal_float_long_to_ext_high,RXF,"MAYH"), /*@Z9*/ > /*ED3D*/ GENx___x___x900 (multiply_unnormal_float_long_to_ext_high,RXF,"MYH"), /*@Z9*/ >- /*ED3E*/ GENx___x___x900 (multiply_add_float_long,RXF,"MAD"), >- /*ED3F*/ GENx___x___x900 (multiply_subtract_float_long,RXF,"MSD"), >+ /*ED3E*/ GENx___x390x900 (multiply_add_float_long,RXF,"MAD"), >+ /*ED3F*/ GENx___x390x900 (multiply_subtract_float_long,RXF,"MSD"), > /*ED40*/ GENx___x390x900 (shift_coefficient_left_dfp_long,RXF,"SLDT"), > /*ED41*/ GENx___x390x900 (shift_coefficient_right_dfp_long,RXF,"SRDT"), > /*ED42*/ GENx___x___x___ , >diff -Naupr hercules-3.05/opcode.h hercules-20070717/opcode.h >--- hercules-3.05/opcode.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/opcode.h 2008-09-03 13:07:48.000000000 +0200 >@@ -4,9 +4,68 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: opcode.h,v 1.208 2007/06/23 00:04:14 ivan Exp $ >+// $Id: opcode.h,v 1.227 2008/04/12 10:00:03 bernard Exp $ > // > // $Log: opcode.h,v $ >+// Revision 1.227 2008/04/12 10:00:03 bernard >+// replaced exrl ifs within macros for conditional expressions >+// >+// Revision 1.226 2008/04/11 14:29:17 bernard >+// Integrate regs->exrl into base Hercules code. >+// >+// Revision 1.225 2008/04/09 06:53:05 bernard >+// Changes on request of Roger Bowler (No functional change) >+// >+// Revision 1.224 2008/04/08 17:14:36 bernard >+// Added execute relative long instruction >+// >+// Revision 1.223 2008/03/28 23:03:54 rbowler >+// Correct relative address calculation for RIL-format instructions >+// >+// Revision 1.222 2008/03/12 23:44:03 rbowler >+// Add MVCOS instruction (part 1) >+// >+// Revision 1.221 2008/03/12 21:41:21 rbowler >+// Add comment explaining 0 and _B forms of instruction decoders >+// >+// Revision 1.220 2008/03/08 22:28:04 rbowler >+// Add CHRL,CGHRL,CLRL,CLGRL,CLGFRL,CLHRL,CLGHRL, >+// CRL,CGRL,CGFRL instructions >+// >+// Revision 1.219 2008/03/04 15:42:49 rbowler >+// Add CRB,CGRB,CIB,CGIB,CLRB,CLGRB,CLIB,CLGIB instructions >+// >+// Revision 1.218 2008/02/29 15:53:10 rbowler >+// Instruction decoder for C4xx and C6xx instructions >+// >+// Revision 1.217 2008/02/29 00:57:03 rbowler >+// Modify compare_and_branch instruction names >+// >+// Revision 1.216 2008/02/29 00:08:25 rbowler >+// Additional RIE instruction formats >+// >+// Revision 1.215 2008/02/28 23:01:35 rbowler >+// RRS,SIL instruction formats >+// >+// Revision 1.214 2008/02/28 18:54:51 rbowler >+// RIS instruction format >+// >+// Revision 1.213 2008/02/28 17:18:01 rbowler >+// Opcodes for General-Instructions-Extension feature >+// >+// Revision 1.212 2008/02/28 11:08:26 rbowler >+// Opcodes for new instructions in zPOP-06 >+// >+// Revision 1.211 2008/02/19 11:49:19 ivan >+// - Move setting of CPU priority after spwaning timer thread >+// - Added support for Posix 1003.1e capabilities >+// >+// Revision 1.210 2007/12/13 16:57:35 rbowler >+// Correct GENx___x390x___ definition (by Enrico Sorichetti) >+// >+// Revision 1.209 2007/11/15 22:54:43 rbowler >+// Correct PIC6 when loading DRM bits into FPC >+// > // Revision 1.208 2007/06/23 00:04:14 ivan > // Update copyright notices to include current year (2007) > // >@@ -134,7 +193,7 @@ > (void*)& _mnemonic "\0" #_name \ > } > >-#define GENx___x390x_(_name,_format,_mnemonic) \ >+#define GENx___x390x___(_name,_format,_mnemonic) \ > { \ > _GEN370(operation_exception) \ > _GEN390(_name) \ >@@ -192,8 +251,9 @@ > typedef void (ATTR_REGPARM(2) *zz_func) (BYTE inst[], REGS *regs); > > #define ILC(_b) ((_b) < 0x40 ? 2 : (_b) < 0xc0 ? 4 : 6) >+ > #define REAL_ILC(_regs) \ >- (likely(!(_regs)->execflag) ? (_regs)->psw.ilc : 4) >+ (likely(!(_regs)->execflag) ? (_regs)->psw.ilc : (_regs)->exrl ? 6 : 4) > > /* Gabor Hoffer (performance option) */ > OPC_DLL_IMPORT zz_func s370_opcode_table[]; >@@ -212,6 +272,8 @@ OPC_DLL_IMPORT zz_func opcode_b3xx[][GEN > OPC_DLL_IMPORT zz_func opcode_b9xx[][GEN_MAXARCH]; > OPC_DLL_IMPORT zz_func opcode_c0xx[][GEN_MAXARCH]; > OPC_DLL_IMPORT zz_func opcode_c2xx[][GEN_MAXARCH]; /*@Z9*/ >+OPC_DLL_IMPORT zz_func opcode_c4xx[][GEN_MAXARCH]; /*208*/ >+OPC_DLL_IMPORT zz_func opcode_c6xx[][GEN_MAXARCH]; /*208*/ > OPC_DLL_IMPORT zz_func opcode_c8xx[][GEN_MAXARCH]; > OPC_DLL_IMPORT zz_func opcode_e3xx[][GEN_MAXARCH]; > OPC_DLL_IMPORT zz_func opcode_e4xx[256][GEN_MAXARCH]; >@@ -267,6 +329,12 @@ int used; \ > case 0xC2: /*@Z9*/ \ > used = sysblk.imapc2[(_inst)[1] & 0x0F]++; /*@Z9*/ \ > break; /*@Z9*/ \ >+ case 0xC4: /*208*/ \ >+ used = sysblk.imapc4[(_inst)[1] & 0x0F]++; /*208*/ \ >+ break; /*208*/ \ >+ case 0xC6: /*208*/ \ >+ used = sysblk.imapc6[(_inst)[1] & 0x0F]++; /*208*/ \ >+ break; /*208*/ \ > case 0xC8: \ > used = sysblk.imapc8[(_inst)[1] & 0x0F]++; \ > break; \ >@@ -449,7 +517,7 @@ do { \ > return; \ > } else { \ > if (unlikely((_regs)->execflag)) \ >- UPDATE_BEAR((_regs), (_len) - 4); \ >+ UPDATE_BEAR((_regs), (_len) - ((_regs)->exrl ? 6 : 4)); \ > (_regs)->psw.IA = _newia; \ > (_regs)->aie = NULL; \ > PER_SB((_regs), (_regs)->psw.IA); \ >@@ -468,7 +536,7 @@ do { \ > if (likely(!(_regs)->execflag)) \ > (_regs)->psw.IA = PSW_IA((_regs), (_offset)); \ > else { \ >- UPDATE_BEAR((_regs), (_len) - 4); \ >+ UPDATE_BEAR((_regs), (_len) - ((_regs)->exrl ? 6 : 4)); \ > (_regs)->psw.IA = (_regs)->ET + (_offset); \ > (_regs)->psw.IA &= ADDRESS_MAXWRAP((_regs)); \ > } \ >@@ -492,7 +560,7 @@ do { \ > if (likely(!(_regs)->execflag)) \ > (_regs)->psw.IA = PSW_IA((_regs), (_offset)); \ > else { \ >- UPDATE_BEAR((_regs), 6 - 4); \ >+ UPDATE_BEAR((_regs), 6 - ((_regs)->exrl ? 6 : 4)); \ > (_regs)->psw.IA = (_regs)->ET + (_offset); \ > (_regs)->psw.IA &= ADDRESS_MAXWRAP((_regs)); \ > } \ >@@ -501,7 +569,6 @@ do { \ > } \ > } while (0) > >- > /* CPU Stepping or Tracing */ > > #define CPU_STEPPING(_regs, _ilc) \ >@@ -618,15 +685,9 @@ do { \ > (_regs)->program_interrupt( (_regs), PGM_SPECIFICATION_EXCEPTION) > > /* Program check if fpc is not valid contents for FPC register */ >-#if !defined(FEATURE_DECIMAL_FLOATING_POINT) >- #define FPC_CHECK(_fpc, _regs) \ >- if((_fpc) & (FPC_RESERVED | FPC_DRM)) \ >- (_regs)->program_interrupt( (_regs), PGM_SPECIFICATION_EXCEPTION) >-#else /*defined(FEATURE_DECIMAL_FLOATING_POINT)*/ >- #define FPC_CHECK(_fpc, _regs) \ >+#define FPC_CHECK(_fpc, _regs) \ > if((_fpc) & FPC_RESERVED) \ > (_regs)->program_interrupt( (_regs), PGM_SPECIFICATION_EXCEPTION) >-#endif /*defined(FEATURE_DECIMAL_FLOATING_POINT)*/ > > #define SSID_CHECK(_regs) \ > if((!((_regs)->GR_LHH(1) & 0x0001)) \ >@@ -972,6 +1033,28 @@ do { \ > if (_ilc) (_regs)->psw.ilc = (_ilc); \ > } while(0) > >+/* Instruction decoders */ >+ >+/* >+ * A decoder is placed at the start of each instruction. The purpose >+ * of a decoder is to extract the operand fields according to the >+ * instruction format; to increment the instruction address (IA) field >+ * of the PSW by 2, 4, or 6 bytes; and to set the instruction length >+ * code (ILC) field of the PSW in case a program check occurs. >+ * >+ * Certain decoders have additional forms with 0 and _B suffixes. >+ * - the 0 suffix version does not update the PSW ILC. >+ * - the _B suffix version updates neither the PSW ILC nor the PSW IA. >+ * >+ * The "0" versions of the decoders are chosen whenever we know >+ * that past this point, no program interrupt will be generated >+ * (like most general instructions when no storage access is needed) >+ * therefore needing simpler prologue code. >+ * The "_B" versions for some of the decoders are intended for >+ * "branch" type operations where updating the PSW IA to IA+ILC >+ * should only be done after the branch is deemed impossible. >+ */ >+ > #undef DECODER_TEST_RRE > #define DECODER_TEST_RRF_R > #define DECODER_TEST_RRF_M >@@ -989,8 +1072,12 @@ do { \ > #undef DECODER_TEST_RSI > #undef DECODER_TEST_RI > #define DECODER_TEST_RIL >+#define DECODER_TEST_RIL_A >+#undef DECODER_TEST_RIS >+#undef DECODER_TEST_RRS > #undef DECODER_TEST_SI > #define DECODER_TEST_SIY >+#undef DECODER_TEST_SIL > #undef DECODER_TEST_S > #define DECODER_TEST_SS > #define DECODER_TEST_SS_L >@@ -1831,6 +1918,78 @@ do { \ > INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ > } > >+/* RIE register and immediate with mask */ /*208*/ >+#undef RIE_RIM >+ >+#define RIE_RIM(_inst, _regs, _r1, _i2, _m3) \ >+ RIE_RIM_DECODER(_inst, _regs, _r1, _i2, _m3, 6, 6) >+ >+#define RIE_RIM_DECODER(_inst, _regs, _r1, _i2, _m3, _len, _ilc) \ >+ { U32 temp = fetch_fw(&(_inst)[1]); \ >+ (_m3) = (temp >> 4) & 0xf; \ >+ (_i2) = (temp >> 8) & 0xffff; \ >+ (_r1) = (temp >> 28) & 0xf; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+/* RIE register to register with immediate and mask */ /*208*/ >+#undef RIE_RRIM >+#undef RIE_RRIM0 >+#undef RIE_RRIM_B >+ >+#define RIE_RRIM(_inst, _regs, _r1, _r2, _i4, _m3) \ >+ RIE_RRIM_DECODER(_inst, _regs, _r1, _r2, _i4, _m3, 6, 6) >+#define RIE_RRIM0(_inst, _regs, _r1, _r2, _i4, _m3) \ >+ RIE_RRIM_DECODER(_inst, _regs, _r1, _r2, _i4, _m3, 6, 0) >+#define RIE_RRIM_B(_inst, _regs, _r1, _r2, _i4, _m3) \ >+ RIE_RRIM_DECODER(_inst, _regs, _r1, _r2, _i4, _m3, 0, 0) >+ >+#define RIE_RRIM_DECODER(_inst, _regs, _r1, _r2, _i4, _m3, _len, _ilc) \ >+ { U32 temp = fetch_fw(&(_inst)[1]); \ >+ (_m3) = (temp >> 4) & 0xf; \ >+ (_i4) = (temp >> 8) & 0xffff; \ >+ (_r2) = (temp >> 24) & 0xf; \ >+ (_r1) = (temp >> 28) & 0xf; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+/* RIE register and mask with longer immediate and immediate */ /*208*/ >+#undef RIE_RMII >+#undef RIE_RMII0 >+#undef RIE_RMII_B >+ >+#define RIE_RMII(_inst, _regs, _r1, _i2, _m3, _i4) \ >+ RIE_RMII_DECODER(_inst, _regs, _r1, _i2, _m3, _i4, 6, 6) >+#define RIE_RMII0(_inst, _regs, _r1, _i2, _m3, _i4) \ >+ RIE_RMII_DECODER(_inst, _regs, _r1, _i2, _m3, _i4, 6, 0) >+#define RIE_RMII_B(_inst, _regs, _r1, _i2, _m3, _i4) \ >+ RIE_RMII_DECODER(_inst, _regs, _r1, _i2, _m3, _i4, 0, 0) >+ >+#define RIE_RMII_DECODER(_inst, _regs, _r1, _i2, _m3, _i4, _len, _ilc) \ >+ { U32 temp = fetch_fw(&(_inst)[1]); \ >+ (_i2) = temp & 0xff; \ >+ (_i4) = (temp >> 8) & 0xffff; \ >+ (_m3) = (temp >> 24) & 0xf; \ >+ (_r1) = (temp >> 28) & 0xf; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+/* RIE register to register with three immediate fields */ /*208*/ >+#undef RIE_RRIII >+ >+#define RIE_RRIII(_inst, _regs, _r1, _r2, _i3, _i4, _i5) \ >+ RIE_RRIII_DECODER(_inst, _regs, _r1, _r2, _i3, _i4, _i5, 6, 6) >+ >+#define RIE_RRIII_DECODER(_inst, _regs, _r1, _r2, _i3, _i4, _i5, _len, _ilc) \ >+ { U32 temp = fetch_fw(&(_inst)[1]); \ >+ (_i5) = temp & 0xff; \ >+ (_i4) = (temp >> 8) & 0xff; \ >+ (_i3) = (temp >> 16) & 0xff; \ >+ (_r2) = (temp >> 24) & 0xf; \ >+ (_r1) = (temp >> 28) & 0xf; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ > /* RIL register and longer immediate with extended 4 bit op code */ > #undef RIL > #undef RIL0 >@@ -1870,6 +2029,140 @@ do { \ > INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ > } > >+/* RIL register and longer immediate relative address */ >+#undef RIL_A >+ >+#if !defined(DECODER_TEST)&&!defined(DECODER_TEST_RIL_A) >+ #define RIL_A(_inst, _regs, _r1, _addr2) \ >+ RIL_A_DECODER(_inst, _regs, _r1, _addr2, 6, 6) >+#else >+ #define RIL_A(_inst, _regs, _r1, _addr2) \ >+ RIL_A_DECODER_TEST(_inst, _regs, _r1, _addr2, 6, 6) >+#endif >+ >+#define RIL_A_DECODER(_inst, _regs, _r1, _addr2, _len, _ilc) \ >+ { U32 temp = fetch_fw(_inst); \ >+ S64 offset; \ >+ (_r1) = (temp >> 20) & 0xf; \ >+ offset = 2LL*(S32)(((temp & 0xffff) << 16) \ >+ | ((_inst)[4] << 8) \ >+ | (_inst)[5]); \ >+ (_addr2) = (likely(!(_regs)->execflag)) ? \ >+ PSW_IA((_regs), offset) : \ >+ ((_regs)->ET + offset) & ADDRESS_MAXWRAP((_regs)); \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+#define RIL_A_DECODER_TEST(_inst, _regs, _r1, _addr2, _len, _ilc) \ >+ { \ >+ S64 offset = 2LL*(S32)(fetch_fw(&(_inst)[2])); \ >+ (_r1) = ((_inst)[1] >> 4) & 0xf; \ >+ (_addr2) = (likely(!(_regs)->execflag)) ? \ >+ PSW_IA((_regs), offset) : \ >+ ((_regs)->ET + offset) & ADDRESS_MAXWRAP((_regs)); \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+/* RIS register, immediate, mask, and storage */ /*208*/ >+#undef RIS >+#undef RIS0 >+#undef RIS_B >+ >+#if !defined(DECODER_TEST)&&!defined(DECODER_TEST_RIS) >+ #define RIS(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4) \ >+ RIS_DECODER(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, 6, 6) >+ #define RIS0(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4) \ >+ RIS_DECODER(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, 6, 0) >+ #define RIS_B(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4) \ >+ RIS_DECODER(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, 0, 0) >+#else >+ #define RIS(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4) \ >+ RIS_DECODER_TEST(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, 6, 6) >+ #define RISO(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4) \ >+ RIS_DECODER_TEST(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, 6, 0) >+ #define RIS_B(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4) \ >+ RIS_DECODER_TEST(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, 0, 0) >+#endif >+ >+#define RIS_DECODER(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, _len, _ilc) \ >+ { U32 temp = fetch_fw(_inst); \ >+ (_effective_addr4) = temp & 0xfff; \ >+ (_b4) = (temp >> 12) & 0xf; \ >+ if((_b4) != 0) \ >+ { \ >+ (_effective_addr4) += (_regs)->GR((_b4)); \ >+ (_effective_addr4) &= ADDRESS_MAXWRAP((_regs)); \ >+ } \ >+ (_m3) = (temp >> 16) & 0xf; \ >+ (_r1) = (temp >> 20) & 0xf; \ >+ (_i2) = (_inst)[4]; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+#define RIS_DECODER_TEST(_inst, _regs, _r1, _i2, _m3, _b4, _effective_addr4, _len, _ilc) \ >+ { U32 temp = fetch_fw(_inst); \ >+ (_effective_addr4) = temp & 0xfff; \ >+ (_b4) = (temp >> 12) & 0xf; \ >+ if((_b4)) { \ >+ (_effective_addr4) += (_regs)->GR((_b4)); \ >+ (_effective_addr4) &= ADDRESS_MAXWRAP((_regs)); \ >+ } \ >+ (_m3) = (temp >> 16) & 0xf; \ >+ (_r1) = (temp >> 20) & 0xf; \ >+ (_i2) = (_inst)[4]; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+/* RRS register, immediate, mask, and storage */ /*208*/ >+#undef RRS >+#undef RRS0 >+#undef RRS_B >+ >+#if !defined(DECODER_TEST)&&!defined(DECODER_TEST_RRS) >+ #define RRS(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4) \ >+ RRS_DECODER(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, 6, 6) >+ #define RRS0(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4) \ >+ RRS_DECODER(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, 6, 0) >+ #define RRS_B(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4) \ >+ RRS_DECODER(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, 0, 0) >+#else >+ #define RRS(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4) \ >+ RRS_DECODER_TEST(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, 6, 6) >+ #define RRS0(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4) \ >+ RRS_DECODER_TEST(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, 6, 0) >+ #define RRS_B(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4) \ >+ RRS_DECODER_TEST(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, 0, 0) >+#endif >+ >+#define RRS_DECODER(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, _len, _ilc) \ >+ { U32 temp = fetch_fw(_inst); \ >+ (_effective_addr4) = temp & 0xfff; \ >+ (_b4) = (temp >> 12) & 0xf; \ >+ if((_b4) != 0) \ >+ { \ >+ (_effective_addr4) += (_regs)->GR((_b4)); \ >+ (_effective_addr4) &= ADDRESS_MAXWRAP((_regs)); \ >+ } \ >+ (_r2) = (temp >> 16) & 0xf; \ >+ (_r1) = (temp >> 20) & 0xf; \ >+ (_m3) = ((_inst)[4] >> 4) & 0xf; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+#define RRS_DECODER_TEST(_inst, _regs, _r1, _r2, _m3, _b4, _effective_addr4, _len, _ilc) \ >+ { U32 temp = fetch_fw(_inst); \ >+ (_effective_addr4) = temp & 0xfff; \ >+ (_b4) = (temp >> 12) & 0xf; \ >+ if((_b4)) { \ >+ (_effective_addr4) += (_regs)->GR((_b4)); \ >+ (_effective_addr4) &= ADDRESS_MAXWRAP((_regs)); \ >+ } \ >+ (_r2) = (temp >> 16) & 0xf; \ >+ (_r1) = (temp >> 20) & 0xf; \ >+ (_m3) = ((_inst)[4] >> 4) & 0xf; \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ > /* SI storage and immediate */ > #undef SI > >@@ -1951,6 +2244,43 @@ do { \ > (_i2) = (temp >> 16) & 0xff; \ > } > >+/* SIL storage and longer immediate */ /*208*/ >+#undef SIL >+ >+#if !defined(DECODER_TEST)&&!defined(DECODER_TEST_SIL) >+ #define SIL(_inst, _regs, _i2, _b1, _effective_addr1) \ >+ SIL_DECODER(_inst, _regs, _i2, _b1, _effective_addr1, 6, 6) >+#else >+ #define SIL(_inst, _regs, _i2, _b1, _effective_addr1) \ >+ SIL_DECODER_TEST(_inst, _regs, _i2, _b1, _effective_addr1, 6, 6) >+#endif >+ >+#define SIL_DECODER(_inst, _regs, _i2, _b1, _effective_addr1, _len, _ilc) \ >+ { U32 temp = fetch_fw(&(_inst)[2]); \ >+ (_i2) = temp & 0xffff; \ >+ (_effective_addr1) = (temp >> 16) & 0xfff; \ >+ (_b1) = (temp >> 28) & 0xf; \ >+ if((_b1) != 0) \ >+ { \ >+ (_effective_addr1) += (_regs)->GR((_b1)); \ >+ (_effective_addr1) &= ADDRESS_MAXWRAP((_regs)); \ >+ } \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ >+#define SIL_DECODER_TEST(_inst, _regs, _i2, _b1, _effective_addr1, _len, _ilc) \ >+ { U32 temp = fetch_fw(&(_inst)[2]); \ >+ (_i2) = temp & 0xffff; \ >+ (_effective_addr1) = (temp >> 16) & 0xfff; \ >+ (_b1) = (temp >> 28) & 0xf; \ >+ if((_b1) != 0) \ >+ { \ >+ (_effective_addr1) += (_regs)->GR((_b1)); \ >+ (_effective_addr1) &= ADDRESS_MAXWRAP((_regs)); \ >+ } \ >+ INST_UPDATE_PSW((_regs), (_len), (_ilc)); \ >+ } >+ > /* S storage operand only */ > #undef S > >@@ -2408,107 +2738,6 @@ do { \ > #define PERFORM_SERIALIZATION(_regs) do { } while (0) > #define PERFORM_CHKPT_SYNC(_regs) do { } while (0) > >-#if !defined(NO_SETUID) >- >-/* SETMODE(INIT) >- * sets the saved uid to the effective uid, and >- * sets the effective uid to the real uid, such >- * that the program is running with normal user >- * attributes, other then that it may switch to >- * the saved uid by SETMODE(ROOT). This call is >- * usually made upon entry to the setuid program. >- * >- * SETMODE(ROOT) >- * sets the saved uid to the real uid, and >- * sets the real and effective uid to the saved uid. >- * A setuid root program will enter 'root mode' and >- * will have all the appropriate access. >- * >- * SETMODE(USER) >- * sets the real and effective uid to the uid of the >- * caller. The saved uid will be the effective uid >- * upon entry to the program (as before SETMODE(INIT)) >- * >- * SETMODE(TERM) >- * sets real, effective and saved uid to the real uid >- * upon entry to the program. This call will revoke >- * any setuid access that the thread/process has. It >- * is important to issue this call before an exec to a >- * shell or other program that could introduce integrity >- * exposures when running with root access. >- */ >- >-#if defined(HAVE_SETRESUID) >- >-#define _SETMODE_INIT \ >-do { \ >- getresuid(&sysblk.ruid,&sysblk.euid,&sysblk.suid); \ >- getresgid(&sysblk.rgid,&sysblk.egid,&sysblk.sgid); \ >- setresuid(sysblk.ruid,sysblk.ruid,sysblk.euid); \ >- setresgid(sysblk.rgid,sysblk.rgid,sysblk.egid); \ >-} while(0) >- >-#define _SETMODE_ROOT \ >-do { \ >- setresuid(sysblk.suid,sysblk.suid,sysblk.ruid); \ >-} while(0) >- >-#define _SETMODE_USER \ >-do { \ >- setresuid(sysblk.ruid,sysblk.ruid,sysblk.suid); \ >-} while(0) >- >-#define _SETMODE_TERM \ >-do { \ >- setresuid(sysblk.ruid,sysblk.ruid,sysblk.ruid); \ >- setresgid(sysblk.rgid,sysblk.rgid,sysblk.rgid); \ >-} while(0) >- >-#elif defined(HAVE_SETREUID) >- >-#define _SETMODE_INIT \ >-do { \ >- sysblk.ruid = getuid(); \ >- sysblk.euid = geteuid(); \ >- sysblk.rgid = getgid(); \ >- sysblk.egid = getegid(); \ >- setreuid(sysblk.euid, sysblk.ruid); \ >- setregid(sysblk.egid, sysblk.rgid); \ >-} while (0) >- >-#define _SETMODE_ROOT \ >-do { \ >- setreuid(sysblk.ruid, sysblk.euid); \ >- setregid(sysblk.rgid, sysblk.egid); \ >-} while (0) >- >-#define _SETMODE_USER \ >-do { \ >- setregid(sysblk.egid, sysblk.rgid); \ >- setreuid(sysblk.euid, sysblk.ruid); \ >-} while (0) >- >-#define _SETMODE_TERM \ >-do { \ >- setuid(sysblk.ruid); \ >- setgid(sysblk.rgid); \ >-} while (0) >- >-#else /* defined(HAVE_SETRESUID) || defined(HAVE_SETEREUID) */ >- >-#error Cannot figure out how to swap effective UID/GID, maybe you should define NO_SETUID? >- >-#endif /* defined(HAVE_SETREUID) || defined(HAVE_SETRESUID) */ >- >-#define SETMODE(_func) _SETMODE_ ## _func >- >-#else /* !defined(NO_SETUID) */ >- >-#define SETMODE(_func) >- >-#endif /* !defined(NO_SETUID) */ >- >- > /* Functions in module channel.c */ > int ARCH_DEP(startio) (REGS *regs, DEVBLK *dev, ORB *orb); > void *s370_execute_ccw_chain (DEVBLK *dev); >@@ -2803,6 +3032,7 @@ DEF_INST(move_to_primary); > DEF_INST(move_to_secondary); > DEF_INST(move_with_destination_key); > DEF_INST(move_with_key); >+DEF_INST(move_with_optional_specifications); /*208*/ > DEF_INST(move_with_source_key); > DEF_INST(program_call); > DEF_INST(program_return); >@@ -2986,7 +3216,7 @@ DEF_INST(store_float_long_y); > DEF_INST(store_float_short_y); > > >-/* Instructions in general.c */ >+/* Instructions in general1.c */ > DEF_INST(add_register); > DEF_INST(add); > DEF_INST(add_halfword); >@@ -3048,6 +3278,7 @@ DEF_INST(exclusive_or); > DEF_INST(exclusive_or_immediate); > DEF_INST(exclusive_or_character); > DEF_INST(execute); >+DEF_INST(execute_relative_long); /*208*/ > DEF_INST(extract_access_register); > DEF_INST(insert_character); > DEF_INST(insert_characters_under_mask); >@@ -3080,6 +3311,9 @@ DEF_INST(multiply_halfword); > DEF_INST(multiply_halfword_immediate); > DEF_INST(multiply_single_register); > DEF_INST(multiply_single); >+ >+ >+/* Instructions in general2.c */ > DEF_INST(or_register); > DEF_INST(or); > DEF_INST(or_immediate); >@@ -3120,11 +3354,88 @@ DEF_INST(test_under_mask_low); > DEF_INST(translate); > DEF_INST(translate_and_test); > DEF_INST(translate_and_test_reverse); >+DEF_INST(translate_and_test_extended); /*208*/ >+DEF_INST(translate_and_test_reverse_extended); /*208*/ > DEF_INST(translate_extended); > DEF_INST(unpack); > DEF_INST(update_tree); > > >+/* Instructions in general3.c */ >+DEF_INST(add_immediate_long_storage); /*208*/ >+DEF_INST(add_immediate_storage); /*208*/ >+DEF_INST(add_logical_with_signed_immediate); /*208*/ >+DEF_INST(add_logical_with_signed_immediate_long); /*208*/ >+DEF_INST(compare_and_branch_register); /*208*/ >+DEF_INST(compare_and_branch_long_register); /*208*/ >+DEF_INST(compare_and_branch_relative_register); /*208*/ >+DEF_INST(compare_and_branch_relative_long_register); /*208*/ >+DEF_INST(compare_and_trap_long_register); /*208*/ >+DEF_INST(compare_and_trap_register); /*208*/ >+DEF_INST(compare_halfword_immediate_halfword_storage); /*208*/ >+DEF_INST(compare_halfword_immediate_long_storage); /*208*/ >+DEF_INST(compare_halfword_immediate_storage); /*208*/ >+DEF_INST(compare_halfword_long); /*208*/ >+DEF_INST(compare_halfword_relative_long); /*208*/ >+DEF_INST(compare_halfword_relative_long_long); /*208*/ >+DEF_INST(compare_immediate_and_branch); /*208*/ >+DEF_INST(compare_immediate_and_branch_long); /*208*/ >+DEF_INST(compare_immediate_and_branch_relative); /*208*/ >+DEF_INST(compare_immediate_and_branch_relative_long); /*208*/ >+DEF_INST(compare_immediate_and_trap); /*208*/ >+DEF_INST(compare_immediate_and_trap_long); /*208*/ >+DEF_INST(compare_logical_and_branch_long_register); /*208*/ >+DEF_INST(compare_logical_and_branch_register); /*208*/ >+DEF_INST(compare_logical_and_branch_relative_long_register); /*208*/ >+DEF_INST(compare_logical_and_branch_relative_register); /*208*/ >+DEF_INST(compare_logical_and_trap_long_register); /*208*/ >+DEF_INST(compare_logical_and_trap_register); /*208*/ >+DEF_INST(compare_logical_immediate_and_branch); /*208*/ >+DEF_INST(compare_logical_immediate_and_branch_long); /*208*/ >+DEF_INST(compare_logical_immediate_and_branch_relative); /*208*/ >+DEF_INST(compare_logical_immediate_and_branch_relative_long); /*208*/ >+DEF_INST(compare_logical_immediate_and_trap_fullword); /*208*/ >+DEF_INST(compare_logical_immediate_and_trap_long); /*208*/ >+DEF_INST(compare_logical_immediate_fullword_storage); /*208*/ >+DEF_INST(compare_logical_immediate_halfword_storage); /*208*/ >+DEF_INST(compare_logical_immediate_long_storage); /*208*/ >+DEF_INST(compare_logical_relative_long); /*208*/ >+DEF_INST(compare_logical_relative_long_halfword); /*208*/ >+DEF_INST(compare_logical_relative_long_long); /*208*/ >+DEF_INST(compare_logical_relative_long_long_fullword); /*208*/ >+DEF_INST(compare_logical_relative_long_long_halfword); /*208*/ >+DEF_INST(compare_relative_long); /*208*/ >+DEF_INST(compare_relative_long_long); /*208*/ >+DEF_INST(compare_relative_long_long_fullword); /*208*/ >+DEF_INST(extract_cache_attribute); /*208*/ >+DEF_INST(load_address_extended_y); /*208*/ >+DEF_INST(load_and_test_long_fullword); /*208*/ >+DEF_INST(load_halfword_relative_long); /*208*/ >+DEF_INST(load_halfword_relative_long_long); /*208*/ >+DEF_INST(load_logical_halfword_relative_long); /*208*/ >+DEF_INST(load_logical_halfword_relative_long_long); /*208*/ >+DEF_INST(load_logical_relative_long_long_fullword); /*208*/ >+DEF_INST(load_relative_long); /*208*/ >+DEF_INST(load_relative_long_long); /*208*/ >+DEF_INST(load_relative_long_long_fullword); /*208*/ >+DEF_INST(move_fullword_from_halfword_immediate); /*208*/ >+DEF_INST(move_halfword_from_halfword_immediate); /*208*/ >+DEF_INST(move_long_from_halfword_immediate); /*208*/ >+DEF_INST(multiply_halfword_y); /*208*/ >+DEF_INST(multiply_single_immediate_fullword); /*208*/ >+DEF_INST(multiply_single_immediate_long_fullword); /*208*/ >+DEF_INST(multiply_y); /*208*/ >+DEF_INST(prefetch_data); /*208*/ >+DEF_INST(prefetch_data_relative_long); /*208*/ >+DEF_INST(rotate_then_and_selected_bits_long_reg); /*208*/ >+DEF_INST(rotate_then_exclusive_or_selected_bits_long_reg); /*208*/ >+DEF_INST(rotate_then_insert_selected_bits_long_reg); /*208*/ >+DEF_INST(rotate_then_or_selected_bits_long_reg); /*208*/ >+DEF_INST(store_halfword_relative_long); /*208*/ >+DEF_INST(store_relative_long); /*208*/ >+DEF_INST(store_relative_long_long); /*208*/ >+ >+ > /* Instructions in io.c */ > DEF_INST(clear_subchannel); > DEF_INST(halt_subchannel); >@@ -3233,7 +3544,9 @@ DEF_INST(extract_stacked_registers_long) > DEF_INST(extract_psw); > DEF_INST(extract_and_set_extended_authority); > DEF_INST(load_address_relative_long); >+DEF_INST(perform_frame_management_function); /*208*/ > DEF_INST(perform_timing_facility_function); /*@Z9*/ >+DEF_INST(perform_topology_function); /*208*/ > DEF_INST(store_facility_list); > DEF_INST(store_facility_list_extended); /*@Z9*/ > DEF_INST(load_long_halfword_immediate); >@@ -3441,7 +3754,6 @@ DEF_INST(load_logical_halfword); > DEF_INST(load_logical_halfword_register); /*@Z9*/ > DEF_INST(load_logical_long_halfword_register); /*@Z9*/ > DEF_INST(find_leftmost_one_long_register); /*@Z9*/ >-DEF_INST(move_with_optional_specifications); > DEF_INST(extract_cpu_time); > > >diff -Naupr hercules-3.05/panel.c hercules-20070717/panel.c >--- hercules-3.05/panel.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/panel.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* PANEL.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Control Panel Commands */ > >-// $Id: panel.c,v 1.211 2007/06/23 00:04:15 ivan Exp $ >+// $Id: panel.c,v 1.222 2008/07/12 01:18:07 fish Exp $ > > /* Modified for New Panel Display =NP= */ > /*-------------------------------------------------------------------*/ >@@ -28,6 +28,36 @@ > /*-------------------------------------------------------------------*/ > > // $Log: panel.c,v $ >+// Revision 1.222 2008/07/12 01:18:07 fish >+// . >+// >+// Revision 1.221 2008/07/12 01:17:40 fish >+// no message >+// >+// Revision 1.220 2008/07/12 01:03:44 fish >+// no message >+// >+// Revision 1.219 2008/07/10 18:38:10 fish >+// no message >+// >+// Revision 1.218 2008/07/10 18:34:55 fish >+// Simplifed redesign of panel scrolling logic to support: >+// 1) Ctrl+up, Ctrl+down = scroll one line up/down, and >+// 2) Ctrl+home, Ctrl+end = top/bottom. >+// >+// Revision 1.217 2008/07/09 17:35:22 fish >+// Revert previous changes until I can resolve >+// some remaining issues I forgot about. Sorry. >+// >+// Revision 1.214 2007/12/29 14:40:51 fish >+// fix copyregs function to fallback to using dummyregs whenever regs->hostregs happens to be NULL >+// >+// Revision 1.213 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.212 2007/09/05 00:24:18 gsmith >+// Use integer arithmetic calculating cpupct >+// > // Revision 1.211 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -115,7 +145,7 @@ static int NPcpunum_valid, > > /* Current CPU states */ > static U16 NPcpunum; >-static double NPcpupct; >+static int NPcpupct; > static int NPpswmode; > static int NPpswzhost; > static QWORD NPpsw; >@@ -133,7 +163,7 @@ static U32 NPsios; > static U64 NPinstcount; > #endif > static int NPcpugraph; >-static double NPcpugraphpct[MAX_CPU_ENGINES]; >+static int NPcpugraphpct[MAX_CPU_ENGINES]; > > /* Current device states */ > #define NP_MAX_DEVICES (PANEL_MAX_ROWS - 3) >@@ -180,7 +210,7 @@ static char *NPhelp[] = { > > #define MSG_SIZE PANEL_MAX_COLS /* Size of one message */ > #define MAX_MSGS 2048 /* Number of slots in buffer */ >-#define BUF_SIZE (MAX_MSGS*MSG_SIZE) /* Total size of buffer */ >+//efine MAX_MSGS 300 /* (for testing scrolling) */ > #define NUM_LINES (cons_rows - 2) /* Number of scrolling lines */ > #define CMD_COLS (cons_cols - (CMD_PREFIX_LEN + 1)); > #define CMD_SIZE 256 /* cmdline buffer size */ >@@ -236,12 +266,19 @@ static FILE *confp = NULL; > > /////////////////////////////////////////////////////////////////////// > >-static int firstmsgn = 0; /* Number of first message to >- be displayed relative to >- oldest message in buffer */ >-static BYTE *msgbuf; /* Circular message buffer */ >-static int msgslot = 0; /* Next available buffer slot*/ >-static int nummsgs = 0; /* Number of msgs in buffer */ >+typedef struct _PANMSG >+{ >+ struct _PANMSG* next; >+ struct _PANMSG* prev; >+ int msgnum; >+ char msg[MSG_SIZE]; >+} >+PANMSG; >+ >+static PANMSG* msgbuf; /* Circular message buffer */ >+static PANMSG* topmsg; /* message at top of screen */ >+static PANMSG* curmsg; /* newest message */ >+static int wrapped = 0; /* wrapped-around flag */ > > static char *lmsbuf = NULL; > static int lmsndx = 0; >@@ -256,6 +293,77 @@ static REGS copyregs, copysieregs; > /* Screen manipulation primitives */ > /*-------------------------------------------------------------------*/ > >+static PANMSG* oldest_msg() >+{ >+ return (wrapped) ? curmsg->next : msgbuf; >+} >+ >+static PANMSG* newest_msg() >+{ >+ return curmsg; >+} >+ >+static int lines_scrolled() >+{ >+ /* return #of lines 'up' from current line that we're scrolled . */ >+ if (topmsg->msgnum <= curmsg->msgnum) >+ return curmsg->msgnum - topmsg->msgnum; >+ return MAX_MSGS - (topmsg->msgnum - curmsg->msgnum); >+} >+ >+static int visible_lines() >+{ >+ return (lines_scrolled() + 1); >+} >+ >+static int is_currline_visible() >+{ >+ return (visible_lines() <= NUM_LINES); >+} >+ >+static int lines_remaining() >+{ >+ return (NUM_LINES - visible_lines()); >+} >+ >+static void scroll_up_lines( int numlines ) >+{ >+ int i; for (i=0; i < numlines && topmsg != oldest_msg(); topmsg = topmsg->prev, i++); >+} >+ >+static void scroll_down_lines( int numlines ) >+{ >+ int i; for (i=0; i < numlines && topmsg != newest_msg(); topmsg = topmsg->next, i++); >+} >+ >+static void page_up () { scroll_up_lines ( NUM_LINES - 1 ); } >+static void page_down () { scroll_down_lines( NUM_LINES - 1 ); } >+static void full_page_up () { scroll_up_lines ( NUM_LINES - 0 ); } >+static void full_page_down () { scroll_down_lines( NUM_LINES - 0 ); } >+ >+static void scroll_to_top_line () >+{ >+ topmsg = oldest_msg(); >+} >+ >+static void scroll_to_bottom_line () >+{ >+ topmsg = newest_msg(); >+} >+ >+static void scroll_to_bottom_screen () >+{ >+ scroll_to_bottom_line(); >+ page_up(); >+} >+ >+static void do_panel_command( void* cmdline ) >+{ >+ if (!is_currline_visible()) >+ scroll_to_bottom_screen(); >+ panel_command( cmdline ); >+} >+ > static void clr_screen () > { > clear_screen (confp); >@@ -645,7 +753,7 @@ void NP_update(REGS *regs) > { > set_color (COLOR_WHITE, COLOR_BLUE); > set_pos (1, 22); >- sprintf(buf, "%3d",(int)(100.0 * regs->cpupct)); >+ sprintf(buf, "%3d", regs->cpupct); > draw_text (buf); > NPcpupct_valid = 1; > NPcpupct = regs->cpupct; >@@ -964,11 +1072,7 @@ void NP_update(REGS *regs) > NPsios_valid = 1; > } > #else >- instcount = >-#if defined(_FEATURE_SIE) >- SIE_MODE(regs) ? (unsigned)regs->hostregs->instcount : >-#endif /*defined(_FEATURE_SIE)*/ >- (unsigned)regs->instcount; >+ instcount = INSTCOUNT(regs); > if (!NPmips_valid || NPinstcount != instcount) > set_color (COLOR_LIGHT_YELLOW, COLOR_BLACK); > set_pos (19, 1); >@@ -1008,8 +1112,8 @@ void NP_update(REGS *regs) > } > else if (!NPcpugraph_valid || NPcpugraphpct[i] != sysblk.regs[i]->cpupct) > { >- n = 34 * sysblk.regs[i]->cpupct; >- if (n == 0 && sysblk.regs[i]->cpupct > 0.005) >+ n = (34 * sysblk.regs[i]->cpupct) / 100; >+ if (n == 0 && sysblk.regs[i]->cpupct > 0) > n = 1; > else if (n > 34) > n = 34; >@@ -1212,6 +1316,13 @@ REGS *copy_regs(int cpu) > } > > memcpy (©regs, regs, sysblk.regs_copy_len); >+ >+ if (copyregs.hostregs == NULL) >+ { >+ release_lock(&sysblk.cpulock[cpu]); >+ return &sysblk.dummyregs; >+ } >+ > #if defined(_FEATURE_SIE) > if (regs->sie_active) > { >@@ -1251,7 +1362,7 @@ void panel_display (void) > fd_set readset; /* Select file descriptors */ > struct timeval tv; /* Select timeout structure */ > #endif >-int i, n; /* Array subscripts */ >+int i; /* Array subscripts */ > int len; /* Length */ > REGS *regs; /* -> CPU register context */ > QWORD curpsw; /* Current PSW */ >@@ -1259,7 +1370,7 @@ QWORD prvpsw; > BYTE prvstate = 0xFF; /* Previous stopped state */ > U64 prvicount = 0; /* Previous instruction count*/ > U64 prvtcount = 0; /* Previous total count */ >-double prvcpupct = 0.0; /* Previous cpu percentage */ >+int prvcpupct = 0; /* Previous cpu percentage */ > #if defined(OPTION_SHARED_DEVICES) > U32 prvscount = 0; /* Previous shrdcount */ > #endif >@@ -1309,7 +1420,7 @@ char buf[1024]; > } > > /* Obtain storage for the circular message buffer */ >- msgbuf = malloc (BUF_SIZE); >+ msgbuf = malloc (MAX_MSGS * sizeof(PANMSG)); > if (msgbuf == NULL) > { > fprintf (stderr, >@@ -1318,6 +1429,23 @@ char buf[1024]; > return; > } > >+ /* Initialize circular message buffer */ >+ for (curmsg = msgbuf, i=0; i < MAX_MSGS; curmsg++, i++) >+ { >+ curmsg->next = curmsg + 1; >+ curmsg->prev = curmsg - 1; >+ curmsg->msgnum = i; >+ memset(curmsg->msg,SPACE,MSG_SIZE); >+ } >+ >+ /* Complete the circle */ >+ msgbuf->prev = msgbuf + MAX_MSGS - 1; >+ msgbuf->prev->next = msgbuf; >+ >+ /* Indicate "first-time" state */ >+ curmsg = topmsg = NULL; >+ wrapped = 0; >+ > /* Set screen output stream to NON-buffered */ > setvbuf (confp, NULL, _IONBF, 0); > >@@ -1435,11 +1563,11 @@ char buf[1024]; > break; > case 'S': /* START */ > case 's': >- panel_command("startall"); >+ do_panel_command("startall"); > break; > case 'P': /* STOP */ > case 'p': >- panel_command("stopall"); >+ do_panel_command("stopall"); > break; > case 'O': /* Store */ > case 'o': >@@ -1523,7 +1651,7 @@ char buf[1024]; > break; > } > sprintf (cmdline, "ipl %4.4x", NPdevnum[i]); >- panel_command(cmdline); >+ do_panel_command(cmdline); > strcpy(NPprompt2, ""); > redraw_status = 1; > break; >@@ -1542,7 +1670,7 @@ char buf[1024]; > break; > } > sprintf (cmdline, "i %4.4x", NPdevnum[i]); >- panel_command(cmdline); >+ do_panel_command(cmdline); > strcpy(NPprompt2, ""); > redraw_status = 1; > break; >@@ -1582,9 +1710,7 @@ char buf[1024]; > break; > case 4: /* POWER - 2nd part */ > if (NPdevice == 'y' || NPdevice == 'Y') >- { >- panel_command("quit"); >- } >+ do_panel_command("quit"); > strcpy(NPprompt1, "Powering down"); > redraw_status = 1; > break; >@@ -1597,9 +1723,7 @@ char buf[1024]; > break; > case 5: /* Restart - part 2 */ > if (NPdevice == 'y' || NPdevice == 'Y') >- { >- panel_command("restart"); >- } >+ do_panel_command("restart"); > strcpy(NPprompt1, ""); > redraw_status = 1; > break; >@@ -1612,9 +1736,7 @@ char buf[1024]; > break; > case 6: /* External - part 2 */ > if (NPdevice == 'y' || NPdevice == 'Y') >- { >- panel_command("ext"); >- } >+ do_panel_command("ext"); > strcpy(NPprompt1, ""); > redraw_status = 1; > break; >@@ -1633,35 +1755,47 @@ char buf[1024]; > /* Process characters in the keyboard buffer */ > for (i = 0; i < kblen; ) > { >- /* Test for home command */ >+ /* Test for home command... */ > if (strcmp(kbbuf+i, KBD_HOME) == 0) { > if (cmdlen) { > cmdoff = 0; > ADJ_CMDCOL(); > redraw_cmd = 1; > } else { >- if (firstmsgn == 0) break; >- firstmsgn = 0; >+ scroll_to_top_line(); > redraw_msgs = 1; > } > break; > } > >- /* Test for end command */ >+ /* Test for end command... */ > if (strcmp(kbbuf+i, KBD_END) == 0) { > if (cmdlen) { > cmdoff = cmdlen; > ADJ_CMDCOL(); > redraw_cmd = 1; > } else { >- if (firstmsgn + NUM_LINES >= nummsgs) break; >- firstmsgn = nummsgs - NUM_LINES; >+ scroll_to_bottom_screen(); > redraw_msgs = 1; > } > break; > } > >- /* Test for line up command */ >+ /* Test for ctrl+home scroll top command */ >+ if (strcmp(kbbuf+i, KBD_CTRL_HOME) == 0) { >+ scroll_to_top_line(); >+ redraw_msgs = 1; >+ break; >+ } >+ >+ /* Test for ctrl+end scroll bottom command */ >+ if (strcmp(kbbuf+i, KBD_CTRL_END) == 0) { >+ scroll_to_bottom_line(); >+ redraw_msgs = 1; >+ break; >+ } >+ >+ /* Test for up arrow prev history command */ > if (strcmp(kbbuf+i, KBD_UP_ARROW) == 0 || > strcmp(kbbuf+i, xKBD_UP_ARROW) == 0) { > if (history_prev() != -1) { >@@ -1676,7 +1810,7 @@ char buf[1024]; > break; > } > >- /* Test for line down command */ >+ /* Test for down arrow next history command */ > if (strcmp(kbbuf+i, KBD_DOWN_ARROW) == 0 || > strcmp(kbbuf+i, xKBD_DOWN_ARROW) == 0) { > if (history_next() != -1) { >@@ -1691,21 +1825,30 @@ char buf[1024]; > break; > } > >- /* Test for page up command */ >+ /* Test for page scroll up command */ > if (strcmp(kbbuf+i, KBD_PAGE_UP) == 0) { >- if (firstmsgn == 0) break; >- firstmsgn -= NUM_LINES; >- if (firstmsgn < 0) firstmsgn = 0; >+ page_up(); > redraw_msgs = 1; > break; > } > >- /* Test for page down command */ >+ /* Test for page scroll down command */ > if (strcmp(kbbuf+i, KBD_PAGE_DOWN) == 0) { >- if (firstmsgn + NUM_LINES >= nummsgs) break; >- firstmsgn += NUM_LINES; >- if (firstmsgn > nummsgs - NUM_LINES) >- firstmsgn = nummsgs - NUM_LINES; >+ page_down(); >+ redraw_msgs = 1; >+ break; >+ } >+ >+ /* Test line scroll up command */ >+ if (strcmp(kbbuf+i, KBD_CTRL_UP_ARROW) == 0) { >+ scroll_up_lines(1); >+ redraw_msgs = 1; >+ break; >+ } >+ >+ /* Test line scroll down command */ >+ if (strcmp(kbbuf+i, KBD_CTRL_DOWN_ARROW) == 0) { >+ scroll_down_lines(1); > redraw_msgs = 1; > break; > } >@@ -1806,6 +1949,8 @@ char buf[1024]; > /* =NP= create_thread replaced with: */ > if (NPDup == 0) { > if ('#' == cmdline[0] || '*' == cmdline[0]) { >+ if (!is_currline_visible()) >+ scroll_to_bottom_screen(); > logmsg("%s\n", cmdline); > for (;cmdlen >=0; cmdlen--) > cmdline[cmdlen] = '\0'; >@@ -1814,7 +1959,7 @@ char buf[1024]; > ADJ_CMDCOL(); > } else { > history_requested = 0; >- panel_command(cmdline); >+ do_panel_command(cmdline); > redraw_msgs = 1; > redraw_cmd = 1; > redraw_status = 1; >@@ -1855,7 +2000,7 @@ char buf[1024]; > strcpy(NPdevnam[NPasgn], ""); > sprintf (NPentered, "devinit %4.4x %s", > NPdevnum[NPasgn], cmdline); >- panel_command(NPentered); >+ do_panel_command(NPentered); > strcpy(NPprompt2, ""); > break; > default: >@@ -2005,21 +2150,29 @@ FinishShutdown: > /* If we have a message to be displayed (or a complete > part of one), then copy it to the circular buffer. */ > if (!readoff || readoff >= MSG_SIZE) { >- /* Set the display update indicator */ >- redraw_msgs = 1; > >- memcpy(msgbuf+(msgslot*MSG_SIZE),readbuf,MSG_SIZE); >+ /* First-time here? */ >+ if (curmsg == NULL) { >+ curmsg = topmsg = msgbuf; >+ } else { >+ /* Perform autoscroll if needed */ >+ if (is_currline_visible()) { >+ if (lines_remaining() < 1) >+ topmsg = topmsg->next; >+ } >+ /* Go on to next available msg buffer */ >+ curmsg = curmsg->next; > >- /* Update message count and next available slot */ >- if (nummsgs < MAX_MSGS) >- msgslot = ++nummsgs; >- else >- msgslot++; >- if (msgslot >= MAX_MSGS) msgslot = 0; >+ /* Updated wrapped indicator */ >+ if (curmsg == msgbuf) >+ wrapped = 1; >+ } >+ >+ /* Copy message into next available PANMSG slot */ >+ memcpy( curmsg->msg, readbuf, MSG_SIZE ); > >- /* Calculate the first line to display */ >- firstmsgn = nummsgs - NUM_LINES; >- if (firstmsgn < 0) firstmsgn = 0; >+ /* Set the display update indicator */ >+ redraw_msgs = 1; > } > > } // end while ( lmsndx < lmscnt && lmsndx < lmsmax ) >@@ -2054,26 +2207,18 @@ FinishShutdown: > or if the instruction counter has changed, or if > the CPU stopped state has changed */ > if (memcmp(curpsw, prvpsw, sizeof(curpsw)) != 0 >- || ( >-#if defined(_FEATURE_SIE) >- SIE_MODE(regs) ? regs->hostregs->instcount : >-#endif /*defined(_FEATURE_SIE)*/ >- regs->instcount) != prvicount >+ || prvicount != INSTCOUNT(regs) > || prvcpupct != regs->cpupct > #if defined(OPTION_SHARED_DEVICES) >- || sysblk.shrdcount != prvscount >+ || prvscount != sysblk.shrdcount > #endif >- || regs->cpustate != prvstate >+ || prvstate != regs->cpustate > || (NPDup && NPcpugraph && prvtcount != sysblk.instcount) > ) > { > redraw_status = 1; > memcpy (prvpsw, curpsw, sizeof(prvpsw)); >- prvicount = >-#if defined(_FEATURE_SIE) >- SIE_MODE(regs) ? regs->hostregs->instcount : >-#endif /*defined(_FEATURE_SIE)*/ >- regs->instcount; >+ prvicount = INSTCOUNT(regs); > prvcpupct = regs->cpupct; > prvstate = regs->cpustate; > #if defined(OPTION_SHARED_DEVICES) >@@ -2093,25 +2238,33 @@ FinishShutdown: > if (redraw_msgs && !sysblk.npquiet) > { > /* Display messages in scrolling area */ >- for (i=0; i < NUM_LINES && firstmsgn + i < nummsgs; i++) >+ PANMSG* p = topmsg; >+ for (i=0; i < NUM_LINES && (p != curmsg->next || p == topmsg); i++, p = p->next) >+ { >+ set_pos (i+1, 1); >+ set_color (COLOR_DEFAULT_FG, COLOR_DEFAULT_BG); >+ write_text (p->msg, MSG_SIZE); >+ } >+ >+ /* Pad remainder of screen with blank lines */ >+ for (; i < NUM_LINES; i++) > { >- n = (nummsgs < MAX_MSGS) ? 0 : msgslot; >- n += firstmsgn + i; >- if (n >= MAX_MSGS) n -= MAX_MSGS; > set_pos (i+1, 1); > set_color (COLOR_DEFAULT_FG, COLOR_DEFAULT_BG); >- write_text ((char *)msgbuf + (n * MSG_SIZE), MSG_SIZE); >+ erase_to_eol( confp ); > } > > /* Display the scroll indicators */ >- if (firstmsgn > 0) >+ if (topmsg != oldest_msg()) > { >+ /* More messages precede top line */ > set_pos (1, cons_cols); > set_color (COLOR_DEFAULT_LIGHT, COLOR_DEFAULT_BG); > draw_text ("+" ); > } >- if (firstmsgn + i < nummsgs) >+ if (!is_currline_visible()) > { >+ /* More messages follow bottom line */ > set_pos (cons_rows-2, cons_cols); > set_color (COLOR_DEFAULT_LIGHT, COLOR_DEFAULT_BG); > draw_text ("V"); >@@ -2159,11 +2312,7 @@ FinishShutdown: > SIE_MODE(regs) ? 'S' : '.', > regs->arch_mode == ARCH_900 ? 'Z' : '.'); > buf[len++] = ' '; >- sprintf (ibuf, "instcount=%" I64_FMT "u", >-#if defined(_FEATURE_SIE) >- SIE_MODE(regs) ? (U64) regs->hostregs->instcount : >-#endif /*defined(_FEATURE_SIE)*/ >- (U64)regs->instcount); >+ sprintf (ibuf, "instcount=%" I64_FMT "u", INSTCOUNT(regs)); > if (len + (int)strlen(ibuf) < cons_cols) > len = cons_cols - strlen(ibuf); > strcpy (buf + len, ibuf); >@@ -2213,7 +2362,8 @@ FinishShutdown: > static > void panel_cleanup(void *unused) > { >-int i,n; >+int i; >+PANMSG* p; > > UNREFERENCED(unused); > >@@ -2222,29 +2372,24 @@ int i,n; > set_screen_color( stderr, COLOR_DEFAULT_FG, COLOR_DEFAULT_BG ); > clear_screen( stderr ); > >- /* Reset the first line to be displayed (i.e. >- "scroll down to the most current message") */ >- firstmsgn = nummsgs - NUM_LINES; >- if (firstmsgn < 0) firstmsgn = 0; >+ /* Scroll to last full screen's worth of messages */ >+ scroll_to_bottom_screen(); > > /* Display messages in scrolling area */ >- for (i=0; i < NUM_LINES && firstmsgn + i < nummsgs; i++) >+ for (i=0, p = topmsg; i < NUM_LINES && p != curmsg->next; i++, p = p->next) > { >- n = (nummsgs < MAX_MSGS) ? 0 : msgslot; >- n += firstmsgn + i; >- if (n >= MAX_MSGS) n -= MAX_MSGS; >- set_screen_pos( stderr, i+1, 1 ); >- set_screen_color( stderr, COLOR_DEFAULT_FG, COLOR_DEFAULT_BG ); >- fwrite (msgbuf + (n * MSG_SIZE), MSG_SIZE, 1, stderr); >+ set_pos (i+1, 1); >+ set_color (COLOR_DEFAULT_FG, COLOR_DEFAULT_BG); >+ write_text (p->msg, MSG_SIZE); > } > > /* Restore the terminal mode */ > set_or_reset_console_mode( keybfd, 0 ); > >- if (nummsgs) >- fwrite("\n",1,1,stderr); >+ /* Position to next line */ >+ fwrite("\n",1,1,stderr); > >- /* Read any remaining msgs from the system log */ >+ /* Read and display any msgs still remaining in the system log */ > while((lmscnt = log_read(&lmsbuf, &lmsnum, LOG_NOBLOCK))) > fwrite(lmsbuf,lmscnt,1,stderr); > >diff -Naupr hercules-3.05/plo.c hercules-20070717/plo.c >--- hercules-3.05/plo.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/plo.c 2008-09-03 13:07:48.000000000 +0200 >@@ -4,9 +4,12 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: plo.c,v 1.23 2007/06/23 00:04:15 ivan Exp $ >+// $Id: plo.c,v 1.24 2008/03/05 23:15:13 ptl00 Exp $ > // > // $Log: plo.c,v $ >+// Revision 1.24 2008/03/05 23:15:13 ptl00 >+// Fix fc=3 fc=19 and qword chks >+// > // Revision 1.23 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -167,7 +170,7 @@ VADR op4addr; > UNREFERENCED(r1); > > DW_CHECK(effective_addr4, regs); >- DW_CHECK(effective_addr2, regs); >+ QW_CHECK(effective_addr2, regs); > > /* load second operand */ > ARCH_DEP(vfetchc) ( op2, 16-1, effective_addr2, b2, regs ); >@@ -175,7 +178,7 @@ VADR op4addr; > /* load 1st op. compare value */ > ARCH_DEP(vfetchc) ( op1c, 16-1, effective_addr4 + 0, b4, regs ); > >- if(!memcmp(op1c,op2,16)) >+ if(memcmp(op1c,op2,16) == 0) > { > /* When in ar mode, ar3 is used to access the > operand. The alet is fetched from the pl */ >@@ -191,7 +194,7 @@ VADR op4addr; > /* Load address of operand 4 */ > op4addr = ARCH_DEP(wfetch8)(effective_addr4 + 72, b4, regs); > op4addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op4addr, regs); >+ QW_CHECK(op4addr, regs); > > /* Load operand 4, using ar3 when in ar mode */ > ARCH_DEP(vfetchc) ( op4, 16-1, op4addr, r3, regs ); >@@ -204,7 +207,7 @@ VADR op4addr; > else > { > /* replace the first op compare value with 2nd op */ >- ARCH_DEP(vstorec) ( op4, 16-1, effective_addr4 + 0, b4, regs ); >+ ARCH_DEP(vstorec) ( op2, 16-1, effective_addr4 + 0, b4, regs ); > > return 1; > } >@@ -333,7 +336,7 @@ BYTE op1c[16], > UNREFERENCED(r3); > > DW_CHECK(effective_addr4, regs); >- DW_CHECK(effective_addr2, regs); >+ QW_CHECK(effective_addr2, regs); > > /* Load first op compare value */ > ARCH_DEP(vfetchc) ( op1c, 16-1, effective_addr4 + 0, b4, regs ); >@@ -341,7 +344,7 @@ BYTE op1c[16], > /* Load 2nd operand */ > ARCH_DEP(vfetchc) ( op2, 16-1, effective_addr2, b2, regs ); > >- if(!memcmp(op1c,op2,16)) >+ if(memcmp(op1c,op2,16) == 0) > { > /* Load 1st op replacement value */ > ARCH_DEP(wfetchc) ( op1r, 16-1, effective_addr4 + 16, b4, regs ); >@@ -562,7 +565,7 @@ VADR op4addr; > > UNREFERENCED(r1); > >- DW_CHECK(effective_addr2, regs); >+ QW_CHECK(effective_addr2, regs); > DW_CHECK(effective_addr4, regs); > > /* load 1st op compare value from the pl */ >@@ -571,7 +574,7 @@ VADR op4addr; > /* load 2nd operand */ > ARCH_DEP(vfetchc) ( op2, 16-1, effective_addr2, b2, regs ); > >- if(memcmp(op1c,op2,16)) >+ if(memcmp(op1c,op2,16) != 0) > { > /* replace the 1st op compare value with 2nd op */ > ARCH_DEP(vstorec) ( op2, 16-1, effective_addr4 + 0, b4, regs ); >@@ -597,12 +600,12 @@ VADR op4addr; > /* Load address of operand 4 */ > op4addr = ARCH_DEP(wfetch8)(effective_addr4 + 72, b4, regs); > op4addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op4addr, regs); >+ QW_CHECK(op4addr, regs); > > /* Load operand 4, using ar3 when in ar mode */ > ARCH_DEP(vfetchc) ( op4, 16-1, op4addr, r3, regs ); > >- if(memcmp(op3c,op4,16)) >+ if(memcmp(op3c,op4,16) != 0) > { > ARCH_DEP(wstorec) ( op4, 16-1, effective_addr4 + 32, b4, regs ); > >@@ -780,13 +783,13 @@ VADR op4addr; > > UNREFERENCED(r1); > >- DW_CHECK(effective_addr2, regs); >+ QW_CHECK(effective_addr2, regs); > DW_CHECK(effective_addr4, regs); > > ARCH_DEP(vfetchc) ( op1c, 16-1, effective_addr4 + 0, b4, regs ); > ARCH_DEP(vfetchc) ( op2, 16-1, effective_addr2, b2, regs ); > >- if(!memcmp(op1c,op2,16)) >+ if(memcmp(op1c,op2,16) == 0) > { > ARCH_DEP(wfetchc) ( op1r, 16-1, effective_addr4 + 16, b4, regs ); > ARCH_DEP(wfetchc) ( op3, 16-1, effective_addr4 + 48, b4, regs ); >@@ -809,7 +812,7 @@ VADR op4addr; > /* Load address of operand 4 */ > op4addr = ARCH_DEP(wfetch8)(effective_addr4 + 72, b4, regs); > op4addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op4addr, regs); >+ QW_CHECK(op4addr, regs); > > ARCH_DEP(vstorec)(op3, 16-1, op4addr, r3, regs); > ARCH_DEP(vstorec)(op1r, 16-1, effective_addr2, b2, regs); >@@ -1110,15 +1113,15 @@ VADR op4addr, > > UNREFERENCED(r1); > >- DW_CHECK(effective_addr2, regs); >+ QW_CHECK(effective_addr2, regs); > DW_CHECK(effective_addr4, regs); > > ARCH_DEP(vfetchc)(op1c, 16-1, effective_addr4 + 0, b4, regs); > ARCH_DEP(vfetchc)(op2, 16-1, effective_addr2, b2, regs); > >- if(!memcmp(op1c,op2,16)) >+ if(memcmp(op1c,op2,16) == 0) > { >- ARCH_DEP(wfetchc)(op1c, 16-1, effective_addr4 + 16, b4, regs); >+ ARCH_DEP(wfetchc)(op1r, 16-1, effective_addr4 + 16, b4, regs); > ARCH_DEP(wfetchc)(op3, 16-1, effective_addr4 + 48, b4, regs); > ARCH_DEP(wfetchc)(op5, 16-1, effective_addr4 + 80, b4, regs); > >@@ -1141,12 +1144,12 @@ VADR op4addr, > /* Load address of operand 4 */ > op4addr = ARCH_DEP(wfetch8)(effective_addr4 + 72, b4, regs); > op4addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op4addr, regs); >+ QW_CHECK(op4addr, regs); > > /* Load address of operand 6 */ > op6addr = ARCH_DEP(wfetch8)(effective_addr4 + 104, b4, regs); > op6addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op6addr, regs); >+ QW_CHECK(op6addr, regs); > > /* Verify access to 6th operand */ > ARCH_DEP(validate_operand) (op6addr, r3, 16-1,ACCTYPE_WRITE_SKP, regs); >@@ -1552,13 +1555,13 @@ VADR op4addr, > > UNREFERENCED(r1); > >- DW_CHECK(effective_addr2, regs); >+ QW_CHECK(effective_addr2, regs); > DW_CHECK(effective_addr4, regs); > > ARCH_DEP(vfetchc)(op1c, 16-1, effective_addr4 + 0, b4, regs); > ARCH_DEP(vfetchc)(op2, 16-1, effective_addr2, b2, regs); > >- if(!memcmp(op1c,op2,16)) >+ if(memcmp(op1c,op2,16) == 0) > { > ARCH_DEP(wfetchc)(op1r, 16-1, effective_addr4 + 16, b4, regs); > ARCH_DEP(wfetchc)(op3, 16-1, effective_addr4 + 48, b4, regs); >@@ -1585,17 +1588,17 @@ VADR op4addr, > /* Load address of operand 4 */ > op4addr = ARCH_DEP(wfetch8)(effective_addr4 + 72, b4, regs); > op4addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op4addr, regs); >+ QW_CHECK(op4addr, regs); > > /* Load address of operand 6 */ > op6addr = ARCH_DEP(wfetch8)(effective_addr4 + 104, b4, regs); > op6addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op6addr, regs); >+ QW_CHECK(op6addr, regs); > > /* Load address of operand 8 */ > op8addr = ARCH_DEP(wfetch8)(effective_addr4 + 136, b4, regs); > op8addr &= ADDRESS_MAXWRAP(regs); >- DW_CHECK(op8addr, regs); >+ QW_CHECK(op8addr, regs); > > /* Verify access to 8th operand */ > ARCH_DEP(validate_operand) (op8addr, r3, 16-1,ACCTYPE_WRITE_SKP, regs); >diff -Naupr hercules-3.05/po/buildpot.sh hercules-20070717/po/buildpot.sh >--- hercules-3.05/po/buildpot.sh 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/po/buildpot.sh 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,8 @@ >+#!/bin/sh >+# >+# This script invokes the preprocessor when calling xgettext, >+# such that all messages are interpreted correctly. >+for i in `cat POTFILES.in` >+do >+ (cd ..; gcc -I. -E -DHAVE_CONFIG_H $i) >+done | xgettext -C -s -o hercules.pot - >diff -Naupr hercules-3.05/po/.cvsignore hercules-20070717/po/.cvsignore >--- hercules-3.05/po/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/po/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,7 @@ >+Makefile.in >+Makefile >+POTFILES >+nl.gmo >+de.gmo >+remove-potcdate.sed >+stamp-po >diff -Naupr hercules-3.05/po/de.gmo hercules-20070717/po/de.gmo >--- hercules-3.05/po/de.gmo 2007-06-24 06:27:18.000000000 +0200 >+++ hercules-20070717/po/de.gmo 1970-01-01 01:00:00.000000000 +0100 >@@ -1,22 +0,0 @@ >-ÞT¸$¹ Þ"ÿ" =K5_#¹ Ö$÷ * numblks %d, device size %d >- (client %s (%s) connected) >- (no one currently connected) >-%sInstruction fetch error >-%sVersion %s >-Build information: >-Project-Id-Version: hercules 2.16 >-Report-Msgid-Bugs-To: >-POT-Creation-Date: 2007-06-23 14:23-0500 >-PO-Revision-Date: 2002-05-10 16:16+0200 >-Last-Translator: Jan Jaeger <jj@septa.nl> >-Language-Team: none <test@li.org> >-MIME-Version: 1.0 >-Content-Type: text/plain; charset=ISO-8859-1 >-Content-Transfer-Encoding: 8bit >- Blöcke: %d, Gesamtgröße %d >- (verbunden mit %s (%s)) >- (zur Zeit keine Verbindung) >-%sFehler beim Lesen der Instruktion >-%sVersion %s >-Versionsdaten >- >\ No newline at end of file >diff -Naupr hercules-3.05/po/Makevars.template hercules-20070717/po/Makevars.template >--- hercules-3.05/po/Makevars.template 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/po/Makevars.template 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+# Makefile variables for PO directory in any package using GNU gettext. >+ >+# Usually the message domain is the same as the package name. >+DOMAIN = $(PACKAGE) >+ >+# These two variables depend on the location of this directory. >+subdir = po >+top_builddir = .. >+ >+# These options get passed to xgettext. >+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ >+ >+# This is the copyright holder that gets inserted into the header of the >+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding >+# package. (Note that the msgstr strings, extracted from the package's >+# sources, belong to the copyright holder of the package.) Translators are >+# expected to transfer the copyright for their translations to this person >+# or entity, or to disclaim their copyright. The empty string stands for >+# the public domain; in this case the translators are expected to disclaim >+# their copyright. >+COPYRIGHT_HOLDER = Free Software Foundation, Inc. >+ >+# This is the email address or URL to which the translators shall report >+# bugs in the untranslated strings: >+# - Strings which are not entire sentences, see the maintainer guidelines >+# in the GNU gettext documentation, section 'Preparing Strings'. >+# - Strings which use unclear terms or require additional context to be >+# understood. >+# - Strings which make invalid assumptions about notation of date, time or >+# money. >+# - Pluralisation problems. >+# - Incorrect English spelling. >+# - Incorrect formatting. >+# It can be your email address, or a mailing list address where translators >+# can write to without being subscribed, or the URL of a web page through >+# which the translators can contact you. >+MSGID_BUGS_ADDRESS = >+ >+# This is the list of locale categories, beyond LC_MESSAGES, for which the >+# message catalogs shall be used. It is usually empty. >+EXTRA_LOCALE_CATEGORIES = >diff -Naupr hercules-3.05/po/nl.gmo hercules-20070717/po/nl.gmo >--- hercules-3.05/po/nl.gmo 2007-06-24 06:27:18.000000000 +0200 >+++ hercules-20070717/po/nl.gmo 1970-01-01 01:00:00.000000000 +0100 >@@ -1,24 +0,0 @@ >-Þ\È2É,ü/) Yg#.¦5Õ2/>0n¬ Ê.ë CPU%4.4X: Connected to channelset %4.4X >- CPU%4.4X: No channelset connected >- Last 'TXT' record had address: %3.3X >-%sVersion %s >-ERROR: Cannot open %s: %s >-HHCCA006T %4.4X:Select failed : %s >-HHCCA013E %4.4X:Incorrect %s specification %s >-Project-Id-Version: hercules 2.16 >-Report-Msgid-Bugs-To: >-POT-Creation-Date: 2007-06-23 14:23-0500 >-PO-Revision-Date: 2002-05-10 16:16+0200 >-Last-Translator: Jan Jaeger <jj@septa.nl> >-Language-Team: none <test@li.org> >-MIME-Version: 1.0 >-Content-Type: text/plain; charset=ISO-8859-1 >-Content-Transfer-Encoding: 8bit >- CPU%4.4X: Verbonden met kanaalset %4.4X >- CPU%4.4X: Geen kanaalset aangesloten >- Laatste 'TXT' record had adres: %3.3X >-%sVersie %s >-FOUT: Kan %s niet openen: %s >-HHCCA006T %4.4X:Select fout: %s >-HHCCA013E %4.4X:Incorrecte %s specifikatie %s >- >\ No newline at end of file >diff -Naupr hercules-3.05/po/stamp-po hercules-20070717/po/stamp-po >--- hercules-3.05/po/stamp-po 2007-06-24 06:27:18.000000000 +0200 >+++ hercules-20070717/po/stamp-po 1970-01-01 01:00:00.000000000 +0100 >@@ -1 +0,0 @@ >-timestamp >diff -Naupr hercules-3.05/printer.c hercules-20070717/printer.c >--- hercules-3.05/printer.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/printer.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* PRINTER.C (c) Copyright Roger Bowler, 1999-2007 */ > /* ESA/390 Line Printer Device Handler */ > >-// $Id: printer.c,v 1.45 2007/06/23 00:04:15 ivan Exp $ >+// $Id: printer.c,v 1.47 2007/11/29 16:30:42 jmaynard Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for emulated */ >@@ -9,6 +9,12 @@ > /*-------------------------------------------------------------------*/ > > // $Log: printer.c,v $ >+// Revision 1.47 2007/11/29 16:30:42 jmaynard >+// Allow ALLOW DATA CHECK to precede LOAD UCS AND FOLD on 1403 for TSS/370. >+// >+// Revision 1.46 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.45 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -334,7 +340,8 @@ int i; > static void printer_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- *class = "PRT"; >+ BEGIN_DEVICE_CLASS_QUERY( "PRT", dev, class, buflen, buffer ); >+ > snprintf (buffer, buflen, "%s%s%s", > dev->filename, > (dev->crlf ? " crlf" : ""), >@@ -734,7 +741,10 @@ BYTE c; > /* LOAD UCS BUFFER AND FOLD */ > /*---------------------------------------------------------------*/ > /* For 1403, command reject if not chained to UCS GATE */ >- if (dev->devtype == 0x1403 && prevcode != 0xEB) >+ /* Also allow ALLOW DATA CHECK to get TSS/370 working */ >+ /* -- JRM 11/28/2007 */ >+ if (dev->devtype == 0x1403 && >+ ((prevcode != 0xEB) && (prevcode != 0x7B))) > { > dev->sense[0] = SENSE_CR; > *unitstat = CSW_CE | CSW_DE | CSW_UC; >diff -Naupr hercules-3.05/qeth.c hercules-20070717/qeth.c >--- hercules-3.05/qeth.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/qeth.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* QETH.C (c) Copyright Jan Jaeger, 1999-2007 */ > /* OSA Express */ > >-// $Id: qeth.c,v 1.10 2007/06/23 00:04:15 ivan Exp $ >+// $Id: qeth.c,v 1.11 2007/11/21 22:54:14 fish Exp $ > > /* This module contains device handling functions for the */ > /* OSA Express emulated card */ >@@ -11,6 +11,9 @@ > /* 0A00-0A02 QETH <optional parameters> */ > > // $Log: qeth.c,v $ >+// Revision 1.11 2007/11/21 22:54:14 fish >+// Use new BEGIN_DEVICE_CLASS_QUERY macro >+// > // Revision 1.10 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -82,9 +85,7 @@ logmsg(D_("senseidnum=%d\n"),dev->numdev > static void qeth_query_device (DEVBLK *dev, char **class, > int buflen, char *buffer) > { >- UNREFERENCED(dev); >- >- *class = "QETH"; >+ BEGIN_DEVICE_CLASS_QUERY( "QETH", dev, class, buflen, buffer ); > > snprintf (buffer, buflen, "\n"); > >diff -Naupr hercules-3.05/README.MINGW hercules-20070717/README.MINGW >--- hercules-3.05/README.MINGW 2005-09-24 18:17:21.000000000 +0200 >+++ hercules-20070717/README.MINGW 2008-09-03 13:07:48.000000000 +0200 >@@ -324,7 +324,7 @@ OK sed requires 3.02, found 3.02 > Do you wish to set CVSROOT for this userid? (y, n, default y) > New CVS users are recommended to reply y to this prompt. > n >-Hercules CVSROOT=:pserver:anonymous@cvs.conmicro.cx:/usr/cvs/hercules >+Hercules CVSROOT=:pserver:anonymous@cvs.hercules-390.org:/usr/cvs/hercules > > > -------------------------------------------------------------- >diff -Naupr hercules-3.05/README.MSVC hercules-20070717/README.MSVC >--- hercules-3.05/README.MSVC 2006-11-27 02:07:23.000000000 +0100 >+++ hercules-20070717/README.MSVC 2008-09-03 13:07:48.000000000 +0200 >@@ -1,3 +1,20 @@ >+****************************************************************** >+****************************************************************** >+ >+ >+ NOTE! This file is OUT OF DATE >+ and should probably be deleted! >+ >+ >+ FOR MORE UP-TO-DATE INFORMATION, PLEASE REFER TO >+ http://www.softdevlabs.com/Hercules/hercules-msvc-build.html >+ OR >+ http://www.cbttape.org/~fish/hercules-msvc-build.html >+ >+ >+****************************************************************** >+****************************************************************** >+ > ---------------------------------------------------------------- > HOW TO BUILD HERCULES FOR WINDOWS WITH MICROSOFT VISUAL C > ---------------------------------------------------------------- >diff -Naupr hercules-3.05/README.SETUID hercules-20070717/README.SETUID >--- hercules-3.05/README.SETUID 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/README.SETUID 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,85 @@ >+hercifc and hercules as setuid root programs >+ >+Rationale : >+ >+Historically, hercifc is usually setuid root so that it can make changes >+to the tun and tap interfaces on the system. >+ >+There are also some reasons to have the hercules executable itself setuid >+root, for example, to allow the timer thread to run with real time priority. >+ >+This however leads to a number of security issues. hercifc is probably not >+hardened enough and besides any possible bug that may get introduced in it, >+there is also a possibility of bugs in the C library itself which may lead >+to possible privilege escalations. >+ >+Having hercules itself run setuid 0 is even more of a problem since it is >+now possible to load arbitrary code to support custom user made >+implementation of some features and/or I/O devices). >+ >+In order to mitigate this, hercules now makes use of the Posix draft 1003.1e >+capabilities in order to restrict the executables to just the necessary >+privileges. For hercules, this means the CAP_SYS_NICE capability, and for >+hercifc, this means CAP_NET_ADMIN capability. >+ >+This is still not an ideal situation since a setuid 0 hercules will allow >+anyone to modify dispatching/scheduling priority for process it owns >+beyond what is normally allowed for such a user. This is however less critical >+than having hercules run as a full blown superuser. >+ >+Note that this only applies if hercules is setuid root. If this is not the >+case, then hercules won't be able to set the timer thread priority (or any >+other thread priority for that matter) to anything lower than 0 and the user >+will not acquire any further privilege. >+ >+Having hercifc setuid root is pretty much mandatory if it is desired to >+do some networking in the guest. hercifc already restricts on what interface >+a controlling program may act. However, limiting its capabilities to just >+CAP_NET_ADMIN restricts any escalation exploit to just THAT privilege. >+ >+On systems that do not have the capabilities feature implemented (or lacking >+the necessary library) setting hercules setuid root is strongly discouraged >+on a multi user machine (where users have normal access but not access to >+superuser privilege). >+ >+On systems that DO have the capabilities feature implemented and enabled, >+and providing hercules has been built with the support enabled, setting >+hercules setuid root still allows normal users to potentially have the >+capacity to set their own processes to negative nice values. So this also >+should be taken into consideration. >+ >+Providing users have the authority to open a tun or tap device, having >+hercifc setuid root allows those users to create network interfaces with >+arbitrary network parameters. If this is a concern, those users should >+either not be allowed access to the tun/tap interface or hercifc should >+not be setuid root. Using capabilities with hercifc just guarantees that >+should an exploit exist in hercifc to execute arbitrary code, then the >+user will be limited to the CAP_NET_ADMIN privilege. >+ >+Building hercules with capabilities feature : >+ >+A new configure flag has been added : --[enable|disable]-capabilities >+This flag allows building hercules without capabilities features even on a >+system that would allow it. This may be necessary if the intended target may >+be missing the necessary implementation (pre 2.2 linux kernel) and/or library >+(libcap). >+ >+In order for the build to actually implement capabilities, the following files >+are necessary : >+ >+libcap.a in the libraries directory >+sys/capability.h in the includes directory >+sys/prctl.h in the includes directory (this one is usually std on >+ linux systems) >+ >+In order to run a version of hercules built for capabilities support, the >+following file is necessary : >+libcap.so.x in the libraries directory (x is currently "1" at the time of >+ writing). >+ >+On linux systems, these files usually come with the "libcap1" package for >+the runtime environment and the "libcap-dev" package for the build >+environment. Depending on your linux distribution, these packages may have >+other names. >+ >+--Ivan Warren, 2/17/2008 >diff -Naupr hercules-3.05/README.SUN hercules-20070717/README.SUN >--- hercules-3.05/README.SUN 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/README.SUN 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,113 @@ >+HOW TO BUILD HERCULES FROM CVS UNDER SOLARIS >+ >+1. DOWNLOAD AND INSTALL THE GNU COMPILER AND TOOLS >+ >+ (a) You can obtain all the required tools from >+ http://www.sunfreeware.com >+ >+ To download the tools you will need wget which is >+ installed in /usr/sfw/bin on Solaris 9 and 10. >+ >+ First add this directory to your path using the command: >+ PATH=${PATH}:/usr/sfw/bin >+ >+ (b) Follow instructions on http://www.blastwave.org/pkg-get.php >+ to install the pkg-get package. >+ Choose /opt/csw as the package base directory. >+ >+ Choose a local mirror site from the list at >+ http://www.blastwave.org/mirrors.html >+ and update /opt/csw/etc/pkg-get.conf to point to the /stable >+ directory at the mirror site, for example: >+ url=http://blastwave.informatik.uni-erlangen.de/csw/stable >+ >+ Add /opt/csw/bin to your path using the command: >+ PATH=/opt/csw/bin:${PATH} >+ >+ (c) Then install the GNU compiler and tools using these commands: >+ >+ pkg-get install textutils >+ pkg-get install automake >+ pkg-get install autoconf >+ pkg-get install cvs >+ pkg-get install flex >+ pkg-get install gmake >+ pkg-get install ggrep >+ pkg-get install gcc3 >+ >+ (d) Check that all the required tools are installed: >+ >+ pkg-get compare cvs autoconf automake flex gawk gcc3 >+ pkg-get compare ggettext ggrep libiconv gm4 gmake perl gsed >+ >+ which should produce output something like this: >+ >+ software localrev remoterev >+ cvs 1.11.22,REV=2007.12.02 SAME >+ autoconf 2.61,REV=2007.07.13 SAME >+ automake 1.9.6 SAME >+ flex 2.5.4,REV=2005.10.03 SAME >+ gawk 3.1.5 SAME >+ gcc3 3.4.5 SAME >+ ggettext 0.14.1,REV=2005.06.29 SAME >+ ggrep 2.5,REV=2004.12.01 SAME >+ libiconv 1.9.2 SAME >+ gm4 1.4.5,REV=2006.07.27 SAME >+ gmake 3.81 SAME >+ perl 5.8.8,REV=2007.10.05 SAME >+ gsed 4.1.4 SAME >+ >+ (e) Finally, add symbolic links to allow certain GNU tools to be >+ invoked using standard Unix names: >+ >+ cd /opt/csw/bin >+ ln -s /opt/csw/gcc3/bin/gcc gcc >+ ln -s /opt/csw/bin/ggettext gettext >+ ln -s /opt/csw/bin/ggrep grep >+ ln -s /opt/csw/bin/gm4 m4 >+ ln -s /opt/csw/bin/gmake make >+ ln -s /opt/csw/bin/gsed sed >+ >+2. DOWNLOAD THE HERCULES SOURCE FROM CVS >+ >+ Add the following lines to your .profile >+ PATH=/opt/csw/bin:${PATH} >+ CVSROOT=:pserver:anonymous@cvs.hercules-390.org:/usr/cvs/hercules >+ >+ From your home directory issue these commands: >+ >+ cvs login (no password is required; just press enter when asked) >+ cvs -z9 co hercules >+ >+3. CHECK THAT THE REQUIRED LEVELS OF TOOLS ARE INSTALLED >+ >+ From your home directory issue these commands: >+ >+ cd hercules >+ util/cvslvlck >+ >+ which should produce output something like this: >+ >+ OK cvs (informational), found 1.11.22 >+ OK autoconf requires 2.5, found 2.61 >+ OK automake requires 1.9, found 1.9.6 >+ OK flex requires 2.5, found 2.5.4 >+ OK gawk requires 3.0, found 3.1.5 >+ OK gcc requires 2.95, found 3.4.5 >+ OK gettext requires 0.11, found 0.14.1 >+ OK grep requires 0, found 2.5 >+ OK libiconv requires 1.8, found 1.9 >+ For first-time Libiconv installs, a recompile and reinstall of gettext >+ is recommended. Source: libiconv-1.8/README >+ OK m4 requires 0.0, found 1.4 >+ OK make requires 3.79, found 3.81 >+ OK perl requires 5.6, found 5.8.8 >+ OK sed requires 3.02, found 4.1.4 >+ >+4. BUILD HERCULES >+ >+ In the hercules directory issue these commands: >+ >+ sh ./autogen.sh >+ ./configure >+ make >diff -Naupr hercules-3.05/README.TAPE hercules-20070717/README.TAPE >--- hercules-3.05/README.TAPE 2003-08-17 10:22:14.000000000 +0200 >+++ hercules-20070717/README.TAPE 2008-09-03 13:07:48.000000000 +0200 >@@ -187,3 +187,51 @@ IV.4 : readonly=0|1 : > --Ivan > > 8 Mar 2003 >+ >+------------------------------------------------------------------------------- >+* AUTOMOUNT support * >+------------------------------------------------------------------------------- >+ >+Starting with Hercules version 3.06 a new AUTOMOUNT option is available >+that allows guest operating systems to directly mount, unmount and query >+tape device filenames for themselves, without any intervention on the part >+of the Hercules operator. >+ >+Automount support is enabled via the AUTOMOUNT configuration file statement. >+ >+An example guest automount program for VSE called "TMOUNT" is provided in >+the util subdirectory of the Hercules source code distribution. >+ >+Briefly, the 0x4B (Set Diagnose) CCW is used to mount (or unmount) a file >+onto a tape drive, and the 0xE4 (Sense Id) CCW opcode is used to query the >+name of the currently mounted file. >+ >+For mounts, the 0x4B CCW specifies the filename of the file to be mounted >+onto the drive. The file MUST reside in the specified AUTOMOUNT directory >+or the automount request will be rejected. To unmount the currently mounted >+file, simply do a mount of the special filename "OFFLINE". >+ >+To query the name of the currently mounted file, the 0xE4 CCW is used. Note >+however that the 0xE4 (Sense Id) CCW opcode cannot be used by itself since >+the drive may also already natively support the Sense Id CCW opcode. Instead, >+it must be preceded by (command-chained from) a 0x4B CCW with a data transfer >+length of one byte. The following 0xE4 command is the one that then specifies >+the i/o buffer and buffer length of where the query function is to place the >+device's currently mounted host filename. >+ >+In summary: >+ >+ >+ MOUNT: X'4B', <filename>, X'20', <length> >+ >+ UNMOUNT: (same thing but use filename "OFFLINE" instead) >+ >+ QUERY: X'4B', <buffer>, X'60', 1 >+ X'E4', <buffer>, X'20', <buffersize> >+ >+ >+Again, please refer to the provided TMOUNT sample for a simple example. >+ >+ >+-- Fish >+28 May 2008 >diff -Naupr hercules-3.05/RELEASE.NOTES hercules-20070717/RELEASE.NOTES >--- hercules-3.05/RELEASE.NOTES 2006-11-27 02:07:23.000000000 +0100 >+++ hercules-20070717/RELEASE.NOTES 2008-09-03 13:07:48.000000000 +0200 >@@ -1,6 +1,55 @@ > ------------------------------------------------------------------------------- > > >+ Version 3.06 RELEASE NOTES >+ >+ >+* Tape "AUTOMOUNT" support >+ >+ Starting with Hercules version 3.06 a new AUTOMOUNT option is available >+ that allows guest operating systems to directly mount, unmount and query >+ tape device filenames for themselves, without any intervention on the >+ part of the Hercules operator. >+ >+ Automount support is enabled via the AUTOMOUNT configuration file statement. >+ >+ An example guest automount program for VSE called "TMOUNT" is provided in >+ the util subdirectory of the Hercules source code distribution. >+ >+ Briefly, the 0x4B (Set Diagnose) CCW is used to mount (or unmount) a file >+ onto a tape drive, and the 0xE4 (Sense Id) CCW opcode is used to query the >+ name of the currently mounted file. >+ >+ For mounts, the 0x4B CCW specifies the filename of the file to be mounted >+ onto the drive. The file MUST reside in the specified AUTOMOUNT directory >+ or the automount request will be rejected. To unmount the currently mounted >+ file, simply do a mount of the special filename "OFFLINE". >+ >+ To query the name of the currently mounted file, the 0xE4 CCW is used. Note >+ however that the 0xE4 (Sense Id) CCW opcode cannot be used by itself since >+ the drive may also already natively support the Sense Id CCW opcode. Instead, >+ it must be preceded by (command-chained from) a 0x4B CCW with a data transfer >+ length of one byte. The following 0xE4 command is the one that then specifies >+ the i/o buffer and buffer length of where the query function is to place the >+ device's currently mounted host filename. >+ >+ In summary: >+ >+ >+ MOUNT: X'4B', <filename>, X'20', <length> >+ >+ UNMOUNT: (same thing but use filename "OFFLINE" instead) >+ >+ QUERY: X'4B', <buffer>, X'60', 1 >+ X'E4', <buffer>, X'20', <buffersize> >+ >+ >+ Again please refer to the provided TMOUNT program for a simple example >+ of how automount support might be implmented on a guest operating system. >+ >+------------------------------------------------------------------------------- >+ >+ > Version 3.05 RELEASE NOTES > > >diff -Naupr hercules-3.05/scsitape.c hercules-20070717/scsitape.c >--- hercules-3.05/scsitape.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/scsitape.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > // SCSITAPE.C -- Hercules SCSI tape handling module > // > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under >-// the Q Public License (http://www.conmicro.cx/hercules/herclic.html) >+// the Q Public License (http://www.hercules-390.org/herclic.html) > // as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > // >@@ -12,9 +12,45 @@ > // > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: scsitape.c,v 1.21 2007/06/23 00:04:15 ivan Exp $ >+// $Id: scsitape.c,v 1.30 2008/05/22 21:34:22 fish Exp $ > // > // $Log: scsitape.c,v $ >+// Revision 1.30 2008/05/22 21:34:22 fish >+// Attempt to fix my *nix SCSI tape BSR over tapemark bug identified by Bob Schneider [bschneider@pingdata.net] >+// >+// Revision 1.29 2008/03/31 06:36:49 fish >+// (untab) >+// >+// Revision 1.28 2008/03/30 02:51:33 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.27 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.26 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.25 2008/03/27 07:14:16 fish >+// SCSI MODS: groundwork: part 3: final shuffling around. >+// Moved functions from one module to another and resequenced >+// functions within each. NO CODE WAS ACTUALLY CHANGED. >+// Next commit will begin the actual changes. >+// >+// Revision 1.24 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.23 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// >+// Revision 1.22 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// > // Revision 1.21 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -23,18 +59,22 @@ > // > > #include "hstdinc.h" >- > #include "hercules.h" > #include "scsitape.h" > > #if defined(OPTION_SCSI_TAPE) > >+/*-------------------------------------------------------------------*/ >+/* (Debugging stuff) */ >+/*-------------------------------------------------------------------*/ >+ > //#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) > > #ifdef ENABLE_TRACING_STMTS > #if !defined(DEBUG) > #warning DEBUG required for ENABLE_TRACING_STMTS > #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) > #else > #undef TRACE > #define TRACE 1 ? ((void)0) : logmsg >@@ -44,67 +84,10 @@ > #define VERIFY(a) ((void)(a)) > #endif > >-void create_automount_thread( DEVBLK* dev ); // (fwd ref) >- > // (the following is just a [slightly] shorter name for our own internal use) > #define SLOW_UPDATE_STATUS_TIMEOUT MAX_NORMAL_SCSI_DRIVE_QUERY_RESPONSE_TIMEOUT_USECS > > /*-------------------------------------------------------------------*/ >-/* Tell driver (if needed) what a BOT position looks like... */ >-/*-------------------------------------------------------------------*/ >-static >-void define_BOT_pos( DEVBLK *dev ) >-{ >-#ifdef _MSVC_ >- >- // PROGRAMMING NOTE: Need to tell 'w32stape.c' here the >- // information it needs to detect physical BOT (load-point). >- >- // This is not normally needed as most drivers determine >- // it for themselves based on the type (manufacturer/model) >- // of tape drive being used, but since I haven't added the >- // code to 'w32stape.c' to do that yet (involves talking >- // directly to the SCSI device itself) we thus, for now, >- // need to pass that information directly to 'w32stape.c' >- // ourselves... >- >- U32 msk = 0xFF3FFFFF; // (3480/3490 default) >- U32 bot = 0x01000000; // (3480/3490 default) >- >- if ( dev->stape_blkid_32 ) >- { >- msk = 0xFFFFFFFF; // (3590 default) >- bot = 0x00000000; // (3590 default) >- } >- >- VERIFY( 0 == w32_define_BOT( dev->fd, msk, bot ) ); >- >-#else >- UNREFERENCED(dev); >-#endif // _MSVC_ >-} >- >-/*-------------------------------------------------------------------*/ >-/* shutdown_worker_threads... */ >-/*-------------------------------------------------------------------*/ >-static void shutdown_worker_threads(DEVBLK *dev) >-{ >- while ( dev->stape_getstat_tid || dev->stape_mountmon_tid ) >- { >- dev->stape_threads_exit = 1; // (always each loop) >- broadcast_condition( &dev->stape_exit_cond ); >- broadcast_condition( &dev->stape_getstat_cond ); >- timed_wait_condition_relative_usecs >- ( >- &dev->stape_exit_cond, // ptr to condition to wait on >- &dev->stape_getstat_lock, // ptr to controlling lock (must be held!) >- 25000, // max #of microseconds to wait >- NULL // ptr to relative tod value (may be NULL) >- ); >- } >-} >- >-/*-------------------------------------------------------------------*/ > /* Open a SCSI tape device */ > /* */ > /* If successful, the file descriptor is stored in the device block */ >@@ -178,7 +161,7 @@ int rc; > > /* Obtain the initial tape device/media status information */ > /* and start the mount-monitoring thread if option enabled */ >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); > > /* Asynchronous open now in progress? */ > obtain_lock( &dev->stape_getstat_lock ); >@@ -235,7 +218,7 @@ struct mtop opblk; > /* Since a tape was just mounted, reset the blockid back to zero */ > > dev->blockid = 0; >- dev->poserror = 0; >+ dev->fenced = 0; > > /* Set the tape device to process variable length blocks */ > >@@ -259,6 +242,24 @@ struct mtop opblk; > return -1; /* (fatal error) */ > } > >+#if defined( HAVE_DECL_MTEWARN ) && HAVE_DECL_MTEWARN >+ >+ // Try to request EOM/EOT (end-of-media/tape) early-warning >+ >+ // Note: if it fails, oh well. There's no need to scare the >+ // user with a warning message. We'll either get the warning >+ // or we won't. Either way there's nothing we can do about it. >+ // We did the best we could. >+ >+ opblk.mt_op = MTEWARN; >+ opblk.mt_count = dev->eotmargin; >+ >+ ioctl_tape (dev->fd, MTIOCTOP, (char*)&opblk); >+ >+ // (ignore any error; it either worked or it didn't) >+ >+#endif // defined( HAVE_DECL_MTEWARN ) && HAVE_DECL_MTEWARN >+ > return 0; /* (success) */ > > } /* end function finish_scsitape_open */ >@@ -268,6 +269,8 @@ struct mtop opblk; > /*-------------------------------------------------------------------*/ > void close_scsitape(DEVBLK *dev) > { >+ int rc = 0; >+ > obtain_lock( &dev->stape_getstat_lock ); > > dev->stape_threads_exit = 1; // (state our intention) >@@ -282,7 +285,7 @@ void close_scsitape(DEVBLK *dev) > opblk.mt_op = MTREW; > opblk.mt_count = 1; > >- if (ioctl_tape ( dev->fd, MTIOCTOP, (char*)&opblk) != 0) >+ if ((rc = ioctl_tape ( dev->fd, MTIOCTOP, (char*)&opblk)) != 0) > { > logmsg (_("HHCTA073W Error rewinding %u:%4.4X=%s; errno=%d: %s\n"), > SSID_TO_LCSS(dev->ssid), dev->devnum, >@@ -300,7 +303,6 @@ void close_scsitape(DEVBLK *dev) > dev->fd = -1; > dev->blockid = -1; > dev->curfilen = 0; >- dev->poserror = 1; > dev->nxtblkpos = 0; > dev->prvblkpos = -1; > } >@@ -316,6 +318,8 @@ void close_scsitape(DEVBLK *dev) > dev->stape_getstat_busy = 0; > dev->stape_threads_exit = 0; > >+ dev->fenced = rc >= 0 ? 0 : 1; >+ > release_lock( &dev->stape_getstat_lock ); > > } /* end function close_scsitape */ >@@ -369,7 +373,7 @@ int rc; > /* If error, return value is -1 and unitstat is set to CE+DE+UC */ > /*-------------------------------------------------------------------*/ > int write_scsitape (DEVBLK *dev, BYTE *buf, U16 len, >- BYTE *unitstat,BYTE code) >+ BYTE *unitstat, BYTE code) > { > int rc; > int save_errno; >@@ -378,13 +382,44 @@ int save_errno; > > rc = write_tape (dev->fd, buf, len); > >+#if defined( _MSVC_ ) >+ if (errno == ENOSPC) >+ dev->eotwarning = 1; >+#endif >+ > if (rc >= len) > { > dev->blockid++; > return 0; > } > >- /* Handle write error condition */ >+ /* LINUX EOM BEHAVIOUR WHEN WRITING >+ >+ When the end of medium early warning is encountered, >+ the current write is finished and the number of bytes >+ is returned. The next write returns -1 and errno is >+ set to ENOSPC. To enable writing a trailer, the next >+ write is allowed to proceed and, if successful, the >+ number of bytes is returned. After this, -1 and the >+ number of bytes are alternately returned until the >+ physical end of medium (or some other error) occurs. >+ */ >+ >+ if (errno == ENOSPC) >+ { >+ int_scsi_status_update( dev, 0 ); >+ >+ rc = write_tape (dev->fd, buf, len); >+ >+ if (rc >= len) >+ { >+ dev->eotwarning = 1; >+ dev->blockid++; >+ return 0; >+ } >+ } >+ >+ /* Handle write error condition... */ > > save_errno = errno; > { >@@ -392,7 +427,83 @@ int save_errno; > SSID_TO_LCSS(dev->ssid), dev->devnum, > dev->filename, errno, strerror(errno)); > >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); >+ } >+ errno = save_errno; >+ >+ if ( STS_NOT_MOUNTED( dev ) ) >+ build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >+ else >+ { >+ if (errno == EIO) >+ { >+ if(STS_EOT(dev)) >+ build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >+ else >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ } >+ else >+ build_senseX(TAPE_BSENSE_ITFERROR,dev,unitstat,code); >+ } >+ >+ return -1; >+ >+} /* end function write_scsitape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Write a tapemark to a SCSI tape device */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int write_scsimark (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc, save_errno; >+ >+ /* Write tape mark to SCSI tape */ >+ >+ rc = int_write_scsimark( dev ); >+ >+#if defined( _MSVC_ ) >+ if (errno == ENOSPC) >+ dev->eotwarning = 1; >+#endif >+ >+ if (rc >= 0) >+ return 0; >+ >+ /* LINUX EOM BEHAVIOUR WHEN WRITING >+ >+ When the end of medium early warning is encountered, >+ the current write is finished and the number of bytes >+ is returned. The next write returns -1 and errno is >+ set to ENOSPC. To enable writing a trailer, the next >+ write is allowed to proceed and, if successful, the >+ number of bytes is returned. After this, -1 and the >+ number of bytes are alternately returned until the >+ physical end of medium (or some other error) occurs. >+ */ >+ >+ if (errno == ENOSPC) >+ { >+ int_scsi_status_update( dev, 0 ); >+ >+ if (int_write_scsimark( dev ) >= 0) >+ { >+ dev->eotwarning = 1; >+ return 0; >+ } >+ } >+ >+ /* Handle write error condition... */ >+ >+ save_errno = errno; >+ { >+ logmsg (_("HHCTA034E Error writing tapemark to %u:%4.4X=%s; errno=%d: %s\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum, >+ dev->filename, errno, strerror(errno)); >+ >+ int_scsi_status_update( dev, 0 ); > } > errno = save_errno; > >@@ -421,22 +532,16 @@ int save_errno; > > return -1; > >-} /* end function write_scsitape */ >+} /* end function write_scsimark */ > > /*-------------------------------------------------------------------*/ >-/* Write a tapemark to a SCSI tape device */ >-/* */ >-/* If successful, return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* (internal 'write_scsimark' helper function) */ > /*-------------------------------------------------------------------*/ >-int write_scsimark (DEVBLK *dev, BYTE *unitstat,BYTE code) >+int int_write_scsimark (DEVBLK *dev) // (internal function) > { > int rc; >-int save_errno; > struct mtop opblk; > >- /* Write tape mark to SCSI tape */ >- > opblk.mt_op = MTWEOF; > opblk.mt_count = 1; > >@@ -445,21 +550,96 @@ struct mtop opblk; > if (rc >= 0) > { > /* Increment current file number since tapemark was written */ >- dev->curfilen++; >+/* dev->curfilen++; /* (CCW processor handles this automatically >+ so there's no need for us to do it here) */ >+ > /* (tapemarks count as block identifiers too!) */ > dev->blockid++; >- return 0; > } > >- /* Handle write error condition */ >+ return rc; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Synchronize a SCSI tape device (i.e. commit its data to tape) */ >+/* */ >+/* If successful, return value is zero. */ >+/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/*-------------------------------------------------------------------*/ >+int sync_scsitape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+{ >+int rc; >+int save_errno; >+struct mtop opblk; >+ >+ /* >+ GA32-0566-02 ("IBM Tape Device Drivers - Programming >+ Reference"): >+ >+ STIOCQRYPOS >+ >+ "[...] A write filemark of count 0 is always issued to >+ the drive, which flushes all data from the buffers to >+ the tape media. After the write filemark completes, the >+ query is issued." >+ >+ Write Tapemark >+ >+ "[...] The WriteTapemark entry point may also be called >+ with the dwTapemarkCount parameter set to 0 and the >+ bImmediate parameter set to FALSE. This has the effect >+ of committing any uncommitted data written by previous >+ WriteFile calls ... to the media." >+ */ >+ >+ opblk.mt_op = MTWEOF; >+ opblk.mt_count = 0; // (zero to force a commit) >+ >+ if ((rc = ioctl_tape (dev->fd, MTIOCTOP, (char*)&opblk)) >= 0) >+ { >+#if defined( _MSVC_ ) >+ if (errno == ENOSPC) >+ dev->eotwarning = 1; >+#endif >+ return 0; // (success) >+ } >+ >+ /* LINUX EOM BEHAVIOUR WHEN WRITING >+ >+ When the end of medium early warning is encountered, >+ the current write is finished and the number of bytes >+ is returned. The next write returns -1 and errno is >+ set to ENOSPC. To enable writing a trailer, the next >+ write is allowed to proceed and, if successful, the >+ number of bytes is returned. After this, -1 and the >+ number of bytes are alternately returned until the >+ physical end of medium (or some other error) occurs. >+ */ >+ >+ if (errno == ENOSPC) >+ { >+ int_scsi_status_update( dev, 0 ); >+ >+ opblk.mt_op = MTWEOF; >+ opblk.mt_count = 0; // (zero to force a commit) >+ >+ if ((rc = ioctl_tape (dev->fd, MTIOCTOP, (char*)&opblk)) >= 0) >+ { >+ dev->eotwarning = 1; >+ return 0; >+ } >+ } >+ >+ /* Handle write error condition... */ > > save_errno = errno; > { >- logmsg (_("HHCTA034E Error writing tapemark to %u:%4.4X=%s; errno=%d: %s\n"), >- SSID_TO_LCSS(dev->ssid), dev->devnum, >- dev->filename, errno, strerror(errno)); >+ logmsg (_("HHCTA089E Synchronize error on " >+ "%u:%4.4X=%s; errno=%d: %s\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum, >+ dev->filename, errno, strerror(errno)); > >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); > } > errno = save_errno; > >@@ -488,7 +668,7 @@ struct mtop opblk; > > return -1; > >-} /* end function write_scsimark */ >+} /* end function sync_scsitape */ > > /*-------------------------------------------------------------------*/ > /* Forward space over next block of SCSI tape device */ >@@ -518,19 +698,19 @@ struct mtop opblk; > return +1; > } > >- /* Since the MT driver does not set EOF status >- when forward spacing over a tapemark, the best >- we can do is to assume that an I/O error means >- that a tapemark was detected... (in which case >- we incremnent the file number and return 0). >- */ >+ /* Check for spacing over a tapemark... */ >+ > save_errno = errno; > { >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); > } > errno = save_errno; > >- if ( EIO == errno && STS_EOF(dev) ) >+ // PROGRAMMING NOTE: please see the "Programming Note" in the >+ // 'bsb_scsitape' function regarding usage of the 'EOF' status >+ // to detect spacing over tapemarks. >+ >+ if ( EIO == errno && STS_EOF(dev) ) // (fwd-spaced over tapemark?) > { > dev->curfilen++; > dev->blockid++; >@@ -588,6 +768,7 @@ int bsb_scsitape (DEVBLK *dev, BYTE *uni > int rc; > int save_errno; > struct mtop opblk; >+struct mtget starting_mtget; > > /* PROGRAMMING NOTE: There is currently no way to distinguish > ** between a "normal" backspace-block error and a "backspaced- >@@ -596,7 +777,7 @@ struct mtop opblk; > ** 'EIO'. (Interrogating the status AFTER the fact (to see if > ** we're positioned at loadpoint) doesn't tell us whether we > ** were already positioned at loadpoint *before* the error was >- ** was encountered or whether we're only positioned ar load- >+ ** was encountered or whether we're only positioned at load- > ** point because we *did* in fact backspace over the very first > ** block on the tape (and are thus now, after the fact, sitting > ** at loadpoint because we *did* backspace over a block but it >@@ -611,18 +792,21 @@ struct mtop opblk; > ** an error afterwards. > */ > >- /* Obtain tape status before backward space... (no choice!) */ >- update_status_scsitape( dev, 0 ); >+ /* Obtain tape status before backward space... */ >+ int_scsi_status_update( dev, 0 ); >+ >+ /* (save the current status before the i/o in case of error) */ >+ memcpy( &starting_mtget, &dev->mtget, sizeof( struct mtget ) ); > > /* Unit check if already at start of tape */ > if ( STS_BOT( dev ) ) > { >+ dev->eotwarning = 0; > build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); > return -1; > } > > /* Attempt the backspace i/o...*/ >- > opblk.mt_op = MTBSR; > opblk.mt_count = 1; > >@@ -635,28 +819,84 @@ struct mtop opblk; > return +1; > } > >- /* Since the MT driver does not set EOF status >- when backspacing over a tapemark, the best >- we can do is to assume that an I/O error means >- that a tapemark was detected... (in which case >- we decrement the file number and return 0). >- */ >+ /* Retrieve new status after the [supposed] i/o error... */ > save_errno = errno; > { >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); > } > errno = save_errno; > >- if ( EIO == errno && STS_EOF(dev) ) >+ /* Check for backspacing over tapemark... */ >+ >+ /* PROGRAMMING NOTE: on Windows, our scsi tape driver (w32stape.c) >+ ** sets 'EOF' status whenever a tapemark is spaced over in EITHER >+ ** direction (forward OR backward), whereas *nix operating systems >+ ** do not. They set 'EOF' status only when FORWARD spacing over a >+ ** tapemark but not when BACKSPACING over one. >+ ** >+ ** (Apparently the EOF status was actually meant to mean that the >+ ** tape is "PHYSICALLY POSITIONED PAST [physical] eof" (i.e. past >+ ** an "eof marker" (i.e. a tapemark)) and nothing more. That is to >+ ** say, it is apparently NOT meant to mean a tapemark was passed >+ ** over, but rather only that you're "POSITIONED PAST" a tapemark.) >+ ** >+ ** Therefore since 'EOF' status will thus *NEVER* be set whenever >+ ** a tapemark is spaced over in the *BACKWARD* direction [on non- >+ ** Windows operating systems], we need some other means of distin- >+ ** guishing between true backspace-block i/o errors and ordinary >+ ** spacing over a tapemark (which is NOT an i/o error but which >+ ** *is* an "out of the ordinary" (unit exception) type of event). >+ ** >+ ** Extensive research on this issue has revealed the *ONLY* semi- >+ ** reliable means of distinguishing between them is by checking >+ ** the "file#" and "block#" fields of the status structure after >+ ** the supposed i/o error. If the file# is one less than it was >+ ** before and the block# is -1, then a tapemark was simply spaced >+ ** over. If the file# and block# is anything else however, then >+ ** the originally reported error was a bona-fide i/o error (i.e. >+ ** the original backspace-block (MTBSR) actually *failed*). >+ ** >+ ** I say "semi-reliable" because comments seem to indicate that >+ ** the "file#" and "block#" fields of the mtget status structure >+ ** "are not always used". The best that I can tell however, is >+ ** most *nix operating systems *do* seem to maintain them. Thus, >+ ** for now, we're going to rely on their accuracy since without >+ ** them there's really no way whatsoever to distingish between >+ ** a normal backspacing over a tapemark unit exception condition >+ ** and a bona-fide i/o error (other than doing our own SCSI i/o >+ ** of course (which we don't support (yet))). -- Fish, May 2008 >+ */ >+ if ( EIO == errno ) > { >- dev->curfilen--; >- dev->blockid--; >- /* Return 0 to indicate tapemark was spaced over */ >- return 0; >- } >+#if defined( _MSVC_ ) >+ >+ /* Windows always sets 'EOF' status whenever a tapemark is >+ spaced over in EITHER direction (forward OR backward) */ >+ >+ if ( STS_EOF(dev) ) /* (passed over tapemark?) */ > >- /* Bona fide backspace block error ... */ >+#else // !defined( _MSVC_ ) > >+ /* Unix-type systems unfortunately do NOT set 'EOF' whenever >+ backspacing over a tapemark (see PROGRAMMING NOTE above), >+ so we need to check the status struct's file# and block# >+ fields instead... */ >+ >+ /* (passed over tapemark?) */ >+ if (1 >+ && dev->mtget.mt_fileno == (starting_mtget.mt_fileno - 1) >+ && dev->mtget.mt_blkno == -1 >+ ) >+#endif // defined( _MSVC_ ) >+ { >+ dev->curfilen--; >+ dev->blockid--; >+ /* Return 0 to indicate tapemark was spaced over */ >+ return 0; >+ } >+ } >+ >+ /* Bona fide backspace block i/o error ... */ > save_errno = errno; > { > logmsg (_("HHCTA036E Backspace block error on %u:%4.4X=%s; errno=%d: %s\n"), >@@ -670,7 +910,10 @@ struct mtop opblk; > else > { > if ( EIO == errno && STS_BOT(dev) ) >+ { >+ dev->eotwarning = 0; > build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ } > else > build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); > } >@@ -704,7 +947,6 @@ struct mtop opblk; > no clue as to what the proper current blockid should be. > */ > dev->blockid = -1; // (actual position now unknown!) >- dev->poserror = 1; // (actual position now unknown!) > > if ( rc >= 0 ) > { >@@ -714,6 +956,8 @@ struct mtop opblk; > > /* Handle error condition */ > >+ dev->fenced = 1; // (actual position now unknown!) >+ > save_errno = errno; > { > logmsg (_("HHCTA037E Forward space file error on %u:%4.4X=%s; errno=%d: %s\n"), >@@ -785,11 +1029,12 @@ struct mtop opblk; > */ > > /* Obtain tape status before backward space... (no choice!) */ >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); > > /* Unit check if already at start of tape */ > if ( STS_BOT( dev ) ) > { >+ dev->eotwarning = 0; > build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); > return -1; > } >@@ -806,7 +1051,6 @@ struct mtop opblk; > no clue as to what the proper current blockid should be. > */ > dev->blockid = -1; // (actual position now unknown!) >- dev->poserror = 1; // (actual position now unknown!) > > if ( rc >= 0 ) > { >@@ -816,6 +1060,8 @@ struct mtop opblk; > > /* Handle error condition */ > >+ dev->fenced = 1; // (actual position now unknown!) >+ > save_errno = errno; > { > logmsg (_("HHCTA038E Backspace file error on %u:%4.4X=%s; errno=%d: %s\n"), >@@ -829,7 +1075,10 @@ struct mtop opblk; > else > { > if ( EIO == errno && STS_BOT(dev) ) >+ { >+ dev->eotwarning = 0; > build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ } > else > build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); > } >@@ -858,11 +1107,11 @@ struct mtop opblk; > dev->sstat |= GMT_BOT( -1 ); // (forced) > dev->blockid = 0; > dev->curfilen = 0; >- dev->poserror = 0; >+ dev->fenced = 0; > return 0; > } > >- dev->poserror = 1; // (because the rewind failed) >+ dev->fenced = 1; // (because the rewind failed) > dev->blockid = -1; // (because the rewind failed) > dev->curfilen = -1; // (because the rewind failed) > >@@ -882,7 +1131,7 @@ struct mtop opblk; > /*-------------------------------------------------------------------*/ > /* Rewind Unload a SCSI tape device (and CLOSE it too!) */ > /*-------------------------------------------------------------------*/ >-void rewind_unload_scsitape(DEVBLK *dev, BYTE *unitstat, BYTE code ) >+void int_scsi_rewind_unload(DEVBLK *dev, BYTE *unitstat, BYTE code ) > { > int rc; > struct mtop opblk; >@@ -895,6 +1144,8 @@ struct mtop opblk; > > if ( rc >= 0 ) > { >+ dev->fenced = 0; >+ > if ( dev->ccwtrace || dev->ccwstep ) > logmsg (_("HHCTA077I Tape %u:%4.4X unloaded\n"), > SSID_TO_LCSS(dev->ssid), dev->devnum); >@@ -908,7 +1159,7 @@ struct mtop opblk; > return; > } > >- dev->poserror = 1; // (because the rewind-unload failed) >+ dev->fenced = 1; // (because the rewind-unload failed) > dev->curfilen = -1; // (because the rewind-unload failed) > dev->blockid = -1; // (because the rewind-unload failed) > >@@ -921,7 +1172,7 @@ struct mtop opblk; > else > build_senseX(TAPE_BSENSE_REWINDFAILED,dev,unitstat,code); > >-} /* end function rewind_unload_scsitape */ >+} /* end function int_scsi_rewind_unload */ > > /*-------------------------------------------------------------------*/ > /* Erase Gap */ >@@ -929,6 +1180,7 @@ struct mtop opblk; > int erg_scsitape( DEVBLK *dev, BYTE *unitstat, BYTE code ) > { > #if defined( OPTION_SCSI_ERASE_GAP ) >+int rc; > > if (!dev->stape_no_erg) > { >@@ -937,20 +1189,61 @@ int erg_scsitape( DEVBLK *dev, BYTE *uni > opblk.mt_op = MTERASE; > opblk.mt_count = 0; // (zero means "short" erase-gap) > >- if ( ioctl_tape( dev->fd, MTIOCTOP, (char*)&opblk ) < 0 ) >+ rc = ioctl_tape( dev->fd, MTIOCTOP, (char*)&opblk ); >+ >+#if defined( _MSVC_ ) >+ if (errno == ENOSPC) >+ dev->eotwarning = 1; >+#endif >+ >+ if ( rc < 0 ) > { >- logmsg (_("HHCTA999E Erase Gap error on %u:%4.4X=%s; errno=%d: %s\n"), >- SSID_TO_LCSS(dev->ssid), dev->devnum, >- dev->filename, errno, strerror(errno)); >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >+ /* LINUX EOM BEHAVIOUR WHEN WRITING >+ >+ When the end of medium early warning is encountered, >+ the current write is finished and the number of bytes >+ is returned. The next write returns -1 and errno is >+ set to ENOSPC. To enable writing a trailer, the next >+ write is allowed to proceed and, if successful, the >+ number of bytes is returned. After this, -1 and the >+ number of bytes are alternately returned until the >+ physical end of medium (or some other error) occurs. >+ */ >+ >+ if (errno == ENOSPC) >+ { >+ int_scsi_status_update( dev, 0 ); >+ >+ opblk.mt_op = MTERASE; >+ opblk.mt_count = 0; // (zero means "short" erase-gap) >+ >+ if ( (rc = ioctl_tape( dev->fd, MTIOCTOP, (char*)&opblk )) >= 0 ) >+ dev->eotwarning = 1; >+ } >+ >+ if ( rc < 0) >+ { >+ logmsg (_("HHCTA999E Erase Gap error on %u:%4.4X=%s; errno=%d: %s\n"), >+ SSID_TO_LCSS(dev->ssid), dev->devnum, >+ dev->filename, errno, strerror(errno)); >+ build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >+ return -1; >+ } > } > } >-#endif // defined( OPTION_SCSI_ERASE_GAP ) > >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ return 0; // (success) >+ >+#else // !defined( OPTION_SCSI_ERASE_GAP ) >+ >+ UNREFERENCED ( dev ); >+ UNREFERENCED ( code ); >+ UNREFERENCED ( unitstat ); >+ > return 0; // (treat as nop) > >+#endif // defined( OPTION_SCSI_ERASE_GAP ) >+ > } /* end function erg_scsitape */ > > /*-------------------------------------------------------------------*/ >@@ -973,69 +1266,362 @@ int dse_scsitape( DEVBLK *dev, BYTE *uni > build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); > return -1; > } >-#endif // defined( OPTION_SCSI_ERASE_TAPE ) > >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ return 0; // (success) >+ >+#else // !defined( OPTION_SCSI_ERASE_TAPE ) >+ >+ UNREFERENCED ( dev ); >+ UNREFERENCED ( code ); >+ UNREFERENCED ( unitstat ); >+ > return 0; // (treat as nop) > >+#endif // defined( OPTION_SCSI_ERASE_TAPE ) >+ > } /* end function dse_scsitape */ > > /*-------------------------------------------------------------------*/ >-/* Determine if the tape is Ready (tape drive door status) */ >-/* Returns: true/false: 1 = ready, 0 = NOT ready */ >+/* readblkid_scsitape */ > /*-------------------------------------------------------------------*/ >-int is_tape_mounted_scsitape( DEVBLK *dev, BYTE *unitstat, BYTE code ) >+/* Output values are returned in BIG-ENDIAN guest format... */ >+/*-------------------------------------------------------------------*/ >+int readblkid_scsitape ( DEVBLK* dev, BYTE* logical, BYTE* physical ) > { >- UNREFERENCED(unitstat); >- UNREFERENCED(code); >+ // ZZ FIXME: The two blockid fields that READ BLOCK ID >+ // are returning are the "Channel block ID" and "Device >+ // block ID" fields, which correspond directly to the >+ // SCSI "First block location" and "Last block location" >+ // fields (as returned by a READ POSITION scsi command), >+ // so we really SHOULD be doing our own direct scsi i/o >+ // for ourselves so we can retrieve BOTH of those values >+ // directly from the real/actual physical device itself, >+ // but until we can add code to Herc to do that, we must >+ // return the same value for each since ioctl(MTIOCPOS) >+ // only returns us one value (the logical position) and >+ // not both that we really prefer... >+ >+ // (And for the record, we want the "Channel block ID" >+ // value, also known as the SCSI "First block location" >+ // value, also known as the >>LOGICAL<< value and *NOT* >+ // the absolute/physical device-relative value) > >- /* Update tape mounted status */ >- update_status_scsitape( dev, 1 ); >+ struct mtpos mtpos; >+ BYTE blockid[4]; > >- return ( !STS_NOT_MOUNTED( dev ) ); >-} /* end function driveready_scsitape */ >+ if (ioctl_tape( dev->fd, MTIOCPOS, (char*) &mtpos ) < 0 ) >+ { >+ /* Informative ERROR message if tracing */ >+ >+ int save_errno = errno; >+ { >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA082W ioctl_tape(MTIOCPOS=MTTELL) failed on %4.4X = %s: %s\n") >+ ,dev->devnum >+ ,dev->filename >+ ,strerror(errno) >+ ); >+ } >+ errno = save_errno; >+ >+ return -1; // (errno should already be set) >+ } >+ >+ // Convert MTIOCPOS value to guest BIG-ENDIAN format... >+ >+ mtpos.mt_blkno = CSWAP32( mtpos.mt_blkno ); // (guest <- host) >+ >+ // Handle emulated vs. physical tape-device block-id format issue... >+ >+ blockid_actual_to_emulated( dev, (BYTE*)&mtpos.mt_blkno, blockid ); >+ >+ // Until we can add code to Herc to do direct SCSI i/o (so that >+ // we can retrieve BOTH values directly from the device itself), >+ // we have no choice but to return the same value for each since >+ // the ioctl(MTIOCPOS) call only returns the logical value and >+ // not also the physical value that we wish it would... >+ >+ if (logical) memcpy( logical, &blockid[0], 4 ); >+ if (physical) memcpy( physical, &blockid[0], 4 ); >+ >+ return 0; // (success) >+ >+} /* end function readblkid_scsitape */ > > /*-------------------------------------------------------------------*/ >-/* Force a manual status refresh/update (DANGEROUS!) */ >+/* locateblk_scsitape */ >+/*-------------------------------------------------------------------*/ >+/* Input value is passed in little-endian host format... */ > /*-------------------------------------------------------------------*/ >-int force_status_update( DEVBLK *dev ) >+int locateblk_scsitape ( DEVBLK* dev, U32 blockid, BYTE *unitstat, BYTE code ) > { >- // * * WARNING! * * >+ int rc; >+ struct mtop mtop; > >- // PROGRAMMING NOTE: do NOT call this function indiscriminately, >- // as doing so COULD cause improper functioning of the guest o/s! >+ UNREFERENCED( unitstat ); // (not used) >+ UNREFERENCED( code ); // (not used) > >- // How? Simple: if there's already a tape job running on the guest >- // using the tape drive and we just so happen to request a status >- // update at the precise moment a guest i/o encounters a tapemark, >- // it's possible for US to receive the "tapemark" status and thus >- // cause the guest to end up NOT SEEING the tapemark! Therefore, >- // you should ONLY call this function whenever the current status >- // indicates there's no tape mounted. If the current status says >- // there *is* a tape mounted, you must NOT call this function! >+ // Convert the passed host-format blockid value into the proper >+ // 32-bit vs. 22-bit guest-format the physical device expects ... > >- // If the current status says there's a tape mounted and the user >- // knows this to be untrue (e.g. they manually unloaded it maybe) >- // then to kick off the auto-scsi-mount thread they must manually >- // issue the 'devinit' command themselves. We CANNOT presume that >- // a "mounted" status is bogus. We can ONLY safely presume that a >- // "UNmounted" status may possibly be bogus. Thus we only ask for >- // a status refresh if the current status is "not mounted" but we >- // purposely do NOT force a refresh if the status is "mounted"!! >+ blockid = CSWAP32( blockid ); // (guest <- host) > >- if ( STS_NOT_MOUNTED( dev ) ) // (if no tape mounted) >- update_status_scsitape( dev, 0 ); // (then probably safe) >+ blockid_emulated_to_actual( dev, (BYTE*)&blockid, (BYTE*)&mtop.mt_count ); > >- return 0; >-} /* end function force_status_update */ >+ mtop.mt_count = CSWAP32( mtop.mt_count ); // (host <- guest) >+ mtop.mt_op = MTSEEK; >+ >+ // Ask the actual hardware to do an actual physical locate... >+ >+ if ((rc = ioctl_tape( dev->fd, MTIOCTOP, (char*)&mtop )) < 0) >+ { >+ int save_errno = errno; >+ { >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA083W ioctl_tape(MTIOCTOP=MTSEEK) failed on %4.4X = %s: %s\n") >+ ,dev->devnum >+ ,dev->filename >+ ,strerror(errno) >+ ); >+ } >+ errno = save_errno; >+ } >+ >+ return rc; >+} >+ >+/*********************************************************************/ >+/** **/ >+/** BLOCK-ID ADJUSTMENT FUNCTIONS **/ >+/** **/ >+/*********************************************************************/ >+/* >+ The following conversion functions compensate for the fact that >+ the emulated device type might actually be completely different >+ from the actual real [SCSI] device being used for the emulation. >+ >+ That is to say, the actual SCSI device being used may actually >+ be a 3590 type device but is defined in Hercules as a 3480 (or >+ vice-versa). Thus while the device actually behaves as a 3590, >+ we need to emulate 3480 functionality instead (and vice-versa). >+ >+ For 3480/3490 devices, the block ID has the following format: >+ >+ __________ ________________________________________________ >+ | Bit | Description | >+ |__________|________________________________________________| >+ | 0 | Direction Bit | >+ | | | >+ | | 0 Wrap 1 | >+ | | 1 Wrap 2 | >+ |__________|________________________________________________| >+ | 1-7 | Segment Number | >+ |__________|________________________________________________| >+ | 8-9 | Format Mode | >+ | | | >+ | | 00 3480 format | >+ | | 01 3480-2 XF format | >+ | | 10 3480 XF format | >+ | | 11 Reserved | >+ | | | >+ | | Note: The 3480 format does not support IDRC. | >+ |__________|________________________________________________| >+ | 10-31 | Logical Block Number | >+ |__________|________________________________________________| >+ >+ For 3480's and 3490's, first block recorded on the tape has >+ a block ID value of X'01000000', whereas for 3590 devices the >+ block ID is a full 32 bits and the first block on the tape is >+ block ID x'00000000'. >+ >+ For the 32-bit to 22-bit (and vice versa) conversion, we're >+ relying on (hoping really!) that an actual 32-bit block-id value >+ will never actually exceed 30 bits (1-bit wrap + 7-bit segment# >+ + 22-bit block-id) since we perform the conversion by simply >+ splitting the low-order 30 bits of a 32-bit block-id into a sep- >+ arate 8-bit (wrap and segment#) and 22-bit (block-id) fields, >+ and then shifting them into their appropriate position (and of >+ course combining/appending them for the opposite conversion). >+ >+ As such, this of course implies that we are thus treating the >+ wrap bit and 7-bit segment number values of a 3480/3490 "22-bit >+ format" blockid as simply the high-order 8 bits of an actual >+ 30-bit physical blockid (which may or may not work properly on >+ actual SCSI hardware depending on how[*] it handles inaccurate >+ blockid values). >+ >+ >+ ----------------- >+ >+ [*] Most(?) [SCSI] devices treat the blockid value used in a >+ Locate CCW as simply an "approximate location" of where the >+ block in question actually resides on the physical tape, and >+ will, after positioning itself to the *approximate* physical >+ location of where the block is *believed* to reside, proceed >+ to then perform the final positioning at low-speed based on >+ its reading of its actual internally-recorded blockid values. >+ >+ Thus, even when the supplied Locate block-id value is wrong, >+ the Locate should still succeed, albeit less efficiently since >+ it may be starting at a physical position quite distant from >+ where the actual block is actually physically located on the >+ actual media. >+*/ >+ >+/*-------------------------------------------------------------------*/ >+/* blockid_emulated_to_actual */ >+/*-------------------------------------------------------------------*/ >+/* Locate CCW helper: convert guest-supplied 3480 or 3590 blockid */ >+/* to the actual SCSI hardware blockid format */ >+/* Both I/P AND O/P are presumed to be in BIG-ENDIAN guest format */ >+/*-------------------------------------------------------------------*/ >+void blockid_emulated_to_actual >+( >+ DEVBLK *dev, // ptr to Hercules device >+ BYTE *emu_blkid, // ptr to i/p 4-byte block-id in guest storage >+ BYTE *act_blkid // ptr to o/p 4-byte block-id for actual SCSI i/o >+) >+{ >+ if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >+ { >+ memcpy( act_blkid, emu_blkid, 4 ); >+ return; >+ } >+ >+#if defined(OPTION_SCSI_TAPE) >+ if (0x3590 == dev->devtype) >+ { >+ // 3590 being emulated; guest block-id is full 32-bits... >+ >+ if (dev->stape_blkid_32) >+ { >+ // SCSI using full 32-bit block-ids too. Just copy as-is... >+ >+ memcpy( act_blkid, emu_blkid, 4 ); >+ } >+ else >+ { >+ // SCSI using 22-bit block-ids. Use low-order 30 bits >+ // of 32-bit guest-supplied blockid and convert it >+ // into a "22-bit format" blockid value for SCSI... >+ >+ blockid_32_to_22 ( emu_blkid, act_blkid ); >+ } >+ } >+ else // non-3590 being emulated; guest block-id is 22-bits... >+ { >+ if (dev->stape_blkid_32) >+ { >+ // SCSI using full 32-bit block-ids. Extract the wrap, >+ // segment# and 22-bit blockid bits from the "22-bit >+ // format" guest-supplied blockid value and combine >+ // (append) them into a contiguous low-order 30 bits >+ // of a 32-bit blockid value for SCSI to use... >+ >+ blockid_22_to_32 ( emu_blkid, act_blkid ); >+ } >+ else >+ { >+ // SCSI using 22-bit block-ids too. Just copy as-is... >+ >+ memcpy( act_blkid, emu_blkid, 4 ); >+ } >+ } >+#endif /* defined(OPTION_SCSI_TAPE) */ >+ >+} /* end function blockid_emulated_to_actual */ > > /*-------------------------------------------------------------------*/ >-/* Forward references... */ >+/* blockid_actual_to_emulated */ >+/*-------------------------------------------------------------------*/ >+/* Read Block Id CCW helper: convert an actual SCSI block-id */ >+/* to guest emulated 3480/3590 format */ >+/* Both i/p and o/p are presumed to be in big-endian guest format */ >+/*-------------------------------------------------------------------*/ >+void blockid_actual_to_emulated >+( >+ DEVBLK *dev, // ptr to Hercules device (for 'devtype') >+ BYTE *act_blkid, // ptr to i/p 4-byte block-id from actual SCSI i/o >+ BYTE *emu_blkid // ptr to o/p 4-byte block-id in guest storage >+) >+{ >+ if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >+ { >+ memcpy( emu_blkid, act_blkid, 4 ); >+ return; >+ } >+ >+#if defined(OPTION_SCSI_TAPE) >+ if (dev->stape_blkid_32) >+ { >+ // SCSI using full 32-bit block-ids... >+ if (0x3590 == dev->devtype) >+ { >+ // Emulated device is a 3590 too. Just copy as-is... >+ memcpy( emu_blkid, act_blkid, 4 ); >+ } >+ else >+ { >+ // Emulated device using 22-bit format. Convert... >+ blockid_32_to_22 ( act_blkid, emu_blkid ); >+ } >+ } >+ else >+ { >+ // SCSI using 22-bit format block-ids... >+ if (0x3590 == dev->devtype) >+ { >+ // Emulated device using full 32-bit format. Convert... >+ blockid_22_to_32 ( act_blkid, emu_blkid ); >+ } >+ else >+ { >+ // Emulated device using 22-bit format too. Just copy as-is... >+ memcpy( emu_blkid, act_blkid, 4 ); >+ } >+ } >+#endif /* defined(OPTION_SCSI_TAPE) */ >+ >+} /* end function blockid_actual_to_emulated */ >+ >+/*-------------------------------------------------------------------*/ >+/* blockid_32_to_22 */ > /*-------------------------------------------------------------------*/ >-extern void update_status_scsitape ( DEVBLK* dev, int mountstat_only ); >+/* Convert a 3590 32-bit blockid into 3480 "22-bit format" blockid */ >+/* Both i/p and o/p are presumed to be in big-endian guest format */ >+/*-------------------------------------------------------------------*/ >+void blockid_32_to_22 ( BYTE *in_32blkid, BYTE *out_22blkid ) >+{ >+ out_22blkid[0] = ((in_32blkid[0] << 2) & 0xFC) | ((in_32blkid[1] >> 6) & 0x03); >+ out_22blkid[1] = in_32blkid[1] & 0x3F; >+ out_22blkid[2] = in_32blkid[2]; >+ out_22blkid[3] = in_32blkid[3]; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* blockid_22_to_32 */ >+/*-------------------------------------------------------------------*/ >+/* Convert a 3480 "22-bit format" blockid into a 3590 32-bit blockid */ >+/* Both i/p and o/p are presumed to be in big-endian guest format */ >+/*-------------------------------------------------------------------*/ >+void blockid_22_to_32 ( BYTE *in_22blkid, BYTE *out_32blkid ) >+{ >+ out_32blkid[0] = (in_22blkid[0] >> 2) & 0x3F; >+ out_32blkid[1] = ((in_22blkid[0] << 6) & 0xC0) | (in_22blkid[1] & 0x3F); >+ out_32blkid[2] = in_22blkid[2]; >+ out_32blkid[3] = in_22blkid[3]; >+} >+ >+/*********************************************************************/ >+/** **/ >+/** INTERNAL STATUS & AUTOMOUNT FUNCTIONS **/ >+/** **/ >+/*********************************************************************/ >+ >+/* Forward references... */ >+extern void int_scsi_status_update ( DEVBLK* dev, int mountstat_only ); > static void scsi_get_status_fast ( DEVBLK* dev ); > static void* get_stape_status_thread ( void* db ); >-extern void kill_stape_status_thread ( DEVBLK* dev ); > > /*-------------------------------------------------------------------*/ > /* get_stape_status_thread */ >@@ -1049,7 +1635,6 @@ void* get_stape_status_thread( void *db > > struct timeval beg_tod; > struct timeval end_tod; >- struct timeval diff_tod; > > // PROGRAMMING NOTE: it is EXTREMELY IMPORTANT that the status- > // retrieval thread (i.e. ourselves) be set to a priority that >@@ -1168,9 +1753,16 @@ void* get_stape_status_thread( void *db > break; > > if ( 0 == rc ) >- dev->stape_getstat_sstat = mtget.mt_gstat; >+ { >+ memcpy( &dev->stape_getstat_mtget, &mtget, sizeof( struct mtget ) ); >+ } > else >- dev->stape_getstat_sstat = GMT_DR_OPEN(-1); // (presumed and forced) >+ { >+ memset( &dev->stape_getstat_mtget, 0, sizeof( struct mtget ) ); >+ dev->stape_getstat_mtget.mt_blkno = -1; // (forced) >+ dev->stape_getstat_mtget.mt_fileno = -1; // (forced) >+ dev->stape_getstat_sstat = GMT_DR_OPEN(-1); // (presumed and forced) >+ } > > // Notify requestors new updated status is available > // and go back to sleep to wait for the next request... >@@ -1190,9 +1782,6 @@ void* get_stape_status_thread( void *db > broadcast_condition( &dev->stape_getstat_cond ); // (new status available) > > { >- VERIFY(0 == timeval_subtract( &beg_tod, &end_tod, &diff_tod ) ); >- PTT("stat query", (diff_tod.tv_sec * 1000) + ((diff_tod.tv_usec + 500) / 1000), 0, 0); >- > dev->stape_getstat_query_tod.tv_sec = end_tod.tv_sec; > dev->stape_getstat_query_tod.tv_usec = end_tod.tv_usec; > } >@@ -1267,11 +1856,14 @@ void scsi_get_status_fast( DEVBLK* dev ) > // Timeout (status retrieval took too long). > // We therefore presume no tape is mounted. > >+ memset( &dev->mtget, 0, sizeof( struct mtget ) ); >+ dev->mtget.mt_blkno = -1; // (forced) >+ dev->mtget.mt_fileno = -1; // (forced) > dev->sstat = GMT_DR_OPEN(-1); // (presumed and forced) > } > else // Request finished in time... > { >- dev->sstat = dev->stape_getstat_sstat; >+ memcpy( &dev->mtget, &dev->stape_getstat_mtget, sizeof( struct mtget ) ); > } > > release_lock( &dev->stape_getstat_lock ); >@@ -1279,9 +1871,66 @@ void scsi_get_status_fast( DEVBLK* dev ) > } /* end function scsi_get_status_fast */ > > /*-------------------------------------------------------------------*/ >+/* Check if a SCSI tape is positioned past the EOT reflector or not */ >+/*-------------------------------------------------------------------*/ >+int passedeot_scsitape( DEVBLK *dev ) >+{ >+ return dev->eotwarning; // (1==past EOT reflector; 0==not) >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Determine if the tape is Ready (tape drive door status) */ >+/* Returns: true/false: 1 = ready, 0 = NOT ready */ >+/*-------------------------------------------------------------------*/ >+int is_tape_mounted_scsitape( DEVBLK *dev, BYTE *unitstat, BYTE code ) >+{ >+ UNREFERENCED(unitstat); >+ UNREFERENCED(code); >+ >+ /* Update tape mounted status */ >+ int_scsi_status_update( dev, 1 ); // (safe/fast internal call) >+ >+ return ( !STS_NOT_MOUNTED( dev ) ); >+} /* end function driveready_scsitape */ >+ >+/*-------------------------------------------------------------------*/ >+/* Force a manual status refresh/update (DANGEROUS!) */ >+/*-------------------------------------------------------------------*/ >+int update_status_scsitape( DEVBLK *dev ) // (external tmh call) >+{ >+ // * * WARNING! * * >+ >+ // PROGRAMMING NOTE: do NOT call this function indiscriminately, >+ // as doing so COULD cause improper functioning of the guest o/s! >+ >+ // How? Simple: if there's already a tape job running on the guest >+ // using the tape drive and we just so happen to request a status >+ // update at the precise moment a guest i/o encounters a tapemark, >+ // it's possible for US to receive the "tapemark" status and thus >+ // cause the guest to end up NOT SEEING the tapemark! Therefore, >+ // you should ONLY call this function whenever the current status >+ // indicates there's no tape mounted. If the current status says >+ // there *is* a tape mounted, you must NOT call this function! >+ >+ // If the current status says there's a tape mounted and the user >+ // knows this to be untrue (e.g. they manually unloaded it maybe) >+ // then to kick off the auto-scsi-mount thread they must manually >+ // issue the 'devinit' command themselves. We CANNOT presume that >+ // a "mounted" status is bogus. We can ONLY safely presume that a >+ // "UNmounted" status may possibly be bogus. Thus we only ask for >+ // a status refresh if the current status is "not mounted" but we >+ // purposely do NOT force a refresh if the status is "mounted"!! >+ >+ if ( STS_NOT_MOUNTED( dev ) ) // (if no tape mounted) >+ int_scsi_status_update( dev, 0 ); // (then probably safe) >+ >+ return 0; >+} /* end function update_status_scsitape */ >+ >+/*-------------------------------------------------------------------*/ > /* Update SCSI tape status (and display it if CCW tracing is active) */ > /*-------------------------------------------------------------------*/ >-void update_status_scsitape( DEVBLK* dev, int mountstat_only ) >+void int_scsi_status_update( DEVBLK* dev, int mountstat_only ) // (internal call) > { > create_automount_thread( dev ); // (only if needed of course) > >@@ -1350,15 +1999,18 @@ void update_status_scsitape( DEVBLK* dev > if ( STS_EOD (dev) ) strlcat ( buf, " END-OF-DATA" , sizeof(buf) ); > if ( STS_WR_PROT (dev) ) strlcat ( buf, " WRITE-PROTECT", sizeof(buf) ); > >+ if ( STS_BOT(dev) ) >+ dev->eotwarning = 0; >+ > logmsg ( _("HHCTA023I %s\n"), buf ); > } > >-} /* end function update_status_scsitape */ >+} /* end function int_scsi_status_update */ > > /*-------------------------------------------------------------------*/ > /* ASYNCHRONOUS TAPE OPEN */ > /* SCSI tape tape-mount monitoring thread (monitors for tape mounts) */ >-/* Auto-started by 'update_status_scsitape' when it notices there is */ >+/* Auto-started by 'int_scsi_status_update' when it notices there is */ > /* no tape mounted on whatever device it's checking the status of, */ > /* or by the ReqAutoMount function for unsatisfied mount requests. */ > /*-------------------------------------------------------------------*/ >@@ -1398,6 +2050,8 @@ void create_automount_thread( DEVBLK* de > } > > /*-------------------------------------------------------------------*/ >+/* ASYNCHRONOUS TAPE OPEN */ >+/*-------------------------------------------------------------------*/ > /* AUTO_SCSI_MOUNT thread... */ > /*-------------------------------------------------------------------*/ > void *scsi_tapemountmon_thread( void *db ) >@@ -1456,7 +2110,7 @@ void *scsi_tapemountmon_thread( void *db > > // Retrieve the current status... > >- update_status_scsitape( dev, 0 ); >+ int_scsi_status_update( dev, 0 ); > > obtain_lock( &dev->stape_getstat_lock ); > >@@ -1572,4 +2226,58 @@ void *scsi_tapemountmon_thread( void *db > > } /* end function scsi_tapemountmon_thread */ > >+/*-------------------------------------------------------------------*/ >+/* shutdown_worker_threads... */ >+/*-------------------------------------------------------------------*/ >+void shutdown_worker_threads( DEVBLK *dev ) >+{ >+ while ( dev->stape_getstat_tid || dev->stape_mountmon_tid ) >+ { >+ dev->stape_threads_exit = 1; // (always each loop) >+ broadcast_condition( &dev->stape_exit_cond ); >+ broadcast_condition( &dev->stape_getstat_cond ); >+ timed_wait_condition_relative_usecs >+ ( >+ &dev->stape_exit_cond, // ptr to condition to wait on >+ &dev->stape_getstat_lock, // ptr to controlling lock (must be held!) >+ 25000, // max #of microseconds to wait >+ NULL // ptr to relative tod value (may be NULL) >+ ); >+ } >+} >+ >+/*-------------------------------------------------------------------*/ >+/* Tell driver (if needed) what a BOT position looks like... */ >+/*-------------------------------------------------------------------*/ >+void define_BOT_pos( DEVBLK *dev ) >+{ >+#ifdef _MSVC_ >+ >+ // PROGRAMMING NOTE: Need to tell 'w32stape.c' here the >+ // information it needs to detect physical BOT (load-point). >+ >+ // This is not normally needed as most drivers determine >+ // it for themselves based on the type (manufacturer/model) >+ // of tape drive being used, but since I haven't added the >+ // code to 'w32stape.c' to do that yet (involves talking >+ // directly to the SCSI device itself) we thus, for now, >+ // need to pass that information directly to 'w32stape.c' >+ // ourselves... >+ >+ U32 msk = 0xFF3FFFFF; // (3480/3490 default) >+ U32 bot = 0x01000000; // (3480/3490 default) >+ >+ if ( dev->stape_blkid_32 ) >+ { >+ msk = 0xFFFFFFFF; // (3590 default) >+ bot = 0x00000000; // (3590 default) >+ } >+ >+ VERIFY( 0 == w32_define_BOT( dev->fd, msk, bot ) ); >+ >+#else >+ UNREFERENCED(dev); >+#endif // _MSVC_ >+} >+ > #endif // defined(OPTION_SCSI_TAPE) >diff -Naupr hercules-3.05/scsitape.h hercules-20070717/scsitape.h >--- hercules-3.05/scsitape.h 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/scsitape.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > // SCSITAPE.H -- Hercules SCSI tape handling module > // > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under >-// the Q Public License (http://www.conmicro.cx/hercules/herclic.html) >+// the Q Public License (http://www.hercules-390.org/herclic.html) > // as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > // >@@ -12,9 +12,22 @@ > // > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: scsitape.h,v 1.17 2007/06/23 00:04:15 ivan Exp $ >+// $Id: scsitape.h,v 1.20 2008/03/25 11:41:31 fish Exp $ > // > // $Log: scsitape.h,v $ >+// Revision 1.20 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.19 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// >+// Revision 1.18 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// > // Revision 1.17 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -30,24 +43,44 @@ > #include "tapedev.h" > #include "w32stape.h" > >+// External TMH-vector calls... >+ >+extern int update_status_scsitape ( DEVBLK *dev ); // (via "generic" vector) > extern int open_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int finish_scsitape_open ( DEVBLK *dev, BYTE *unitstat, BYTE code ); > extern void close_scsitape ( DEVBLK *dev ); > extern int read_scsitape ( DEVBLK *dev, BYTE *buf, BYTE *unitstat, BYTE code ); > extern int write_scsitape ( DEVBLK *dev, BYTE *buf, U16 len, BYTE *unitstat, BYTE code ); >-extern int write_scsimark ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern int erg_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern int dse_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern int fsb_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int rewind_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); > extern int bsb_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern int fsf_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int fsb_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); > extern int bsf_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern int rewind_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern void rewind_unload_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int fsf_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int write_scsimark ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int sync_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int dse_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern int erg_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); > extern int is_tape_mounted_scsitape ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern int force_status_update ( DEVBLK *dev ); >-extern int finish_scsitape_open ( DEVBLK *dev, BYTE *unitstat, BYTE code ); >-extern void update_status_scsitape ( DEVBLK *dev, int mountstat_only ); >-extern void *scsi_tapemountmon_thread ( void *devblk ); >+extern int passedeot_scsitape ( DEVBLK *dev ); >+extern int readblkid_scsitape ( DEVBLK* dev, BYTE* logical, BYTE* physical ); >+extern int locateblk_scsitape ( DEVBLK* dev, U32 blockid, BYTE *unitstat, BYTE code ); >+ >+// Internal functions... >+ >+extern void int_scsi_rewind_unload( DEVBLK *dev, BYTE *unitstat, BYTE code ); >+extern void int_scsi_status_update( DEVBLK *dev, int mountstat_only ); >+extern int int_write_scsimark ( DEVBLK *dev ); >+ >+extern void blockid_emulated_to_actual( DEVBLK *dev, BYTE *emu_blkid, BYTE *act_blkid ); >+extern void blockid_actual_to_emulated( DEVBLK *dev, BYTE *act_blkid, BYTE *emu_blkid ); >+ >+extern void blockid_32_to_22( BYTE *in_32blkid, BYTE *out_22blkid ); >+extern void blockid_22_to_32( BYTE *in_22blkid, BYTE *out_32blkid ); >+ >+extern void create_automount_thread( DEVBLK* dev ); >+extern void *scsi_tapemountmon_thread( void* devblk ); >+extern void shutdown_worker_threads( DEVBLK *dev ); >+extern void define_BOT_pos( DEVBLK *dev ); > > // PROGRAMMING NOTE: I'm not sure of what the the actual/proper value > // should be (or is) for the following value but I've coded what seems >diff -Naupr hercules-3.05/shared.c hercules-20070717/shared.c >--- hercules-3.05/shared.c 2007-06-23 14:58:06.000000000 +0200 >+++ hercules-20070717/shared.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,9 +1,12 @@ > /* SHARED.C (c)Copyright Greg Smith, 2002-2007 */ > /* Shared Device Server */ > >-// $Id: shared.c,v 1.36 2007/06/23 00:04:15 ivan Exp $ >+// $Id: shared.c,v 1.37 2008/03/29 08:36:46 fish Exp $ > // > // $Log: shared.c,v $ >+// Revision 1.37 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// > // Revision 1.36 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -2042,6 +2045,7 @@ int off; > SHRD_SET_HDR (hdr, 0, CSW_CE | CSW_DE, dev->devnum, id, dev->numsense); > serverSend (dev, ix, hdr, dev->sense, dev->numsense); > memset (dev->sense, 0, sizeof(dev->sense)); >+ dev->sns_pending = 0; > break; > > case SHRD_QUERY: >diff -Naupr hercules-3.05/sie.c hercules-20070717/sie.c >--- hercules-3.05/sie.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/sie.c 2008-09-03 13:07:48.000000000 +0200 >@@ -10,9 +10,18 @@ > > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: sie.c,v 1.105 2007/06/23 00:04:15 ivan Exp $ >+// $Id: sie.c,v 1.108 2008/04/10 10:28:03 bernard Exp $ > // > // $Log: sie.c,v $ >+// Revision 1.108 2008/04/10 10:28:03 bernard >+// Allign instruction executing to real instructions (12 unrolled instead of 8) >+// >+// Revision 1.107 2008/04/09 09:03:58 bernard >+// EXRL instruction implementation >+// >+// Revision 1.106 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// > // Revision 1.105 2007/06/23 00:04:15 ivan > // Update copyright notices to include current year (2007) > // >@@ -905,18 +914,23 @@ int n; > GUESTREGS->ip = GUESTREGS->inst; > > /* Update interception parameters in the state descriptor */ >- if(GUESTREGS->ip[0] != 0x44) >- { >- if(!GUESTREGS->instinvalid) >- memcpy(STATEBK->ipa, GUESTREGS->ip, ILC(GUESTREGS->ip[0])); >- } >- else >+ if(GUESTREGS->ip[0] == 0x44 >+#if defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY) >+ || (GUESTREGS->ip[0] == 0xc6 && !(GUESTREGS->ip[1] & 0x0f)) >+#endif /*defined(FEATURE_EXECUTE_EXTENSIONS_FACILITY)*/ >+ ) > { > int exilc; > STATEBK->f |= SIE_F_EX; > exilc = ILC(GUESTREGS->exinst[0]); > memcpy(STATEBK->ipa, GUESTREGS->exinst, exilc); > } >+ else >+ { >+ if(!GUESTREGS->instinvalid) >+ memcpy(STATEBK->ipa, GUESTREGS->ip, ILC(GUESTREGS->ip[0])); >+ } >+ > } > > } >@@ -1017,14 +1031,12 @@ int ARCH_DEP(run_sie) (REGS *regs) > SET_AEA_MODE(GUESTREGS); > > { >- struct timespec waittime; >- struct timeval now; >- >- gettimeofday(&now, NULL); >- waittime.tv_sec = now.tv_sec; >- waittime.tv_nsec = ((now.tv_usec + 3333) * 1000); >+ struct timespec waittime; >+ U64 now = host_tod(); >+ waittime.tv_sec = now / 1000000; >+ waittime.tv_nsec = ((now % 1000000) + 3333) * 1000; > #ifdef OPTION_MIPS_COUNTING >- regs->waittod = hw_clock(); >+ regs->waittod = now; > #endif > sysblk.waiting_mask |= regs->cpubit; > sysblk.intowner = LOCK_OWNER_NONE; >@@ -1035,7 +1047,7 @@ int ARCH_DEP(run_sie) (REGS *regs) > sysblk.intowner = regs->cpuad; > sysblk.waiting_mask ^= regs->cpubit; > #ifdef OPTION_MIPS_COUNTING >- regs->waittime += hw_clock() - regs->waittod; >+ regs->waittime += host_tod() - regs->waittod; > regs->waittod = 0; > #endif > } >@@ -1074,14 +1086,18 @@ int ARCH_DEP(run_sie) (REGS *regs) > UNROLLED_EXECUTE(GUESTREGS); > UNROLLED_EXECUTE(GUESTREGS); > UNROLLED_EXECUTE(GUESTREGS); >+ UNROLLED_EXECUTE(GUESTREGS); >+ UNROLLED_EXECUTE(GUESTREGS); >+ UNROLLED_EXECUTE(GUESTREGS); > >- GUESTREGS->instcount += 8; >+ GUESTREGS->instcount += 12; > > UNROLLED_EXECUTE(GUESTREGS); > UNROLLED_EXECUTE(GUESTREGS); > UNROLLED_EXECUTE(GUESTREGS); > UNROLLED_EXECUTE(GUESTREGS); > UNROLLED_EXECUTE(GUESTREGS); >+ UNROLLED_EXECUTE(GUESTREGS); > > } while( likely(!SIE_I_HOST(regs) > && GUESTREGS->siebk->v==oldv >diff -Naupr hercules-3.05/stack.c hercules-20070717/stack.c >--- hercules-3.05/stack.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/stack.c 2008-09-03 13:07:48.000000000 +0200 >@@ -4,7 +4,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: stack.c,v 1.84 2007/06/23 00:04:16 ivan Exp $ >+// $Id: stack.c,v 1.89 2008/04/11 14:29:28 bernard Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements the linkage stack functions of ESA/390 */ >@@ -25,6 +25,31 @@ > /*-------------------------------------------------------------------*/ > > // $Log: stack.c,v $ >+// Revision 1.89 2008/04/11 14:29:28 bernard >+// Integrate regs->exrl into base Hercules code. >+// >+// Revision 1.88 2008/04/09 07:38:58 bernard >+// Allign to Rogers terminal ;-) >+// >+// Revision 1.87 2008/04/08 17:15:10 bernard >+// Added execute relative long instruction >+// >+// Revision 1.86 2008/03/01 00:00:34 ptl00 >+// Fix TRAP in z/Arch mode >+// >+// Revision 1.85 2008/02/12 18:23:39 jj >+// 1. SPKA was missing protection check (PIC04) because >+// AIA regs were not purged. >+// >+// 2. BASR with branch trace and PIC16, the pgm old was pointing >+// 2 bytes before the BASR. >+// >+// 3. TBEDR , TBDR using R1 as source, should be R2. >+// >+// 4. PR with page crossing stack (1st page invalid) and PSW real >+// in stack, missed the PIC 11. Fixed by invoking abs_stck_addr >+// for previous stack entry descriptor before doing the load_psw. >+// > // Revision 1.84 2007/06/23 00:04:16 ivan > // Update copyright notices to include current year (2007) > // >@@ -335,18 +360,19 @@ int i; > } > > /* Load the Trap Control Block Address in gr15 */ >- regs->GR_L(15) = duct11 & DUCT11_TCBA; >+#if defined(FEATURE_ESAME) >+ if(regs->psw.amode64) >+ regs->GR(15) = duct11 & DUCT11_TCBA & 0x00000000FFFFFFFF; >+ else >+#endif /*defined(FEATURE_ESAME)*/ >+ regs->GR_L(15) = duct11 & DUCT11_TCBA; > > /* Ensure psw.IA is set */ > SET_PSW_IA(regs); > > /* Set the Breaking Event Address Register */ >- SET_BEAR_REG(regs, regs->ip - ((trap_is_trap4 || regs->execflag) ? 4 : 2)); >- >- /* Set the Trap program address as a 31 bit instruction address */ >-#if defined(FEATURE_ESAME) >- regs->psw.amode64 = 0; >-#endif /*defined(FEATURE_ESAME)*/ >+ SET_BEAR_REG(regs, regs->ip - >+ (trap_is_trap4 ? 4 : regs->execflag ? regs->exrl ? 6 : 4 : 2)); > regs->psw.amode = 1; > regs->psw.AMASK = AMASK31; > UPD_PSW_IA(regs, trap_ia); >@@ -1395,6 +1421,15 @@ VADR lsep; > > #endif /*defined(FEATURE_ESAME)*/ > >+ /* [5.12.4.4] Pass back the absolute address of the entry >+ descriptor of the preceding linkage stack entry. The >+ next entry size field of this entry will be cleared on >+ successful completion of the PR instruction */ >+ *lsedap = ARCH_DEP(abs_stack_addr) (lsep, regs, ACCTYPE_WRITE); >+ >+ /* [5.12.4.5] Update CR15 to point to the previous entry */ >+ regs->CR(15) = lsep & CR15_LSEA; >+ > /* Load new PSW using the bytes extracted from the stack entry */ > /* The rc will be checked by calling routine for PIC 06 */ > *rc = ARCH_DEP(load_psw) (regs, newpsw); >@@ -1408,15 +1443,6 @@ VADR lsep; > /* restore PER masks which could have been wiped out by load_psw */ > SET_IC_MASK(regs); > >- /* [5.12.4.4] Pass back the absolute address of the entry >- descriptor of the preceding linkage stack entry. The >- next entry size field of this entry will be cleared on >- successful completion of the PR instruction */ >- *lsedap = ARCH_DEP(abs_stack_addr) (lsep, regs, ACCTYPE_WRITE); >- >- /* [5.12.4.5] Update CR15 to point to the previous entry */ >- regs->CR(15) = lsep & CR15_LSEA; >- > #ifdef STACK_DEBUG > logmsg (_("stack: CR15=" F_CREG "\n"), regs->CR(15)); > #endif /*STACK_DEBUG*/ >diff -Naupr hercules-3.05/stamp-h.in hercules-20070717/stamp-h.in >--- hercules-3.05/stamp-h.in 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/stamp-h.in 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+timestamp >diff -Naupr hercules-3.05/tapeccws.c hercules-20070717/tapeccws.c >--- hercules-3.05/tapeccws.c 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tapeccws.c 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,4645 @@ >+/* TAPECCWS.C (c) Copyright Roger Bowler, 1999-2007 */ >+/* ESA/390 Tape Device Handler */ >+ >+/* Original Author: Roger Bowler */ >+/* Prime Maintainer: Ivan Warren */ >+/* Secondary Maintainer: "Fish" (David B. Trout) */ >+ >+// $Id: tapeccws.c,v 1.15 2008/07/08 05:35:51 fish Exp $ >+ >+/*-------------------------------------------------------------------*/ >+/* This module contains the CCW handling functions for tape devices. */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Five emulated tape formats are supported: */ >+/* */ >+/* 1. AWSTAPE This is the format used by the P/390. */ >+/* The entire tape is contained in a single flat file. */ >+/* A tape block consists of one or more block segments. */ >+/* Each block segment is preceded by a 6-byte header. */ >+/* Files are separated by tapemarks, which consist */ >+/* of headers with zero block length. */ >+/* AWSTAPE files are readable and writable. */ >+/* */ >+/* Support for AWSTAPE is in the "AWSTAPE.C" member. */ >+/* */ >+/* */ >+/* 2. OMATAPE This is the Optical Media Attach device format. */ >+/* Each physical file on the tape is represented by */ >+/* a separate flat file. The collection of files that */ >+/* make up the physical tape is obtained from an ASCII */ >+/* text file called the "tape description file", whose */ >+/* file name is always tapes/xxxxxx.tdf (where xxxxxx */ >+/* is the volume serial number of the tape). */ >+/* Three formats of tape files are supported: */ >+/* * FIXED files contain fixed length EBCDIC blocks */ >+/* with no headers or delimiters. The block length */ >+/* is specified in the TDF file. */ >+/* * TEXT files contain variable length ASCII blocks */ >+/* delimited by carriage return line feed sequences. */ >+/* The data is translated to EBCDIC by this module. */ >+/* * HEADER files contain variable length blocks of */ >+/* EBCDIC data prefixed by a 16-byte header. */ >+/* The TDF file and all of the tape files must reside */ >+/* reside under the same directory which is normally */ >+/* on CDROM but can be on disk. */ >+/* OMATAPE files are supported as read-only media. */ >+/* */ >+/* OMATAPE tape Support is in the "OMATAPE.C" member. */ >+/* */ >+/* */ >+/* 3. SCSITAPE This format allows reading and writing of 4mm or */ >+/* 8mm DAT tape, 9-track open-reel tape, or 3480-type */ >+/* cartridge on an appropriate SCSI-attached drive. */ >+/* All SCSI tapes are processed using the generalized */ >+/* SCSI tape driver (st.c) which is controlled using */ >+/* the MTIOCxxx set of IOCTL commands. */ >+/* PROGRAMMING NOTE: the 'tape' portability macros for */ >+/* physical (SCSI) tapes MUST be used for all tape i/o! */ >+/* */ >+/* SCSI tape Support is in the "SCSITAPE.C" member. */ >+/* */ >+/* */ >+/* 4. HET This format is based on the AWSTAPE format but has */ >+/* been extended to support compression. Since the */ >+/* basic file format has remained the same, AWSTAPEs */ >+/* can be read/written using the HET routines. */ >+/* */ >+/* Support for HET is in the "HETTAPE.C" member. */ >+/* */ >+/* */ >+/* 5. FAKETAPE This is the format used by Fundamental Software */ >+/* on their FLEX-ES systems. It it similar to the AWS */ >+/* format. The entire tape is contained in a single */ >+/* flat file. A tape block is preceded by a 12-ASCII- */ >+/* hex-characters header which indicate the size of */ >+/* the previous and next blocks. Files are separated */ >+/* by tapemarks which consist of headers with a zero */ >+/* current block length. FakeTapes are both readable */ >+/* and writable. */ >+/* */ >+/* Support for FAKETAPE is in the "FAKETAPE.C" member. */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Additional credits: */ >+/* 3480 commands contributed by Jan Jaeger */ >+/* Sense byte improvements by Jan Jaeger */ >+/* 3480 Read Block ID and Locate CCWs by Brandon Hill */ >+/* Unloaded tape support by Brandon Hill v209*/ >+/* HET format support by Leland Lucius v209*/ >+/* JCS - minor changes by John Summerfield 2003*/ >+/* PERFORM SUBSYSTEM FUNCTION / CONTROL ACCESS support by */ >+/* Adrian Trenkwalder (with futher enhancements by Fish) */ >+/* **INCOMPLETE** 3590 support by Fish (David B. Trout) */ >+/*-------------------------------------------------------------------*/ >+ >+/*-------------------------------------------------------------------*/ >+/* Reference information: */ >+/* SC53-1200 S/370 and S/390 Optical Media Attach/2 User's Guide */ >+/* SC53-1201 S/370 and S/390 Optical Media Attach/2 Technical Ref */ >+/* SG24-2506 IBM 3590 Tape Subsystem Technical Guide */ >+/* GA32-0331 IBM 3590 Hardware Reference */ >+/* GA32-0329 IBM 3590 Introduction and Planning Guide */ >+/* SG24-2594 IBM 3590 Multiplatform Implementation */ >+/* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference */ >+/* GA32-0127 IBM 3490E Hardware Reference */ >+/* GC35-0152 EREP Release 3.5.0 Reference */ >+/* SA22-7204 ESA/390 Common I/O-Device Commands */ >+/* Flex FakeTape format (http://preview.tinyurl.com/67rgnp) */ >+/*-------------------------------------------------------------------*/ >+ >+// $Log: tapeccws.c,v $ >+// Revision 1.15 2008/07/08 05:35:51 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.14 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.13 2008/05/28 16:46:29 fish >+// Misleading VTAPE support renamed to AUTOMOUNT instead and fixed and enhanced so that it actually WORKS now. >+// >+// Revision 1.12 2008/05/25 06:36:43 fish >+// VTAPE automount support (0x4B + 0xE4) >+// >+// Revision 1.11 2008/05/22 19:25:58 fish >+// Flex FakeTape support >+// >+// Revision 1.10 2008/03/31 13:55:43 rbowler >+// Reinstate lost comments; cosmetic changes to comments and indentation >+// >+// Revision 1.9 2008/03/31 12:33:46 rbowler >+// Reinstate original code to fix warning: implicit declaration of function `min' >+// >+// Revision 1.8 2008/03/31 12:25:24 rbowler >+// tapeccws.c:613: warning: unused parameter 'ccwseq' >+// >+// Revision 1.7 2008/03/31 03:59:05 fish >+// Fix SCSI tape i/o performance: now 10x faster! >+// >+// Revision 1.6 2008/03/30 02:51:33 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.5 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.4 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.3 2008/03/27 07:14:16 fish >+// SCSI MODS: groundwork: part 3: final shuffling around. >+// Moved functions from one module to another and resequenced >+// functions within each. NO CODE WAS ACTUALLY CHANGED. >+// Next commit will begin the actual changes. >+// >+// Revision 1.2 2008/03/26 07:23:51 fish >+// SCSI MODS part 2: split tapedev.c: aws, het, oma processing moved >+// to separate modules, CCW processing moved to separate module. >+// >+// Revision 1.1 2008/03/25 18:42:36 fish >+// AWS, HET and OMA processing logic moved to separate modules. >+// Tape device CCW processing logic also moved to separate module. >+// (tapedev.c was becoming too large and unwieldy) >+// >+// Revision 1.133 2008/03/13 01:44:17 kleonard >+// Fix residual read-only setting for tape device >+// >+// Revision 1.132 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.131 2008/03/04 00:25:25 ivan >+// Ooops.. finger check on 8809 case for numdevid.. Thanks Roger ! >+// >+// Revision 1.130 2008/03/02 12:00:04 ivan >+// Re-disable Sense ID on 3410, 3420, 8809 : report came in that it breaks MTS >+// >+// Revision 1.129 2007/12/14 17:48:52 rbowler >+// Enable SENSE ID CCW for 2703,3410,3420 >+// >+// Revision 1.128 2007/11/29 03:36:40 fish >+// Re-sequence CCW opcode 'case' statements to be in ascending order. >+// COSMETIC CHANGE ONLY. NO ACTUAL LOGIC WAS CHANGED. >+// >+// Revision 1.127 2007/11/13 15:10:52 rbowler >+// fsb_awstape support for segmented blocks >+// >+// Revision 1.126 2007/11/11 20:46:50 rbowler >+// read_awstape support for segmented blocks >+// >+// Revision 1.125 2007/11/09 14:59:34 rbowler >+// Move misplaced comment and restore original programming style >+// >+// Revision 1.124 2007/11/02 16:04:15 jmaynard >+// Removing redundant #if !(defined OPTION_SCSI_TAPE). >+// >+// Revision 1.123 2007/09/01 06:32:24 fish >+// Surround 3590 SCSI test w/#ifdef (OPTION_SCSI_TAPE) >+// >+// Revision 1.122 2007/08/26 14:37:17 fish >+// Fix missed unfixed 31 Aug 2006 non-SCSI tape Locate bug >+// >+// Revision 1.121 2007/07/24 23:06:32 fish >+// Force command-reject for 3590 Medium Sense and Mode Sense >+// >+// Revision 1.120 2007/07/24 22:54:49 fish >+// (comment changes only) >+// >+// Revision 1.119 2007/07/24 22:46:09 fish >+// Default to --blkid-32 and --no-erg for 3590 SCSI >+// >+// Revision 1.118 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// >+// Revision 1.117 2007/07/24 21:57:29 fish >+// Fix Win32 SCSI tape "Locate" and "ReadBlockId" SNAFU >+// >+// Revision 1.116 2007/06/23 00:04:18 ivan >+// Update copyright notices to include current year (2007) >+// >+// Revision 1.115 2007/04/06 15:40:25 fish >+// Fix Locate Block & Read BlockId for SCSI tape broken by 31 Aug 2006 preliminary-3590-support change >+// >+// Revision 1.114 2007/02/25 21:10:44 fish >+// Fix het_locate to continue on tapemark >+// >+// Revision 1.113 2007/02/03 18:58:06 gsmith >+// Fix MVT tape CMDREJ error >+// >+// Revision 1.112 2006/12/28 03:04:17 fish >+// PR# tape/100: Fix crash in "open_omatape()" in tapedev.c if bad filespec entered in OMA (TDF) file >+// >+// Revision 1.111 2006/12/11 17:25:59 rbowler >+// Change locblock from long to U32 to correspond with dev->blockid >+// >+// Revision 1.110 2006/12/08 09:43:30 jj >+// Add CVS message log >+// >+/*-------------------------------------------------------------------*/ >+ >+#include "hstdinc.h" >+#include "hercules.h" /* need Hercules control blocks */ >+#include "tapedev.h" /* Main tape handler header file */ >+ >+/*-------------------------------------------------------------------*/ >+ >+//#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) >+ >+#ifdef ENABLE_TRACING_STMTS >+ #if !defined(DEBUG) >+ #warning DEBUG required for ENABLE_TRACING_STMTS >+ #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) >+#else >+ #undef TRACE >+ #undef ASSERT >+ #undef VERIFY >+ #define TRACE 1 ? ((void)0) : logmsg >+ #define ASSERT(a) >+ #define VERIFY(a) ((void)(a)) >+#endif >+ >+/*-------------------------------------------------------------------*/ >+/* (forward declarations needed by below tables) */ >+/*-------------------------------------------------------------------*/ >+ >+extern BYTE TapeCommands3410 []; >+extern BYTE TapeCommands3420 []; >+extern BYTE TapeCommands3422 []; >+extern BYTE TapeCommands3430 []; >+extern BYTE TapeCommands3480 []; >+extern BYTE TapeCommands3490 []; >+extern BYTE TapeCommands3590 []; >+extern BYTE TapeCommands9347 []; >+ >+extern TapeSenseFunc build_sense_3410; >+extern TapeSenseFunc build_sense_3420; >+ #define build_sense_3422 build_sense_3420 >+ #define build_sense_3430 build_sense_3420 >+extern TapeSenseFunc build_sense_3480_etal; >+extern TapeSenseFunc build_sense_3490; >+extern TapeSenseFunc build_sense_3590; >+extern TapeSenseFunc build_sense_Streaming; >+ >+/*-------------------------------------------------------------------*/ >+/* TapeDevtypeList */ >+/* Format: */ >+/* */ >+/* A: Supported Device Type, */ >+/* B: Command table index, (TapeCommandTable) */ >+/* C: UC on RewUnld, (1/0 = true/false) */ >+/* D: CUE on RewUnld, (1/0 = true/false) */ >+/* E: Sense Build Function table index (TapeSenseTable) */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+int TapeDevtypeList [] = >+{ >+ /* A B C D E */ >+ 0x3410, 0, 1, 0, 0, >+ 0x3411, 0, 1, 0, 0, >+ 0x3420, 1, 1, 1, 1, >+ 0x3422, 2, 0, 0, 2, >+ 0x3430, 3, 0, 0, 3, >+ 0x3480, 4, 0, 0, 4, >+ 0x3490, 5, 0, 0, 5, >+ 0x3590, 6, 0, 0, 6, >+ 0x9347, 7, 0, 0, 7, >+ 0x9348, 7, 0, 0, 7, >+ 0x8809, 7, 0, 0, 7, >+ 0x0000, 0, 0, 0, 0 /* (end of table marker) */ >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* TapeCommandTable */ >+/* */ >+/* Specific supported CCW codes for each device type. Index is */ >+/* fetched by TapeCommandIsValid from "TapeDevtypeList[ n+1 ]". */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+BYTE* TapeCommandTable [] = >+{ >+ TapeCommands3410, /* 0 3410/3411 */ >+ TapeCommands3420, /* 1 3420 */ >+ TapeCommands3422, /* 2 3422 */ >+ TapeCommands3430, /* 3 3430 */ >+ TapeCommands3480, /* 4 3480 (Maybe all 38K Tapes) */ >+ TapeCommands3490, /* 5 3490 */ >+ TapeCommands3590, /* 6 3590 */ >+ TapeCommands9347, /* 7 9347 (Maybe all streaming tapes) */ >+ NULL >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* TapeSenseTable */ >+/* */ >+/* SENSE function routing table. Index is fetched by 'build_senseX' */ >+/* function from table entry "TapeDevtypeList[ i+4 ]". */ >+/*-------------------------------------------------------------------*/ >+ >+TapeSenseFunc* TapeSenseTable [] = >+{ >+ build_sense_3410, /* 0 3410/3411 */ >+ build_sense_3420, /* 1 3420 */ >+ build_sense_3422, /* 2 3422 */ >+ build_sense_3430, /* 3 3430 */ >+ build_sense_3480_etal, /* 4 3480 (Maybe all 38K Tapes) */ >+ build_sense_3490, /* 5 3490 */ >+ build_sense_3590, /* 6 3590 */ >+ build_sense_Streaming, /* 7 9347 (Maybe all streaming tapes) */ >+ NULL >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* CCW opcode Validity Tables by Device Type */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* The below tables are used by 'TapeCommandIsValid' to determine */ >+/* if a CCW code is initially valid or not for the given device. */ >+/* */ >+/* 0: Command is NOT valid */ >+/* * 1: Command is Valid, Tape MUST be loaded */ >+/* * 2: Command is Valid, Tape NEED NOT be loaded */ >+/* 3: Command is Valid, But is a NO-OP (return CE+DE now) */ >+/* 4: Command is Valid, But is a NO-OP (for virtual tapes) */ >+/* * 5: Command is Valid, Tape MUST be loaded (add DE to status) */ >+/* */ >+/* * Note that CCWs codes marked as valid might still get rejected */ >+/* upon more stringent validity testing done by the actual CCW */ >+/* processing function itself. */ >+/* */ >+/* SOURCES: */ >+/* */ >+/* GX20-1850-2 "S/370 Reference Summary" (3410/3411/3420) */ >+/* GX20-0157-1 "370/XA Reference Summary" (3420/3422/3430/3480) */ >+/* GA33-1510-0 "S/370 Model 115 FC" (3410/3411) */ >+/* */ >+/* Ivan Warren, 2003-02-24 */ >+/*-------------------------------------------------------------------*/ >+ >+BYTE TapeCommands3410 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 0,1,1,1,2,0,0,5,0,0,0,0,1,0,0,5, /* 00 */ >+ 0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >+ 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 20 */ >+ 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 30 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 40 */ >+ 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 60 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >+ 0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* A0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* B0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* C0 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >+ 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands3420 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >+ 0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >+ 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 20 */ >+ 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 30 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 40 */ >+ 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 60 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 80 */ >+ 0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* A0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* B0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* C0 */ >+ 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >+ 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >+ 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands3422 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 10 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 20 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 30 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 40 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, /* 80 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ >+ 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >+ 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >+ 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands3430 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >+ 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 20 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 30 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 40 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ >+ 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >+ 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >+ 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands3480 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 3,1,1,1,2,0,0,5,0,0,0,0,1,0,0,5, /* 00 */ >+ 0,0,1,3,0,0,0,1,0,0,0,0,0,0,0,1, /* 10 */ >+ 0,0,1,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 20 */ >+ 0,0,0,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 30 */ >+ 0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1, /* 40 */ >+ 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0, /* 50 */ >+ 0,0,0,3,2,0,0,0,0,0,0,3,0,0,0,0, /* 60 */ >+ 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >+ 0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,2, /* 90 */ >+ 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,2, /* A0 */ >+ 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* B0 */ >+ 0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0, /* C0 */ >+ 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* D0 */ >+ 0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands3490 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 3,1,1,1,2,0,0,5,0,0,0,0,1,0,0,5, /* 00 */ >+ 0,0,1,3,0,0,0,1,0,0,0,0,0,0,0,1, /* 10 */ >+ 0,0,1,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 20 */ >+ 0,0,0,3,2,0,0,1,0,0,0,3,0,0,2,1, /* 30 */ >+ 0,0,0,1,0,0,0,0,0,0,0,2,0,0,2,1, /* 40 */ >+ 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* 50 */ >+ 0,0,0,3,2,0,0,0,0,0,0,3,0,0,0,0, /* 60 */ >+ 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >+ 0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,2, /* 90 */ >+ 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,2, /* A0 */ >+ 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* B0 */ >+ 0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0, /* C0 */ >+ 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* D0 */ >+ 0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ >+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands3590 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 3,1,1,1,2,0,1,5,0,0,1,0,1,0,0,5, /* 00 */ >+ 0,0,1,3,0,0,0,1,0,0,0,0,0,0,0,1, /* 10 */ >+ 0,0,1,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 20 */ >+ 0,0,0,3,2,0,0,1,0,0,0,3,0,0,2,1, /* 30 */ >+ 0,0,0,1,0,0,0,0,0,0,0,2,0,0,2,1, /* 40 */ >+ 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* 50 */ >+ 0,0,1,3,2,0,0,0,0,0,0,3,0,0,0,0, /* 60 */ >+ 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >+ 0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,2, /* 90 */ >+ 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,2, /* A0 */ >+ 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* B0 */ >+ 0,0,2,2,0,0,0,2,0,0,0,0,0,0,0,2, /* C0 */ >+ 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* D0 */ >+ 0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0, /* E0 */ >+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0 /* F0 */ >+}; >+ >+BYTE TapeCommands9347 [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >+ 0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >+ 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 20 */ >+ 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 30 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 40 */ >+ 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 60 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 70 */ >+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 80 */ >+ 0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >+ 0,0,0,4,2,0,0,0,0,0,0,4,0,0,0,0, /* A0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* B0 */ >+ 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* C0 */ >+ 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >+ 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >+ 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0 /* F0 */ >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* Ivan Warren 20040227 */ >+/* */ >+/* This table is used by channel.c to determine if a CCW code */ >+/* is an immediate command or not. */ >+/* */ >+/* The tape is addressed in the DEVHND structure as 'DEVIMM immed' */ >+/* */ >+/* 0: ("false") Command is *NOT* an immediate command */ >+/* 1: ("true") Command *IS* an immediate command */ >+/* */ >+/* Note: An immediate command is defined as a command which returns */ >+/* CE (channel end) during initialization (that is, no data is */ >+/* actually transfered). In this case, IL is not indicated for a */ >+/* Format 0 or Format 1 CCW when IL Suppression Mode is in effect. */ >+/* */ >+/*-------------------------------------------------------------------*/ >+ >+BYTE TapeImmedCommands [256] = >+{ >+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >+ 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1, /* 00 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 20 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 30 */ >+ 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0, /* 40 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 50 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 60 */ >+ 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1, /* 70 */ /* Adrian Trenkwalder - 77 was 1 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 80 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0, /* 90 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0, /* A0 */ >+ 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1, /* B0 */ >+ 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1, /* C0 */ >+ 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1, /* D0 */ >+ 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1, /* E0 */ >+ 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1 /* F0 */ >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* TapeCommandIsValid (Ivan Warren 20030224) */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Determine if a CCW code is valid for the Device */ >+/* */ >+/* rc 0: is *NOT* valid */ >+/* rc 1: is Valid, tape MUST be loaded */ >+/* rc 2: is Valid, tape NEED NOT be loaded */ >+/* rc 3: is Valid, But is a NO-OP (Return CE+DE now) */ >+/* rc 4: is Valid, But is a NO-OP for virtual tapes */ >+/* rc 5: is Valid, Tape Must be loaded - Add DE to status */ >+/* rc 6: is Valid, Tape load attempted - but not an error */ >+/* (used for sense and no contingency allegiance exists) */ >+/* */ >+/*-------------------------------------------------------------------*/ >+int TapeCommandIsValid (BYTE code, U16 devtype, BYTE *rustat) >+{ >+int i, rc, tix = 0, devtfound = 0; >+ >+ /* >+ ** Find the D/T in the table >+ ** If not found, treat as invalid CCW code >+ */ >+ >+ *rustat = 0; >+ >+ for (i = 0; TapeDevtypeList[i] != 0; i += TAPEDEVTYPELIST_ENTRYSIZE) >+ { >+ if (TapeDevtypeList[i] == devtype) >+ { >+ devtfound = 1; >+ tix = TapeDevtypeList[i+1]; >+ >+ if (TapeDevtypeList[i+2]) >+ { >+ *rustat |= CSW_UC; >+ } >+ if (TapeDevtypeList[i+3]) >+ { >+ *rustat |= CSW_CUE; >+ } >+ break; >+ } >+ } >+ >+ if (!devtfound) >+ return 0; >+ >+ rc = TapeCommandTable[tix][code]; >+ >+ return rc; >+ >+} /* end function TapeCommandIsValid */ >+ >+ >+/*********************************************************************/ >+/*********************************************************************/ >+/** **/ >+/** MAIN TAPE CCW PROCESSING FUNCTION **/ >+/** **/ >+/*********************************************************************/ >+/*********************************************************************/ >+ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+static TAMDIR* findtamdir( int rej, int minlen, const char* pszDir ); >+#endif >+ >+void tapedev_execute_ccw (DEVBLK *dev, BYTE code, BYTE flags, >+ BYTE chained, U16 count, BYTE prevcode, int ccwseq, >+ BYTE *iobuf, BYTE *more, BYTE *unitstat, U16 *residual) >+{ >+int rc; /* Return code */ >+int len; /* Length of data block */ >+long num; /* Number of bytes to read */ >+int drc; /* code disposition */ >+BYTE rustat; /* Addl CSW stat on Rewind Unload */ >+static BYTE supvr_inhibit = 0; /* Supvr-Inhibit mode active */ >+static BYTE write_immed = 0; /* Write-Immed. mode active */ >+ >+ UNREFERENCED(ccwseq); >+ >+ /* Reset flags at start of CCW chain */ >+ if (dev->ccwseq == 0) >+ { >+ supvr_inhibit = 0; /* (reset to default mode) */ >+ write_immed = 0; /* (reset to default mode) */ >+ dev->tapssdlen = 0; /* (clear all subsys data) */ >+ } >+ >+ /* If this is a data-chained READ, then return any data remaining >+ in the buffer which was not used by the previous CCW */ >+ if (chained & CCW_FLAGS_CD) >+ { >+ if (IS_CCW_RDBACK(code)) >+ { >+ /* We don't need to move anything in this case - just set length */ >+ } >+ else >+ { >+ memmove (iobuf, iobuf + dev->curbufoff, dev->curblkrem); >+ } >+ RESIDUAL_CALC (dev->curblkrem); >+ dev->curblkrem -= num; >+ dev->curbufoff = num; >+ *unitstat = CSW_CE | CSW_DE; >+ return; >+ } >+ >+ /* Command reject if data chaining and command is not a read type */ >+ if ((flags & CCW_FLAGS_CD) && >+ !(IS_CCW_READ(code) || IS_CCW_RDBACK(code))) >+ { >+ logmsg(_("HHCTA072E Data chaining not supported for CCW %2.2X\n"), >+ code); >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ return; >+ } >+ >+ /* Command reject if command is not Read Subsystem Data command >+ if the previous one was a Perform Subsystem Function command >+ that prepared some subsystem data for subsequent reading >+ */ >+ if (0x77 == prevcode && dev->tapssdlen && 0x3E != code) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ return; >+ } >+ >+ /* Early determination of CCW validity via TapeCommandTable lookup... */ >+ >+ drc = TapeCommandIsValid (code, dev->devtype, &rustat); >+ >+ switch (drc) >+ { >+ default: /* Should NOT occur! */ >+ >+ ASSERT(0); // (fall thru to case 0 = unsupported) >+ >+ case 0: /* Unsupported CCW code for given device-type */ >+ >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ return; >+ >+ case 1: /* Valid - Tape MUST be loaded */ >+ break; >+ >+ case 2: /* Valid - Tape NEED NOT be loaded */ >+ break; >+ >+ case 3: /* Valid - But is a NO-OP (return CE+DE now) */ >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ return; >+ } >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ return; >+ >+ case 4: /* Valid, But is a NO-OP (for virtual tapes) */ >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ return; >+ } >+ >+ /* If non-virtual (SCSI) then further processing required */ >+ if (dev->tapedevt == TAPEDEVT_SCSITAPE) >+ break; >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ return; >+ >+ case 5: /* Valid - Tape MUST be loaded (add DE to status) */ >+ break; >+ } >+ // end switch (drc) >+ >+ /* Verify a tape is loaded if that is required for this CCW... */ >+ >+ if ((1 == drc || 5 == drc) && // (tape MUST be loaded?) >+ (dev->fd < 0 || TAPEDEVT_SCSITAPE == dev->tapedevt)) // (no tape loaded or non-virtual?) >+ { >+ *residual = count; >+ >+ /* Error if tape unloaded */ >+ if (!strcmp (dev->filename, TAPE_UNLOADED)) >+ { >+ build_senseX (TAPE_BSENSE_TAPEUNLOADED, dev, unitstat, code); >+ return; >+ } >+ >+ /* Open the device file if necessary */ >+ if (dev->fd < 0) >+ { >+ rc = dev->tmh->open( dev, unitstat, code ); >+ >+ if (rc < 0) /* Did open fail? */ >+ { >+ return; /* Yes, exit with unit status */ >+ } >+ } >+ >+ /* Error if tape is not loaded */ >+ if (!dev->tmh->tapeloaded( dev, unitstat, code )) >+ { >+ build_senseX (TAPE_BSENSE_TAPEUNLOADED, dev, unitstat, code); >+ return; >+ } >+ } >+ >+ /* Process depending on CCW opcode */ >+ switch (code) { >+ >+ /*---------------------------------------------------------------*/ >+ /* MODE SET (pre-3480 and earlier drives) */ >+ /*---------------------------------------------------------------*/ >+ /* Patch to no-op modeset 1 (7-track) commands - */ >+ /* causes VM problems */ >+ /* Andy Norrie 2002/10/06 */ >+ case 0x13: >+ case 0x23: >+ case 0x33: >+ case 0x3B: >+ case 0x53: >+ case 0x63: >+ case 0x6B: >+// case 0x73: // Mode Set (7-track 556/Odd/Normal) for 3420-3/5/7 >+ // with 7-track feature installed, No-op for 3420-2/4/6 >+ // and 3480, Invalid for 3422/3430, "Set Interface >+ // Identifier" for 3490 and later. NOTE: 3480 and earlier >+ // interpretation handled by command-table; 3490 and >+ // and later handled further below. >+ case 0x7B: >+ case 0x93: >+ case 0xA3: >+ case 0xAB: >+ case 0xB3: >+ case 0xBB: >+// case 0xC3: // Mode Set (9-track 1600 bpi) for models earlier than >+ // 3480, "Set Tape-Write-Immediate" for 3480 and later. >+ // NOTE: handled by command-table for all models earlier >+ // than 3480; 3480 and later handled further below. >+ case 0xCB: /* 9-track 800 bpi */ >+ case 0xD3: /* 9-track 6250 bpi */ >+ case 0xEB: /* invalid mode set issued by DOS/VS */ >+ { >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* WRITE */ >+ /*---------------------------------------------------------------*/ >+ case 0x01: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Unit check if tape is write-protected */ >+ if (dev->readonly || dev->tdparms.logical_readonly) >+ { >+ build_senseX (TAPE_BSENSE_WRITEPROTECT, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Write a block to the tape according to device type */ >+ if ((rc = dev->tmh->write( dev, iobuf, count, unitstat, code)) < 0) >+ break; // (error) >+ >+ *residual = 0; >+ >+ /* Perform flush/sync and/or set normal completion status */ >+ if (!write_immed || (rc = dev->tmh->sync( dev, unitstat, code )) == 0) >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ FORWARD (3590 only) */ >+ /*---------------------------------------------------------------*/ >+ case 0x06: >+ { >+ /* SG24-2506 IBM 3590 Tape Subsystem Technical Guide >+ >+ 5.2.1 Separate Channel Commands for IPL Read and Normal Read >+ >+ On IBM 3480/3490 tape devices there is only one Read Forward >+ CCW, the X'02' command code. This CCW is used to perform >+ not only normal read operations but also an IPL Read from >+ tape, for example, DFSMSdss Stand-Alone Restore. When the >+ CCW is used as an IPL Read, it is not subject to resetting >+ event notification, by definition. Because there is only >+ one Read Forward CCW, it cannot be subject to resetting event >+ notification on IBM 3480 and 3490 devices. >+ >+ To differentiate between an IPL Read and a normal read >+ forward operation, the X'02' command code has been redefined >+ to be the IPL Read CCW, and a new X'06' command code has been >+ defined to be the Read Forward CCW. The new Read Forward >+ CCW, X'06', is subject to resetting event notification, as >+ should be the case for normal read CCWs issued by applications >+ or other host software. >+ */ >+ >+ // PROGRAMMING NOTE: I'm not sure what they mean by "resetting >+ // event notification" above, but for now we'll just FALL THROUGH >+ // to the below IPL READ logic... >+ } >+ >+ // (purposely FALL THROUGH to below IPL READ logic for now) >+ >+ /*---------------------------------------------------------------*/ >+ /* IPL READ (non-3590) */ >+ /*---------------------------------------------------------------*/ >+ case 0x02: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Read a block from the tape according to device type */ >+ /* Exit with unit check status if read error condition */ >+ if ((len = dev->tmh->read( dev, iobuf, unitstat, code)) < 0) >+ break; // (error) >+ >+ /* Calculate number of bytes to read and residual byte count */ >+ RESIDUAL_CALC (len); >+ >+ /* Save size and offset of data not used by this CCW */ >+ dev->curblkrem = len - num; >+ dev->curbufoff = num; >+ >+ /* Exit with unit exception status if tapemark was read */ >+ if (len == 0) >+ build_senseX (TAPE_BSENSE_READTM, dev, unitstat, code); >+ else >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* CONTROL NO-OPERATION */ >+ /*---------------------------------------------------------------*/ >+ case 0x03: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* SENSE */ >+ /*---------------------------------------------------------------*/ >+ case 0x04: >+ { >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (dev->numsense); >+ >+ /* If we don't already have some sense already pre-built >+ and ready and waiting, then we'll have to build it fresh >+ for this call... Otherwise, we use whatever we already >+ have waiting for them pre-built from a previous call... >+ */ >+ if (!dev->sns_pending) >+ build_senseX (TAPE_BSENSE_UNSOLICITED, dev, unitstat, code); >+ >+ *unitstat = CSW_CE|CSW_DE; /* Need to do this ourselves as */ >+ /* we might not have gone thru */ >+ /* build_senseX... */ >+ >+ /* Copy device sense bytes to channel I/O buffer, clear >+ them for the next time, and then finally, reset the >+ Contengent Allegiance condition... */ >+ memcpy (iobuf, dev->sense, num); >+ memset (dev->sense, 0, sizeof(dev->sense)); >+ dev->sns_pending = 0; >+ >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ FORWARD (3590 only) */ >+ /*---------------------------------------------------------------*/ >+// case 0x06: >+// { >+ // (handled by case 0x02: IPL READ) >+// } >+ >+ /*---------------------------------------------------------------*/ >+ /* REWIND */ >+ /*---------------------------------------------------------------*/ >+ case 0x07: >+ { >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >+ TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_REWINDING; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Do the rewind */ >+ rc = dev->tmh->rewind( dev, unitstat, code); >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_REWINDING == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Check for error */ >+ if (rc < 0) >+ { >+ dev->fenced = 1; >+ break; >+ } >+ >+ dev->eotwarning = 0; >+ dev->fenced = 0; >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ PREVIOUS (3590) */ >+ /*---------------------------------------------------------------*/ >+ case 0x0A: >+ { >+ /* SG24-2506 IBM 3590 Tape Subsystem Technical Guide >+ >+ 5.2.2 Read Previous to Replace Read Backward: >+ >+ The ESCON-attached Magstar tape drive does not support the >+ Read Backward CCW (command code, X'0C'). It supports a new >+ Read Previous CCW that allows processing of an IBM 3590 High >+ Performance Tape Cartridge in the backward direction without >+ the performance penalties that exist with the Read Backward >+ CCW. IBM 3480 and 3490 devices had to reread the physical >+ block from the medium for each request of a logical block. >+ The Magstar tape drive retains the physical block in the >+ device buffer and satisfies any subsequent Read Previous from >+ the buffer, similar to how Read Forward operates. The Read >+ Previous CCW operates somewhat like the Read Backward CCW >+ in that it can be used to process the volumes in the backward >+ direction. It is different from the Read Backward, however, >+ because the data is transferred to the host in the same order >+ in which it was written, rather than in reverse order like >+ Read Backward. >+ */ >+ >+ /* SG24-2594 IBM 3590 Multiplatform Implementation >+ >+ 5.1.2 New and Changed Read Channel Commands >+ >+ [...] That is, the Read Backward command's data address >+ will point to the end of the storage area, while a Read >+ Previous command points to the beginning of the storage >+ area... >+ */ >+ >+ // PROGRAMMING NOTE: luckily, channel.c's buffer handling >+ // causes transparent handling of Read Backward/Reverse, >+ // so the above buffer alignment and data transfer order >+ // is not a concern for us here. >+ >+ // PROGRAMMING NOTE: until we can add support to Hercules >+ // allowing direct SCSI i/o (so that we can issue the 'Read >+ // Reverse' command directly to the SCSI device), we will >+ // simply FALL THROUGH to our existing "Read Backward" logic. >+ } >+ >+ // (purposely FALL THROUGH to the 'READ BACKWARD' logic below) >+ >+ /*---------------------------------------------------------------*/ >+ /* READ BACKWARD */ >+ /*---------------------------------------------------------------*/ >+ case 0x0C: >+ { >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Backspace to previous block according to device type */ >+ /* Exit with unit check status if error condition */ >+ if ((rc = dev->tmh->bsb( dev, unitstat, code )) < 0) >+ break; // (error) >+ >+ /* Exit with unit exception status if tapemark was sensed */ >+ if (rc == 0) >+ { >+ *residual = 0; >+ build_senseX (TAPE_BSENSE_READTM, dev, unitstat, code); >+ break; >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Now read in a forward direction the actual data block >+ we just backspaced over, and exit with unit check status >+ on any read error condition >+ */ >+ if ((len = dev->tmh->read( dev, iobuf, unitstat, code )) < 0) >+ break; // (error) >+ >+ /* Calculate number of bytes to read and residual byte count */ >+ RESIDUAL_CALC (len); >+ >+ /* Save size and offset of data not used by this CCW */ >+ dev->curblkrem = len - num; >+ dev->curbufoff = num; >+ >+ /* Backspace to previous block according to device type, >+ and exit with unit check status if error condition */ >+ if ((rc = dev->tmh->bsb( dev, unitstat, code )) < 0) >+ break; // (error) >+ >+ /* Set normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ } /* End case 0x0C: READ BACKWARD */ >+ >+ /*---------------------------------------------------------------*/ >+ /* REWIND UNLOAD */ >+ /*---------------------------------------------------------------*/ >+ case 0x0F: >+ { >+ /* Update matrix display if needed */ >+ if ( dev->tdparms.displayfeat ) >+ { >+ if ( TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_MOUNT; >+ dev->tapedispflags |= TAPEDISPFLG_REQAUTOMNT; >+ strlcpy( dev->tapemsg1, dev->tapemsg2, sizeof(dev->tapemsg1) ); >+ } >+ else if ( TAPEDISPTYP_UNMOUNT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ } >+ } >+ >+ if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >+ TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_UNLOADING; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Do the Rewind-Unload */ >+#if defined(OPTION_SCSI_TAPE) >+ if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >+ int_scsi_rewind_unload( dev, unitstat, code ); >+ else >+#endif >+ dev->tmh->close(dev); >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_UNLOADING == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ if ((*unitstat & CSW_UC) != 0) // (did it work?) >+ break; // (no it didn't) >+ >+ dev->curfilen = 1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ dev->eotwarning = 0; >+// dev->fenced = 0; // (handler already did this) >+ >+ /* Update matrix display */ >+ UpdateDisplay( dev ); >+ >+ build_senseX(TAPE_BSENSE_RUN_SUCCESS,dev,unitstat,code); >+ >+ if ( dev->als ) >+ { >+ TID dummy_tid; >+ char thread_name[64]; >+ snprintf(thread_name,sizeof(thread_name), >+ "autoload wait for %4.4X tapemount thread", >+ dev->devnum); >+ thread_name[sizeof(thread_name)-1] = 0; >+ create_thread( &dummy_tid, &sysblk.detattr, >+ autoload_wait_for_tapemount_thread, >+ dev, thread_name ); >+ } >+ >+ ReqAutoMount( dev ); >+ break; >+ >+ } /* End case 0x0F: REWIND UNLOAD */ >+ >+ /*---------------------------------------------------------------*/ >+ /* READ BUFFER (3480 and later) */ >+ /*---------------------------------------------------------------*/ >+ case 0x12: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Read Buffer (X'12') >+ >+ The Read Buffer command transfers data from the control unit >+ to the channel if any buffered write data is in the control >+ unit's buffer. For each Read Buffer command completed, the >+ controlling computer retrieves one block of data in last-in/ >+ first-out (LIFO) sequence until the buffer for the addressed >+ tape drive is empty. The controlling computer usually issues >+ this command when the tape drive or subsystem malfunctions >+ and cannot write data from the buffer to the tape. >+ */ >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ // PROGRAMMING NOTE: until we can add support for performing >+ // SCSI i/o directly to the actual real device, we simply do >+ // the same thing for non-virtual devices as we do for virtual >+ // ones: we force-flush the data to the device (i.e. sync) >+ // and then tell the truth: that there's zero bytes of data >+ // still buffered (which is true if we just flushed it all) >+ >+ // Once we add direct SCSI i/o support though, we can change >+ // the below to do an actual read-buffer SCSI command for >+ // non-virtual devices. (We will still always need the below >+ // for virtual devices though) >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ // Perform flush/sync; exit on error... >+ if ((rc = dev->tmh->sync( dev, unitstat, code )) < 0) >+ break; // (i/o error) >+ >+ // Flush complete. Our buffer is now empty. Tell them that. >+ RESIDUAL_CALC (0); >+ dev->curblkrem = 0; >+ dev->curbufoff = 0; >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* ERASE GAP */ >+ /*---------------------------------------------------------------*/ >+ case 0x17: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Unit check if tape is write-protected */ >+ if (dev->readonly || dev->tdparms.logical_readonly) >+ { >+ build_senseX (TAPE_BSENSE_WRITEPROTECT, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Do the ERG; exit if error */ >+ if ((rc = dev->tmh->erg( dev, unitstat, code )) < 0) >+ break; // (error) >+ >+ /* Perform flush/sync and/or set normal completion status */ >+ if (0 >+ || !write_immed >+ || (rc = dev->tmh->sync( dev, unitstat, code )) == 0 >+ ) >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* WRITE TAPE MARK */ >+ /*---------------------------------------------------------------*/ >+ case 0x1F: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Unit check if tape is write-protected */ >+ if (dev->readonly || dev->tdparms.logical_readonly) >+ { >+ build_senseX (TAPE_BSENSE_WRITEPROTECT, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Do the WTM; exit if error */ >+ if ((rc = dev->tmh->wtm(dev,unitstat,code)) < 0) >+ break; // (error) >+ >+ dev->curfilen++; >+ >+ /* Perform flush/sync and/or set normal completion status */ >+ if (0 >+ || !write_immed >+ || (rc = dev->tmh->sync( dev, unitstat, code )) == 0 >+ ) >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ BLOCK ID */ >+ /*---------------------------------------------------------------*/ >+ case 0x22: >+ { >+ BYTE log_blockid [4]; // (temp; BIG-ENDIAN format) >+ BYTE phys_blockid [4]; // (temp; BIG-ENDIAN format) >+ >+ int errcode = TAPE_BSENSE_STATUSONLY; // (presume success) >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Calculate number of bytes and residual byte count */ >+ RESIDUAL_CALC( 2 * sizeof(dev->blockid) ); >+ >+ /* Ask media handler for actual value(s)... */ >+ if ((rc = dev->tmh->readblkid( dev, log_blockid, phys_blockid )) < 0) >+ errcode = TAPE_BSENSE_LOCATEERR; >+ else >+ { >+ /* Copy results to channel I/O buffer... */ >+ memcpy( &iobuf[0], log_blockid, 4 ); >+ memcpy( &iobuf[4], phys_blockid, 4 ); >+ } >+ >+ /* Set completion status... */ >+ build_senseX( errcode, dev, unitstat, code ); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ BUFFERED LOG */ >+ /*---------------------------------------------------------------*/ >+ case 0x24: >+ { >+ /* Calculate residual byte count... */ >+ >+ // PROGRAMMING NOTE: technically we *should* have up to >+ // 64 bytes to give them, but we may not have that many. >+ >+ /* How many bytes we SHOULD have depends on whether >+ Extended Buffered Log support is enabled or not */ >+ len = (dev->devchar[8] & 0x01) ? 64 : 32; >+ RESIDUAL_CALC (len); >+ >+ /* Clear the device sense bytes */ >+ memset (iobuf, 0, num); >+ >+ /* Copy device sense bytes to channel I/O buffer */ >+ memcpy (iobuf, dev->sense, >+ dev->numsense < (U32)num ? dev->numsense : (U32)num); >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* BACKSPACE BLOCK */ >+ /*---------------------------------------------------------------*/ >+ case 0x27: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Backspace to previous block according to device type, >+ and exit with unit check status on error condition */ >+ if ((rc = dev->tmh->bsb( dev, unitstat, code )) < 0) >+ break; >+ >+ /* Exit with unit exception status if tapemark was sensed */ >+ if (rc == 0) >+ { >+ build_senseX (TAPE_BSENSE_READTM, dev, unitstat, code); >+ break; >+ } >+ >+ /* Set normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* BACKSPACE FILE */ >+ /*---------------------------------------------------------------*/ >+ case 0x2F: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Backspace to previous file according to device type, >+ and exit with unit check status on error condition */ >+ if ((rc = dev->tmh->bsf( dev, unitstat, code )) < 0) >+ break; >+ >+ /* Set normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* SENSE PATH GROUP ID */ >+ /*---------------------------------------------------------------*/ >+ case 0x34: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Sense Path Group ID (X'34') >+ >+ The Sense Path Group ID command transfers 12 bytes of information >+ from the control unit to the channel. The first byte (byte 0) >+ is the path state byte, and the remaining 11 bytes (bytes 1-11) >+ contain the path-group ID. >+ >+ The bit assignments in the path state byte (byte 0) are: >+ >+ ________ ________ ____________________________________ >+ | Bit | Value | Description | >+ |________|________|____________________________________| >+ | 0, 1 | | Pathing Status | >+ |________|________|____________________________________| >+ | | 00 | Reset | >+ |________|________|____________________________________| >+ | | 01 | Reserved | >+ |________|________|____________________________________| >+ | | 10 | Ungrouped | >+ |________|________|____________________________________| >+ | | 11 | Grouped | >+ |________|________|____________________________________| >+ | 2, 3 | | Partitioning State | >+ |________|________|____________________________________| >+ | | 00 | Implicitly Enabled | >+ |________|________|____________________________________| >+ | | 01 | Reserved | >+ |________|________|____________________________________| >+ | | 10 | Disabled | >+ |________|________|____________________________________| >+ | | 11 | Explicitly Enabled | >+ |________|________|____________________________________| >+ | 4 | | Path Mode | >+ |________|________|____________________________________| >+ | | 0 | Single path mode. | >+ | | 1 | Reserved, invalid for this device. | >+ |________|________|____________________________________| >+ | 5-7 | 000 | Reserved | >+ |________|________|____________________________________| >+ */ >+ >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Command reject if the command is not the ONLY command >+ in the channel program */ >+ if (chained & CCW_FLAGS_CC) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (12); >+ >+ /* Byte 0 is the path group state byte */ >+ iobuf[0] = dev->pgstat; >+ >+ /* Bytes 1-11 contain the path group identifier */ >+ if (num > 1) >+ memcpy (iobuf+1, dev->pgid, num-1); >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ } /* End case 0x34: SENSE PATH GROUP ID */ >+ >+ /*---------------------------------------------------------------*/ >+ /* FORWARD SPACE BLOCK */ >+ /*---------------------------------------------------------------*/ >+ case 0x37: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Forward to next block according to device type */ >+ /* Exit with unit check status if error condition */ >+ if ((rc = dev->tmh->fsb( dev, unitstat, code )) < 0) >+ break; >+ >+ /* Exit with unit exception status if tapemark was sensed */ >+ if (rc == 0) >+ { >+ build_senseX (TAPE_BSENSE_READTM, dev, unitstat, code); >+ break; >+ } >+ >+ /* Set normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ SUBSYSTEM DATA (3490/3590) */ >+ /*---------------------------------------------------------------*/ >+ case 0x3E: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Read Subsystem Data (X'3E') >+ >+ The Read Subsystem Data command obtains various types of >+ information from the 3480/3490 subsystem. The data presented >+ is dependent on the command immediately preceding the Read >+ Subsystem Data command in the command chain. >+ >+ If the preceding command in the command chain is a Perform >+ Subsystem Function command with the Prepare for Read Subsystem >+ Data order, the data presented is a function of the sub-order >+ in the data transferred with the order. >+ */ >+ >+ /* Command reject if not chained from either a Set Interface >+ Identifier or Perform Subsystem Function command */ >+ if (!((chained & CCW_FLAGS_CC) && (0x77 == prevcode || 0x73 == prevcode))) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Command reject if no subsystem data was prepared >+ by a previous Perform Subsystem Function command */ >+ if (!dev->tapssdlen) // (any subsystem data?) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (dev->tapssdlen); >+ >+ /* PROGRAMMING NOTE: the Prepare for Read Subsystem Data >+ order of the previous Perform Subsystem Function command >+ has already prepared the subsystem data directly in the >+ channel buffer itself (iobuf), so there isn't any data >+ that actually needs to be moved/copied; the data is >+ already sitting in the channel buffer. All we need do >+ is return a normal status. >+ */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ } /* End case 0x3E: READ SUBSYSTEM DATA */ >+ >+ /*---------------------------------------------------------------*/ >+ /* FORWARD SPACE FILE */ >+ /*---------------------------------------------------------------*/ >+ case 0x3F: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Forward to next file according to device type */ >+ /* Exit with unit check status if error condition */ >+ if ((rc = dev->tmh->fsf( dev, unitstat, code )) < 0) >+ break; >+ >+ /* Set normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* SYNCHRONIZE (3480 or later) */ >+ /*---------------------------------------------------------------*/ >+ case 0x43: >+ { >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Do the sync */ >+ if ((rc = dev->tmh->sync( dev, unitstat, code )) == 0) >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ >+ break; >+ } >+ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ /*---------------------------------------------------------------*/ >+ /* SET DIAGNOSE -- Special AUTOMOUNT support -- */ >+ /*---------------------------------------------------------------*/ >+ case 0x4B: >+ { >+ int argc, i; /* work */ >+ char **argv; /* work */ >+ char newfile [ sizeof(dev->filename) ]; /* work */ >+ char lcss[8]; /* work */ >+ >+ /* Command reject if AUTOMOUNT support not enabled */ >+ if (0 >+ || dev->tapedevt == TAPEDEVT_SCSITAPE >+ || sysblk.tamdir == NULL >+ || dev->noautomount >+ ) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Command Reject if command-chained and i/o length not 1 */ >+ if (flags & CCW_FLAGS_CC) >+ { >+ if (count != 1) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* AUTOMOUNT QUERY - part 1 (chained 0xE4 SENSE ID = part 2) */ >+ >+ /* Set normal status but do nothing else; the next CCW >+ should be a SENSE ID (0xE4) which will do the query */ >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ break; >+ } >+ >+ /* AUTOMOUNT MOUNT... */ >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (sizeof(newfile)-1); /* (minus-1 for NULL) */ >+ >+ /* Copy the device's new filename from guest storage */ >+ for (i=0; i < num; i++) >+ newfile[i] = guest_to_host( iobuf[i] ); >+ newfile[num] = 0; >+ >+ /* Change "OFFLINE" to "*" (tape unloaded) */ >+ if (strcasecmp (newfile, "OFFLINE") == 0) >+ strlcpy (newfile, TAPE_UNLOADED, sizeof(newfile)); >+ >+ /* (messages looks better without LCSS if not needed) */ >+ lcss[0] = 0; >+ if (SSID_TO_LCSS(dev->ssid) != 0) >+ snprintf( lcss, sizeof(lcss), "%u:", SSID_TO_LCSS(dev->ssid) ); >+ lcss[sizeof(lcss)-1] = 0; >+ >+ /* Obtain the device lock */ >+ obtain_lock (&dev->lock); >+ >+ /* Validate the given path... */ >+ if ( strcmp( newfile, TAPE_UNLOADED ) != 0 ) >+ { >+ TAMDIR *tamdir = NULL; >+ int minlen = 0; >+ int rej = 0; >+ >+ /* (because i hate typing) */ >+#define HHCTA090E(_file,_reason) \ >+ { \ >+ logmsg(_("HHCTA090E Auto-mount of file \"%s\" on drive %s%4.4X failed: " \ >+ "%s\n"), _file, lcss, dev->devnum, _reason); \ >+ build_senseX (TAPE_BSENSE_TAPELOADFAIL, dev, unitstat, code); \ >+ release_lock (&dev->lock); \ >+ break; \ >+ } >+ >+ // Resolve given path... >+ { >+ char resolve_in [ MAX_PATH ] = {0}; /* (work) */ >+ char resolve_out[ MAX_PATH ] = {0}; /* (work) */ >+ >+ /* (build path to be resolved...) */ >+ if (0 >+#if defined(_MSVC_) >+ || newfile[1] == ':' /* (fullpath given?) */ >+#else /* !_MSVC_ */ >+ || newfile[0] == '/' /* (fullpath given?) */ >+#endif /* _MSVC_ */ >+ || newfile[0] == '.' /* (relative path given?) */ >+ ) >+ resolve_in[0] = 0; /* (then use just given spec) */ >+ else /* (else prepend with default) */ >+ strlcpy( resolve_in, sysblk.defdir, sizeof(resolve_in) ); >+ >+ /* (finish building path to be resolved) */ >+ strlcat( resolve_in, newfile, sizeof(resolve_in) ); >+ >+ /* (fully resolvable path?) */ >+ if (realpath( resolve_in, resolve_out ) == NULL) >+ HHCTA090E( resolve_in, "unresolvable path" ); >+ >+ /* Switch to fully resolved path */ >+ strlcpy( newfile, resolve_out, sizeof(newfile) ); >+ } >+ >+ /* Verify file is in an allowable directory... */ >+ rej = 0; minlen = 0; >+ while ((tamdir = findtamdir( rej, minlen, newfile )) != NULL) >+ { >+ rej = !rej; >+ minlen = tamdir->len; >+ } >+ >+ /* Error if "allowable" directory not found... */ >+ if (!rej) >+ HHCTA090E( newfile, "impermissible directory" ); >+ >+ /* Verify file exists... */ >+ if (access( newfile, R_OK ) != 0) >+ HHCTA090E( newfile, "file not found" ); >+ } >+ >+ /* Prevent accidental re-init'ing of an already loaded tape drive */ >+ if (1 >+ && sysblk.nomountedtapereinit >+ && strcmp (newfile, TAPE_UNLOADED) != 0 >+ && strcmp (dev->filename, TAPE_UNLOADED) != 0 >+ ) >+ { >+ logmsg(_("HHCTA091E Tape file auto-mount for drive %s%4.4X rejected: " >+ "drive not empty\n"), >+ lcss, dev->devnum); >+ build_senseX (TAPE_BSENSE_TAPELOADFAIL, dev, unitstat, code); >+ release_lock (&dev->lock); >+ break; >+ } >+ >+ /* Build re-initialization parameters using new filename */ >+ argc = dev->argc; >+ argv = malloc (dev->argc * sizeof(char*)); >+ >+ for (i=0; i < argc; i++) >+ { >+ if (dev->argv[i]) >+ argv[i] = strdup(dev->argv[i]); >+ else >+ argv[i] = NULL; >+ } >+ >+ /* (replace filename argument with new filename) */ >+ free( argv[0] ); >+ argv[0] = strdup( newfile ); >+ >+ /* Attempt reinitializing the device using the new filename... */ >+ rc = tapedev_init_handler( dev, argc, argv ); >+ >+ /* (free temp copy of parms to prevent memory leak) */ >+ for (i=0; i < argc; i++) >+ if (argv[i]) >+ free(argv[i]); >+ >+ /* Issue message and set status based on whether it worked or not... */ >+ if (0 >+ || rc < 0 >+ || strfilenamecmp( dev->filename, newfile ) != 0 >+ ) >+ { >+ // (failure) >+ >+ if (strcmp( newfile, TAPE_UNLOADED ) == 0) >+ { >+ /* (an error message explaining the reason for the >+ failure should hopefully already have been issued) */ >+ logmsg(_("HHCTA092E Tape file auto-unmount for drive %s%4.4X failed\n"), >+ lcss, dev->devnum); >+ } >+ else >+ HHCTA090E( newfile, "file not found" ); // (presumed) >+ >+ /* (the load or unload attempt failed) */ >+ build_senseX (TAPE_BSENSE_TAPELOADFAIL, dev, unitstat, code); >+ } >+ else >+ { >+ // (success) >+ >+ if (strcmp( newfile, TAPE_UNLOADED ) == 0) >+ logmsg(_("HHCTA093I Tape file on drive %s%4.4X auto-unmounted\n"), >+ lcss, dev->devnum); >+ else >+ logmsg(_("HHCTA094I Tape file \"%s\" auto-mounted onto drive %s%4.4X\n"), >+ dev->filename, lcss, dev->devnum); >+ >+ /* (save new parms for next time) */ >+ free( dev->argv[0] ); >+ dev->argv[0] = strdup( newfile ); >+ >+ /* (set normal status for this ccw) */ >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ } >+ >+ /* Release the device lock and exit function... */ >+ release_lock (&dev->lock); >+ break; >+ >+ } /* End case 0x4B: SET DIAGNOSE */ >+#endif /* OPTION_TAPE_AUTOMOUNT */ >+ >+ /*---------------------------------------------------------------*/ >+ /* READ MESSAGE ID */ >+ /*---------------------------------------------------------------*/ >+ case 0x4E: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Read Message ID (X'4E') >+ >+ The Read Message ID command is used to read the message identifier >+ that was assigned by the control unit to commands that indicated >+ the message-required flag requesting notification when an asynchronous >+ operation is complete. The Read Message ID command must be chained >+ directly from the specific command that requested the message >+ notification or the command will be presented unit check status >+ with associated sense indicating ERA code 27. >+ >+ If the Read Message ID command is chained to a specific command >+ that requests notification, but the command does not result in an >+ asynchronous operation, the message identifier field returned >+ will be all zeroes. >+ >+ The data returned has the following format: >+ >+ ________ ____________________________________________________ >+ | Byte | Description | >+ |________|____________________________________________________| >+ | 0,1 | Length (set to X'000A') | >+ |________|____________________________________________________| >+ | 2 | Format (set to X'02') | >+ |________|____________________________________________________| >+ | 3 | Message Code | >+ | | | >+ | | Value Description | >+ | | | >+ | | X'01' Delayed-Response Message | >+ |________|____________________________________________________| >+ | 4-7 | Message ID | >+ | | | >+ | | This field contains the message identifier | >+ | | assigned by the control unit to the requested | >+ | | operation. If the operation was executed by | >+ | | the subsystem as an immediate operation, this | >+ | | field contains all zeroes and a later delayed- | >+ | | response message is not generated. | >+ |________|____________________________________________________| >+ | 8 | Flags (set to X'00') | >+ |________|____________________________________________________| >+ | 9 | Reserved (set to X'00') | >+ |________|____________________________________________________| >+ */ >+ >+ /* Command reject if not chained from a write command */ >+ if (!((chained & CCW_FLAGS_CC) && IS_CCW_WRITE(prevcode))) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC( 10 ); >+ >+ // PROGRAMMING NOTE: at the moment all of our i/o's are synchronous. >+ // Thus we always return zero indicating the i/o was not asynchronous. >+ >+ STORE_HW ( &iobuf[0], 10 ); // 0-1 >+ iobuf[2] = 0x02; // 2 >+ iobuf[3] = 0x01; // 3 >+ STORE_FW ( &iobuf[4], 0 ); // 4-7 (Message Id) >+ iobuf[8] = 0x00; // 8 >+ iobuf[9] = 0x00; // 9 >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat,code); >+ break; >+ >+ } /* End case 0x4E: READ MESSAGE ID */ >+ >+ /*---------------------------------------------------------------*/ >+ /* LOCATE BLOCK */ >+ /*---------------------------------------------------------------*/ >+ case 0x4F: >+ { >+ U32 locblock; /* Block Id for Locate Block */ >+ int errcode = TAPE_BSENSE_STATUSONLY; /* Presumed success */ >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Check for minimum count field */ >+ if (count < sizeof(dev->blockid)) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Block to seek */ >+ ASSERT( count >= sizeof(locblock) ); >+ FETCH_FW(locblock, iobuf); >+ >+ /* Check for invalid/reserved Format Mode bits */ >+ if (0x3590 != dev->devtype) >+ { >+ if (0x00C00000 == (locblock & 0x00C00000)) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* We only want the Block Number in the low-order 22 bits */ >+ locblock &= 0x003FFFFF; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC( sizeof(locblock) ); >+ >+ /* Informative message if tracing */ >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA081I Locate block 0x%8.8"I32_FMT"X on %s%s%4.4X\n") >+ ,locblock >+ ,TAPEDEVT_SCSITAPE == dev->tapedevt ? (char*)dev->filename : "" >+ ,TAPEDEVT_SCSITAPE == dev->tapedevt ? " = " : "" >+ ,dev->devnum >+ ); >+ >+ /* Update display if needed */ >+ if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >+ TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_LOCATING; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Ask media handler to perform the locate... */ >+ if ((rc = dev->tmh->locateblk( dev, locblock, unitstat, code )) < 0) >+ { >+ errcode = TAPE_BSENSE_LOCATEERR; >+ dev->fenced = 1; // (position lost; fence the volume) >+ } >+ >+ /* Update display if needed */ >+ if ( TAPEDISPTYP_LOCATING == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Set completion status... */ >+ build_senseX( errcode, dev, unitstat, code ); >+ break; >+ >+ } /* End case 0x4F: LOCATE BLOCK */ >+ >+ /*---------------------------------------------------------------*/ >+ /* SUSPEND MULTIPATH RECONNECTION (3480 and later) */ >+ /*---------------------------------------------------------------*/ >+ case 0x5B: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Suspend Multipath Reconnection (X'5B') >+ >+ The Suspend Multipath Reconnection command performs as a >+ No-Operation command because all controlling-computer-to- >+ subsystem operations occur in single-path status. >+ */ >+ >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Set normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ MEDIA CHARACTERISTICS (3590 only) */ >+ /*---------------------------------------------------------------*/ >+ case 0x62: >+ { >+ /* SG24-2506 IBM 3590 Tape Subsystem Technical Guide >+ >+ 5.2.3 New Read Media Characteristics >+ >+ The new Read Media Characteristics CCW (command code x'62') >+ provides up to 256 bytes of information about the media and >+ formats supported by the Magstar tape drive." >+ */ >+ >+ // ZZ FIXME: not coded yet. >+ >+ /* Set command reject sense byte, and unit check status */ >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ DEVICE CHARACTERISTICS */ >+ /*---------------------------------------------------------------*/ >+ case 0x64: >+ { >+ /* Command reject if device characteristics not available */ >+ if (dev->numdevchar == 0) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (dev->numdevchar); >+ >+ /* Copy device characteristics bytes to channel buffer */ >+ memcpy (iobuf, dev->devchar, num); >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+#if 0 >+ /*---------------------------------------------------------------*/ >+ /* SET INTERFACE IDENTIFIER (3490 and later) */ >+ /*---------------------------------------------------------------*/ >+ case 0x73: >+ { >+ // PROGRAMMING NOTE: the 3480 and earlier "Mode Set" interpretation >+ // of this CCW is handled in the command-table as a no-op; the "Set >+ // Interface Identifier" interpretation of this CCW for 3490 and >+ // later model tape drives is *ALSO* handled in the command-table >+ // as a no-op as well, so there's really no reason for this switch >+ // case to even exist until such time as we need to support a model >+ // that happens to require special handling (which is unlikely). >+ >+ // I'm keeping the code here however for documentation purposes >+ // only, but of course disabling it from compilation via #if 0. >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+#endif >+ >+ /*---------------------------------------------------------------*/ >+ /* PERFORM SUBSYSTEM FUNCTION */ >+ /*---------------------------------------------------------------*/ >+ case 0x77: >+ { >+ BYTE order = iobuf[0]; >+ BYTE flag = iobuf[1]; >+ BYTE parm = iobuf[2]; >+ >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* The flag byte must be zero for all orders because >+ none of our supported orders supports a flag byte */ >+ if (PSF_FLAG_ZERO != flag) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Byte 0 is the PSF order */ >+ switch (order) >+ { >+ /*-----------------------------------------------------------*/ >+ /* Activate/Deactivate Forced Error Logging */ >+ /* 0x8000nn / 0x8100nn */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_AFEL: >+ case PSF_ORDER_DFEL: >+ { >+ BYTE bEnable = (PSF_ORDER_AFEL == order) ? 1 : 0; >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (3); >+ >+ /* Control information length must be 3 bytes long */ >+ /* and the parameter byte must be one or the other */ >+ if ( (count < len) >+ || ((PSF_ACTION_FEL_IMPLICIT != parm) && >+ (PSF_ACTION_FEL_EXPLICIT != parm)) >+ ) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Enable/Disabled Forced Error Logging as requested... */ >+ >+#if 0 // (implicit enabling for all devices not currently supported; treat as explicit instead) >+ if (PSF_ACTION_FEL_IMPLICIT == parm) >+ { >+ // Implicit: for ALL devices... >+ dev->forced_logging = bEnable ? 1 : 0; >+ } >+ else // (PSF_ACTION_FEL_EXPLICIT == parm) >+#endif // (implicit not supported) >+ { >+ // Explicit: for only THIS device... >+ dev->forced_logging = bEnable ? 1 : 0; >+ } >+ >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Activate/Deactivate Access Control */ >+ /* 0x8200nn00 / 0x8300nn00 */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_AAC: // (Activate) >+ case PSF_ORDER_DAC: // (Dectivate) >+ { >+ BYTE bEnable = (PSF_ORDER_AAC == order) ? 1 : 0; >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (4); >+ >+ /* Control information length must be 4 bytes long */ >+ /* and the parameter byte must not be invalid */ >+ if (0 >+ || (count < len) >+ || (parm & ~(PSF_ACTION_AC_LWP | PSF_ACTION_AC_DCD | // (bits on that shouldn't be) >+ PSF_ACTION_AC_DCR | PSF_ACTION_AC_ER)) >+ || !(parm & (PSF_ACTION_AC_LWP | PSF_ACTION_AC_DCD | // (bits on that should be) >+ PSF_ACTION_AC_DCR | PSF_ACTION_AC_ER)) >+ ) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Enable/Disable Logical Write Protect if requested */ >+ if (parm & PSF_ACTION_AC_LWP) >+ dev->tdparms.logical_readonly = bEnable ? 1 : 0; >+ >+ /* Enable/Disable Data Compaction (compression) if requested */ >+ if (parm & PSF_ACTION_AC_DCD) >+ { >+ if (TAPEDEVT_HETTAPE == dev->tapedevt) >+ { >+ rc = het_cntl( dev->hetb, HETCNTL_SET | HETCNTL_COMPRESS, >+ bEnable ? TRUE : FALSE ); >+ } >+#if defined(OPTION_SCSI_TAPE) >+ else if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ // ZZ FIXME: future place for direct SCSI i/o >+ // to enable/disable compression for 3480/later. >+ } >+#endif >+ } >+ >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Reset Volume Fenced */ >+ /* 0x9000 */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_RVF: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Volume Fencing >+ >+ When a condition results in a volume integrity exposure, >+ the control unit will prevent further access to the volume. >+ This process is called Volume Fencing and is primarily >+ related to loss of buffered write data, tape positioning, >+ or assignment protection. >+ >+ The control unit prevents further access to the tape volume >+ by conditioning itself to generate deferred unit checks with >+ associated sense data indicating ERA code 47, for all commands >+ that are eligible to receive the deferred unit check until >+ the condition is reset or until the cartridge is unloaded. >+ The condition that caused the fencing to occur has already >+ been indicated by the previous unit check and associated sense >+ data. >+ */ >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (2); >+ >+ /* Control information length must be 2 bytes long */ >+ if (count < len) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ dev->fenced = 0; // (as requested!) >+ >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Pin Device */ >+ /* 0xA100nn */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_PIN_DEV: >+ { >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (3); >+ >+ /* Control information length must be 3 bytes long >+ and the parameter byte must not be invalid */ >+ if ( (count < len) >+ || ((parm != PSF_ACTION_PIN_CU0) && >+ (parm != PSF_ACTION_PIN_CU1)) >+ ) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Not currently supported; treat as no-op */ >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Unpin Device */ >+ /* 0xA200 */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_UNPIN_DEV: >+ { >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (2); >+ >+ /* Control information length must be 2 bytes long */ >+ if (count < len) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Not currently supported; treat as no-op */ >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Prepare for Read Subsystem Data */ >+ /* 0x180000000000mm00iiiiiiii */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_PRSD: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Prepare for Read Subsystem Data (X'18') >+ >+ The order transfers 12 bytes of data used for processing a >+ Read Subsystem Data command that immediately follows the >+ Perform Subsystem Function command specifying this order in >+ the command chain. If a Read Subsystem Data command is not >+ issued as the next command in the command chain, the data is >+ discarded and no other action is performed. If a Read Subsystem >+ Data command is issued as the next command in the command chain, >+ the data determines what type of information is presented to >+ the Read Subsystem Data command. >+ >+ When the Prepare for Subsystem Data order with the attention >+ message sub-order is specified in a Perform Subsystem Function >+ command, the command is treated as a global command. If the >+ command is issued while the Special Intercept Condition is >+ active, a unit check status is presented with the associated >+ sense data indicating ERA code 53. >+ >+ The Prepare for Read Subsystem Data order requires an order >+ byte (byte 0), a flag byte (byte 1), and parameter bytes. >+ The flag byte is set to 0. The parameter bytes are defined >+ as follows: >+ >+ ________ ___________________________________________________ >+ | Byte | Description | >+ |________|___________________________________________________| >+ | 2-5 | Reserved (X'00') | >+ |________|___________________________________________________| >+ | 6 | Attention Message (X'03') | >+ | | | >+ | | When active and bytes 8-11 contain X'00000000', | >+ | | the program is requesting the control unit | >+ | | to present any pending attention message or | >+ | | unsolicited unit check condition that is | >+ | | associated with the addressed device-path pair. | >+ | | If there is no message or unit check condition | >+ | | present, the subsystem displays the "No Message" | >+ | | message. | >+ | | | >+ | | When active and bytes 8-11 contain anything | >+ | | other than X'00000000', the program is re- | >+ | | questing the control unit to present the status | >+ | | of the asynchronous operation as identified by | >+ | | the contents of bytes 8-11. | >+ |________|___________________________________________________| >+ | 7 | Reserved (X'00') | >+ |________|___________________________________________________| >+ | 8-11 | Message ID | >+ |________|___________________________________________________| >+ */ >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (12); >+ >+ /* Control information length must be 12 bytes long the */ >+ /* parameter must be valid and all reserved bytes zero. */ >+ /* Also note that the only sub-order we support is the */ >+ /* only sub-order that is defined: attention message. */ >+ if (0 >+ || (count < len) >+ || (iobuf[6] != PSF_ACTION_SSD_ATNMSG) >+ || (memcmp( &iobuf[2], "\00\00\00\00", 4 ) != 0) >+ || (iobuf[7] != 0x00) >+ ) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* If the Special Intercept Condition is active, present >+ unit check status with sense indicating ERA code 53 */ >+ if (dev->SIC_active) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ dev->SIC_active = 0; >+ break; >+ } >+ >+ // Build the requested Subsystem Data... >+ >+ // PROGRAMMING NOTE: note that we build the requested data >+ // directly in the channel i/o buffer itself (iobuf). This >+ // relieves us from having to allocate/maintain a separate >+ // buffer for it somewhere, and relieves the READ SUBSYSTEM >+ // DATA command (0x3E) from having to copy the data into >+ // the channel buffer from somewhere. Instead it can return >+ // immediately since the data is already in the buffer. (See >+ // the 0x3E: READ SUBSYSTEM DATA command for information). >+ >+ // PROGRAMMING NOTE: since at the moment we don't support >+ // asynchronous i/o (all of our i/o's are synchronous), we >+ // return either a Format x'00' (No Message) response if the >+ // Message Id they specified was x'00000000' or, if they >+ // requested the status for a specific Message Id, a format >+ // x'02' (Message Id Status) response with x'00' Operation >+ // Completion Status (I/O Completed). >+ >+ if (memcmp( &iobuf[8], "\00\00\00\00", 4 ) == 0) >+ { >+ /* Format x'00': "No Message" */ >+ dev->tapssdlen = 9; // (Length) >+ STORE_HW ( &iobuf[0], dev->tapssdlen ); // (Length = 9 bytes) >+ iobuf[2] = 0x00; // (Format = x'00': "No Message") >+ iobuf[3] = 0x00; // (Message Code = none) >+ memcpy( &iobuf[4], &iobuf[8], 4 ); // (Message Id = same as requested) >+ iobuf[8] = 0x00; // (Flags = none) >+ } >+ else >+ { >+ /* Format x'02': "Message Id Status" */ >+ dev->tapssdlen = 10; // (Length) >+ STORE_HW ( &iobuf[0], dev->tapssdlen ); // (Length = 10 bytes) >+ iobuf[2] = 0x02; // (Format = x'01: Message Id Status) >+ iobuf[3] = 0x01; // (Message Code = Delayed Response) >+ memcpy( &iobuf[4], &iobuf[8], 4 ); // (Message Id = same as requested) >+ iobuf[8] = 0x00; // (Reserved) >+ iobuf[9] = 0x00; // (Status = "I/O Completed") >+ } >+ break; >+ >+ } /* End case PSF_ORDER_PRSD */ >+ >+ /*-----------------------------------------------------------*/ >+ /* Set Special Intercept Condition */ >+ /* 0x1B00 */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_SSIC: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Set Special Intercept Condition (X'1B') >+ >+ The order controls the activation or deactivation of the >+ special intercept condition associated with the device-path >+ group pair to which the command is issued. The order is >+ supported by the model if byte 8 bit 4 is active in the data >+ presented to the Read Device Characteristics command. The >+ order requires an order byte (byte 0) and a flag byte (byte 1). >+ The flag byte is set to 0. >+ >+ When processed, the command activates the special intercept >+ condition for the device on each channel path that has the >+ same path group ID as the issuing channel path. The path >+ group ID is considered valid on a given channel path if it >+ is valid for any device on the channel path. The special >+ intercept condition controls the presentation of attention- >+ intercept status. The sense data associated with the >+ attention-intercept status indicates ERA code 57. The special >+ intercept condition also causes the next global command >+ issued to the device-path group pair to be presented unit check >+ status with associated sense data indicating ERA code 53. >+ >+ The special intercept condition is deactivated on a channel >+ path if a reset signal is received on the channel path. The >+ special intercept condition is deactivated for the device-group >+ pair if a global command is presented unit check status with >+ associated sense data indicating ERA code 53, or if the last >+ path in the associated set of channel paths (that is, with the >+ same valid path group ID) is reset. >+ >+ After the Set Special Intercept Condition order is specified >+ in a Perform Subsystem Function command, the command is treated >+ as a global command. If the command is issued while the special >+ intercept condition is active, a unit check status is presented >+ with associated sense data indicating ERA code 53. >+ >+ If a command is issued to a channel path without a valid path >+ group ID (that is, all devices in the reset state), unit check >+ status is presented with associated sense data indicating ERA >+ code 27. >+ */ >+ >+ /* Command reject if Special Intercept Condition not supported */ >+ if (!dev->SIC_supported) // (not supported?) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* If the command is issued while the Special Intercept */ >+ /* Condition is active, a unit check status is presented */ >+ /* with associated sense data indicating ERA code 53. */ >+ if (dev->SIC_active) // (already active?) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ dev->SIC_active = 0; // (reset after UC) >+ break; >+ } >+ >+ /* Activate Special Intercept Condition */ >+ dev->SIC_active = 1; >+ break; >+ >+ } /* End case PSF_ORDER_SSIC */ >+ >+ /*-----------------------------------------------------------*/ >+ /* Message Not Supported */ >+ /* 0x1C00xxccnnnn0000iiiiii... */ >+ /*-----------------------------------------------------------*/ >+ case PSF_ORDER_MNS: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Message Not Supported (X'1C') >+ >+ The order transfers 20 bytes of data that identify the host >+ that does not support a prior attention message containing >+ the Notify Nonsupport flag. The order requires an order byte >+ (byte 0), a flag byte (byte 1), and parameter bytes. The >+ flag byte is set to 0. The parameter bytes are defined as >+ follows: >+ >+ ________ ________ ____________________________________________ >+ | Byte | Value | Description | >+ |________|________|____________________________________________| >+ | 2 | | Response Code | >+ |________|________|____________________________________________| >+ | | 0 | Reserved (invalid). | >+ |________|________|____________________________________________| >+ | | 1 | Message rejected. Unknown format. | >+ |________|________|____________________________________________| >+ | | 2 | Message rejected. Function not supported. | >+ |________|________|____________________________________________| >+ | | 3-255 | Reserved (invalid). | >+ |________|________|____________________________________________| >+ | 3 | | Channel Path ID (CHPID) | >+ | | | | >+ | | | The byte identifies the channel path that | >+ | | | received the attention message. | >+ |________|________|____________________________________________| >+ | 4, 5 | | Device Number | >+ | | | | >+ | | | The bytes identify the device number of | >+ | | | the device that received the attention | >+ | | | message. | >+ |________|________|____________________________________________| >+ | 6, 7 | | Reserved (must be X'00'). | >+ |________|________|____________________________________________| >+ | 8-11 | | Message ID | >+ | | | | >+ | | | The field contains the message ID that | >+ | | | was presented to the host in the attention | >+ | | | message. | >+ |________|________|____________________________________________| >+ | 12-19 | | System ID | >+ | | | | >+ | | | The field contains an 8-byte system ID | >+ | | | that identifies the host or host partition | >+ | | | responding to the attention message. | >+ |________|________|____________________________________________| >+ */ >+ >+ // PROGRAMMING NOTE: none of our responses to the Perform Sub- >+ // System Function order Attention Message sub-order (see the >+ // PSF_ORDER_PRSD case further above) support any flags. Thus >+ // because we never set/request the "Notify Nonsupport" flag >+ // in our Attention Message sub-order response, the host should >+ // never actually ever be issuing this particular order of the >+ // Perform Subsystem Functon command since it shouldn't be >+ // trying to tell us what we never asked it to. Nevertheless >+ // we should probably support it anyway just in case it does >+ // by treating it as a no-op (as long as it's valid of course). >+ >+ /* Check for valid data (Note: we don't bother validating the >+ Channel Path ID, Device Number, Message ID or System ID) */ >+ if (0 >+ // || flag != 0x00 // (flag byte) (note: already checked) >+ || (parm != 0x01 && parm != 0x02) // (response code) >+ || iobuf[6] != 0x00 // (reserved) >+ || iobuf[7] != 0x00 // (reserved) >+ ) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (20); >+ >+ /* Treat as No-op */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ } /* End case PSF_ORDER_MNS */ >+ >+ /*-----------------------------------------------------------*/ >+ /* Unknown/Supported PSF order */ >+ /*-----------------------------------------------------------*/ >+ default: >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ } /* End PSF switch (order) */ >+ >+ break; >+ >+ } /* End case 0x77: PERFORM SUBSYSTEM FUNCTION */ >+ >+ /*---------------------------------------------------------------*/ >+ /* DATA SECURITY ERASE */ >+ /*---------------------------------------------------------------*/ >+ case 0x97: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Data Security Erase (X'97') >+ >+ The Data Security Erase command writes a random pattern >+ from the position of the tape where the command is issued >+ to the physical end of tape. >+ >+ The Data Security Erase command must be command-chained >+ from an Erase Gap command. Most operating systems signal >+ that the channel program is complete when the channel ending >+ status is returned for the final command in the chain. If >+ the Data Security Erase command is the last command in a >+ channel program, another command should be chained after the >+ Data Security Erase command. (The No-Operation command is >+ appropriate.) This practice ensures that any error status >+ returns with device ending status after the Data Security >+ Erase command is completed. >+ */ >+ >+ /* Command reject if not chained from Erase Gap command */ >+ if (!((chained & CCW_FLAGS_CC) && 0x17 == prevcode)) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Command reject if tape is write-protected */ >+ if (dev->readonly || dev->tdparms.logical_readonly) >+ { >+ build_senseX (TAPE_BSENSE_WRITEPROTECT, dev, unitstat, code); >+ break; >+ } >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >+ TAPEDISPTYP_WAITACT == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_ERASING; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Do the DSE; exit if error */ >+ if ((rc = dev->tmh->dse( dev, unitstat, code )) < 0) >+ break; // (error) >+ >+ /* Update matrix display if needed */ >+ if ( TAPEDISPTYP_ERASING == dev->tapedisptype ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ UpdateDisplay( dev ); >+ } >+ >+ /* Perform flush/sync and/or set normal completion status */ >+ if (0 >+ || !write_immed >+ || (rc = dev->tmh->sync( dev, unitstat, code )) == 0 >+ ) >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ >+ break; >+ >+ } /* End case 0x97: DATA SECURITY ERASE */ >+ >+ /*---------------------------------------------------------------*/ >+ /* LOAD DISPLAY */ >+ /*---------------------------------------------------------------*/ >+ case 0x9F: >+ { >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (17); >+ >+ /* Issue message on 3480 matrix display */ >+ load_display (dev, iobuf, count); >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* Read and Reset Buffered Log (9347) */ >+ /*---------------------------------------------------------------*/ >+ case 0xA4: >+ { >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (dev->numsense); >+ >+ /* Reset SENSE Data */ >+ memset (dev->sense, 0, sizeof(dev->sense)); >+ *unitstat = CSW_CE|CSW_DE; >+ >+ /* Copy device Buffered log data (Bunch of 0s for now) */ >+ memcpy (iobuf, dev->sense, num); >+ >+ /* Indicate Contengency Allegiance has been cleared */ >+ dev->sns_pending = 0; >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* SET PATH GROUP ID */ >+ /*---------------------------------------------------------------*/ >+ case 0xAF: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Set Path Group ID (X'AF') >+ >+ The Set Path Group ID command identifies a controlling computer >+ and specific channel path to the addressed control unit and >+ tape drive. >+ >+ The Set Path Group ID command transfers 12 bytes of path group >+ ID information to the subsystem. The first byte (byte 0) is a >+ function control byte, and the remaining 11 bytes (bytes 1-11) >+ contain the path-group ID. >+ >+ The bit assignments in the function control byte (byte 0) are: >+ >+ ________ ________ ___________________________________________ >+ | Bit | Value | Description | >+ |________|________|___________________________________________| >+ | 0 | | Path Mode | >+ |________|________|___________________________________________| >+ | | 0 | Single-path Mode | >+ |________|________|___________________________________________| >+ | | 1 | Multipath Mode (not supported by Models | >+ | | | C10, C11, and C22) | >+ |________|________|___________________________________________| >+ | 1, 2 | | Group Code | >+ |________|________|___________________________________________| >+ | | 00 | Establish Group | >+ |________|________|___________________________________________| >+ | | 01 | Disband Group | >+ |________|________|___________________________________________| >+ | | 10 | Resign from Group | >+ |________|________|___________________________________________| >+ | | 11 | Reserved | >+ |________|________|___________________________________________| >+ | 3-7 | 00000 | Reserved | >+ |________|________|___________________________________________| >+ >+ >+ The final 11 bytes of the Set Path Group ID command identify >+ the path group ID. The path group ID identifies the channel >+ paths that belong to the same controlling computer. Path group >+ ID bytes must be the same for all devices in a control unit >+ on a given path. The Path Group ID bytes cannot be all zeroes. >+ */ >+ >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Command reject if the command is not the ONLY command >+ in the channel program */ >+ if (chained & CCW_FLAGS_CC) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (12); >+ >+ /* Control information length must be at least 12 bytes */ >+ if (count < 12) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Byte 0 is the path group state byte */ >+ switch((iobuf[0] & SPG_SET_COMMAND)) >+ { >+ case SPG_SET_ESTABLISH: >+ /* Only accept the new pathgroup id when >+ 1) it has not yet been set (ie contains zeros) or >+ 2) It is set, but we are setting the same value */ >+ if(memcmp(dev->pgid, >+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 11) >+ && memcmp(dev->pgid, iobuf+1, 11)) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Bytes 1-11 contain the path group identifier */ >+ memcpy (dev->pgid, iobuf+1, 11); // (set initial value) >+ dev->pgstat = SPG_PATHSTAT_GROUPED | SPG_PARTSTAT_IENABLED; >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ case SPG_SET_DISBAND: >+ dev->pgstat = 0; >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ default: >+ case SPG_SET_RESIGN: >+ dev->pgstat = 0; >+ memset (dev->pgid, 0, 11); // (reset to zero) >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ } // end switch((iobuf[0] & SPG_SET_COMMAND)) >+ >+ break; >+ >+ } /* End case 0xAF: SET PATH GROUP ID */ >+ >+ /*---------------------------------------------------------------*/ >+ /* ASSIGN */ >+ /*---------------------------------------------------------------*/ >+ case 0xB7: >+ { >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (11); >+ >+ /* Control information length must be at least 11 bytes */ >+ if (count < len) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ if((memcmp(iobuf,"\00\00\00\00\00\00\00\00\00\00",11)==0) >+ || (memcmp(iobuf,dev->pgid,11)==0)) >+ { >+ dev->pgstat |= SPG_PARTSTAT_XENABLED; /* Set Explicit Partition Enabled */ >+ } >+ else >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* MEDIUM SENSE (3590) */ >+ /*---------------------------------------------------------------*/ >+ case 0xC2: >+ { >+ /* GA32-0331 IBM 3590 Hardware Reference >+ >+ The 3590 Hardware Reference manual lists many different >+ "Mode Sense" Pages that the 3590 supports, with one of >+ the supported pages being Mode Page X'23': the "Medium >+ Sense" mode page: >+ >+ The Medium Sense page provides information about >+ the state of the medium currently associated with >+ the device, if any. >+ */ >+ >+#if 0 // ZZ FIXME: not coded yet >+ >+ // PROGRAMMING NOTE: until we can add support to Hercules >+ // allowing direct SCSI i/o (so that we can issue the 10-byte >+ // Mode Sense (X'5A') command to ask for Mode Page x'23' = >+ // Medium Sense) we have no choice but to reject the command. >+ >+ // ZZ FIXME: not written yet. >+ >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ >+#else // ++++ BEGIN MEDIUM SENSE HACK ++++ >+ >+ /* ZZ FIXME: *** TEMPORARY(?) HACK *** >+ >+ The following clues were gleaned from Linux 390 source: >+ >+ struct tape_3590_med_sense >+ { >+ unsigned int macst:4; >+ unsigned int masst:4; >+ >+ char pad[127]; >+ } >+ >+ #define MSENSE_UNASSOCIATED 0x00 >+ #define MSENSE_ASSOCIATED_MOUNT 0x01 >+ #define MSENSE_ASSOCIATED_UMOUNT 0x02 >+ >+ case TO_MSEN: >+ >+ sense = (struct tape_3590_med_sense *) request->cpdata; >+ >+ if (sense->masst == MSENSE_UNASSOCIATED) >+ tape_med_state_set(device, MS_UNLOADED); >+ >+ if (sense->masst == MSENSE_ASSOCIATED_MOUNT) >+ tape_med_state_set(device, MS_LOADED); >+ break; >+ */ >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (128); >+ >+ /* Return Media Sense data... */ >+ >+ memset( iobuf, 0, num ); // (init to all zeroes first) >+ >+ if (dev->tmh->tapeloaded( dev, unitstat, code )) >+ iobuf[0] |= (0x01 & 0x0F); // MSENSE_ASSOCIATED_MOUNT >+// else >+// iobuf[0] |= (0x00 & 0x0F); // MSENSE_UNASSOCIATED >+ >+#endif // ++++ END MEDIUM SENSE HACK ++++ >+ >+ break; >+ >+ } /* End case 0xC2: MEDIUM SENSE */ >+ >+ /*---------------------------------------------------------------*/ >+ /* SET TAPE-WRITE IMMEDIATE (3480 and later) */ >+ /*---------------------------------------------------------------*/ >+ case 0xC3: >+ { >+ // NOTE: the "Mode Set" interpretation of this CCW for all >+ // models earlier than 3480 are handled by the command-table; >+ // the "Set Tape-Write Immediate" interpretation of this CCW >+ // for 3480 and later models is handled below. >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Set Tape-Write-Immediate (X'C3') >+ >+ The Set Tape-Write-Immediate command causes all subsequent >+ Write commands in the channel program to perform as write- >+ immediate commands. >+ >+ The tape-write-immediate command is explicitly requested by a >+ Mode Set or Set Tape-Write-Immediate command. The subsystem >+ forces the tape-write-immediate command while the tape is >+ positioned beyond logical end of volume. This prevents more >+ than one record from being in the buffer if the physical end of >+ volume is reached. It may also be forced when load balancing >+ is performed or on drives that write the 3480-2 XF format just >+ before end of wrap processing. >+ */ >+ >+ /* GA32-0329 3590 Introduction and Planning Guide >+ >+ When data is physically transferred to the tape medium it is >+ always immediately reread and verified. The writing of data >+ is normally buffered, however, which defers the physical >+ transfer of the logical blocks to the tape until the buffer >+ conditions require the offloading of the data or until a >+ synchronizing command requires the transfer. If immediate >+ validation of a successful transfer of data to the tape is >+ required at the time that each logical block is written, >+ then Tape Write Immediate mode may be programmatically invoked. >+ This results in block-by-block synchronization and verification >+ of successful transfer all the way to the medium, but at a >+ very substantial cost in application performance. >+ */ >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* set write-immedediate mode and perform sync function */ >+ write_immed = 1; >+ if ((rc = dev->tmh->sync( dev, unitstat, code )) == 0) >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ break; >+ >+ } /* End case 0xC3: SET TAPE-WRITE IMMEDIATE */ >+ >+ /*---------------------------------------------------------------*/ >+ /* UNASSIGN */ >+ /*---------------------------------------------------------------*/ >+ case 0xC7: >+ { >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (11); >+ >+ /* Control information length must be at least 11 bytes */ >+ if (count < len) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Reset to All Implicitly enabled */ >+ dev->pgstat=0; >+ >+ /* Reset Path group ID password */ >+ memset(dev->pgid,0,11); >+ >+ /* Reset drive password */ >+ memset(dev->drvpwd,0,sizeof(dev->drvpwd)); >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* MODE SENSE (3590) */ >+ /*---------------------------------------------------------------*/ >+ case 0xCF: >+ { >+ /* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference >+ >+ The MODE SENSE command provides a means for a target to >+ report parameters to the initiator. It is a complementary >+ command to the MODE SELECT command. >+ */ >+ >+ /* GA32-0331 IBM 3590 Hardware Reference >+ >+ The 3590 Hardware Reference manual lists many different >+ "Mode Sense" Pages that the 3590 supports. >+ */ >+ >+ // ZZ FIXME: not written yet. >+ >+ /* Set command reject sense byte, and unit check status */ >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* MODE SET (3480 or later) */ >+ /*---------------------------------------------------------------*/ >+ case 0xDB: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Mode Set (X'DB') >+ >+ The Mode Set command controls specific aspects of command >+ processing within a given command chain. >+ >+ The Mode Set command requires one byte of information from the channel. >+ The format of the byte is: >+ >+ ________ __________________________________________________________ >+ | Bit | Description | >+ |________|__________________________________________________________| >+ | 0,1 | Reserved | >+ |________|__________________________________________________________| >+ | 2 | Tape-Write-Immediate Mode | >+ | | | >+ | | If active, any subsequent Write commands within the | >+ | | current command chain are processed in tape-write- | >+ | | immediate mode if no other conditions preclude this | >+ | | mode. If inactive, Write commands are processed in | >+ | | buffered mode if no other conditions preclude this | >+ | | mode. The default is inactivate. | >+ |________|__________________________________________________________| >+ | 3 | Supervisor Inhibit | >+ | | | >+ | | If active, any subsequent supervisor command within | >+ | | the current command chain is presented unit check | >+ | | status with associated sense data indicating ERA code | >+ | | 27. The supervisor inhibit control also determines | >+ | | if pending buffered log data is reset when a Read | >+ | | Buffered Log command is issued. The default is | >+ | | inactivate. | >+ |________|__________________________________________________________| >+ | 4 | Improved Data Recording Capability (IDRC) | >+ | | | >+ | | If active, IDRC is invoked for any subsequent Write | >+ | | commands within the current command chain. See Table | >+ | | 7 in topic 1.16.6 for the default settings. | >+ |________|__________________________________________________________| >+ | 5-7 | Reserved | >+ |________|__________________________________________________________| >+ >+ The Mode Set command is a supervisor command and cannot be performed >+ if preceded by a Mode Set command that inhibits supervisor commands. >+ */ >+ >+ /* Command reject if the volume is currently fenced */ >+ if (dev->fenced) >+ { >+ build_senseX (TAPE_BSENSE_FENCED, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (1); >+ >+ /* Check for count field of at least 1 byte, and that >+ supvr-inhibit mode hasn't already been established */ >+ if (0 >+ || count < len >+ || supvr_inhibit >+ ) >+ { >+ build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >+ break; >+ } >+ >+ /* Assign a unique Message Id for this I/O if needed */ >+ INCREMENT_MESSAGEID(dev); >+ >+ /* Process request */ >+ if (iobuf[0] & MSET_SUPVR_INHIBIT) >+ supvr_inhibit = 1; /* set supvr-inhibit mode*/ >+ >+ if (iobuf[0] & MSET_WRITE_IMMED) >+ write_immed = 1; /* set write-immed. mode */ >+ >+ build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ break; >+ >+ } /* End case 0xDB: MODE SET */ >+ >+ /*---------------------------------------------------------------*/ >+ /* CONTROL ACCESS */ >+ /*---------------------------------------------------------------*/ >+ case 0xE3: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Control Access (X'E3') >+ >+ The Control Access command is used to perform the set-password, >+ conditional-enable, and conditional-disable functions of dynamic >+ partitioning. >+ >+ The command requires 12 bytes of data to be transferred from the >+ channel to the control unit which is defined as follows: >+ >+ ________ ________ ___________________________________________ >+ | Byte | Bit | Description | >+ |________|________|___________________________________________| >+ | 0 | | Function Control | >+ |________|________|___________________________________________| >+ | | 0,1 | 0 (x'00') Set Password | >+ | | | 1 (x'40') Conditional Disable | >+ | | | 2 (x'80') Conditional Enable | >+ | | | 3 (x'C0') Reserved (Invalid) | >+ |________|________|___________________________________________| >+ | | 2-7 | Reserved (must be B'0') | >+ |________|________|___________________________________________| >+ | 1-11 | | Password | >+ |________|________|___________________________________________| >+ */ >+ >+ /* Command Reject if Supervisor-Inhibit */ >+ if (supvr_inhibit) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (12); >+ >+ /* Control information length must be at least 12 bytes */ >+ if (count < len) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Byte 0 is the CAC mode-of-use */ >+ switch (iobuf[0]) >+ { >+ /*-----------------------------------------------------------*/ >+ /* Set Password */ >+ /* 0x00nnnnnnnnnnnnnnnnnnnnnn */ >+ /*-----------------------------------------------------------*/ >+ case CAC_SET_PASSWORD: >+ { >+ /* Password must not be zero >+ and the device path must be Explicitly Enabled */ >+ if (0 >+ || memcmp( iobuf+1, "\00\00\00\00\00\00\00\00\00\00\00", 11 ) == 0 >+ || (dev->pgstat & SPG_PARTSTAT_XENABLED) == 0 >+ ) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Set Password if none set yet */ >+ if (memcmp( dev->drvpwd, "\00\00\00\00\00\00\00\00\00\00\00", 11 ) == 0) >+ { >+ memcpy (dev->drvpwd, iobuf+1, 11); >+ } >+ else /* Password already set - they must match */ >+ { >+ if (memcmp( dev->drvpwd, iobuf+1, 11 ) != 0) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ } >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Conditional Enable */ >+ /* 0x80nnnnnnnnnnnnnnnnnnnnnn */ >+ /*-----------------------------------------------------------*/ >+ case CAC_COND_ENABLE: >+ { >+ /* A drive password must be set and it must match the one given as input */ >+ if (0 >+ || memcmp( dev->drvpwd, "\00\00\00\00\00\00\00\00\00\00\00", 11 ) == 0 >+ || memcmp( dev->drvpwd, iobuf+1, 11 ) != 0 >+ ) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*-----------------------------------------------------------*/ >+ /* Conditional Disable */ >+ /* 0x40nnnnnnnnnnnnnnnnnnnnnn */ >+ /*-----------------------------------------------------------*/ >+ case CAC_COND_DISABLE: >+ { >+ /* A drive password is set, it must match the one given as input */ >+ if (1 >+ && memcmp (dev->drvpwd, "\00\00\00\00\00\00\00\00\00\00\00", 11) != 0 >+ && memcmp (dev->drvpwd, iobuf+1, 11) != 0 >+ ) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ default: /* Unsupported Control Access Function */ >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ } /* End switch (iobuf[0]) */ >+ >+ break; >+ >+ } /* End case 0xE3 CONTROL ACCESS */ >+ >+ /*---------------------------------------------------------------*/ >+ /* SENSE ID (3422 and later) */ >+ /*---------------------------------------------------------------*/ >+ case 0xE4: >+ { >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ /* AUTOMOUNT QUERY - part 2 (if command-chained from prior 0x4B) */ >+ if (1 >+ && dev->tapedevt != TAPEDEVT_SCSITAPE >+ && sysblk.tamdir != NULL >+ && !dev->noautomount >+ && (chained & CCW_FLAGS_CC) >+ && 0x4B == prevcode >+ ) >+ { >+ int i; // (work) >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (strlen(dev->filename)); >+ >+ /* Copy device filename to guest storage */ >+ for (i=0; i < num; i++) >+ iobuf[i] = host_to_guest( dev->filename[i] ); >+ >+ /* Return normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+#endif /* OPTION_TAPE_AUTOMOUNT */ >+ >+ /* SENSE ID did not exist on the 3803 */ >+ /* If numdevid is 0, then 0xE4 not supported */ >+ if (dev->numdevid==0) >+ { >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ break; >+ } >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (dev->numdevid); >+ >+ /* Copy device identifier bytes to channel I/O buffer */ >+ memcpy (iobuf, dev->devid, num); >+ >+ /* Return unit status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ } >+ >+ /*---------------------------------------------------------------*/ >+ /* READ CONFIGURATION DATA (3490 and later) */ >+ /*---------------------------------------------------------------*/ >+ case 0xFA: >+ { >+ /* GA32-0127 IBM 3490E Hardware Reference >+ >+ Read Configuration Data (X'FA') >+ >+ A Read Configuration Data command causes 160 bytes of data to >+ be transferred from the control unit to the channel. The data >+ transferred by this command is referred to as a configuration >+ record and is associated with the addressed device-path pair. >+ The configuration record from each device-path pair provides the >+ host with identifiers of node elements internal to the subsystem. >+ */ >+ >+ static const BYTE cfgdata[] = // (prototype data) >+ { >+ // ---------------- Device NED --------------------------------------------------- >+ 0xCC, // 0: NED code >+ 0x01, // 1: Type (X'01' = I/O Device) >+ 0x02, // 2: Class (X'02' = Magnetic Tape) >+ 0x00, // 3: (Reserved) >+ 0xF0,0xF0,0xF3,0xF4,0xF9,0xF0, // 4-9: Type ('003490') >+ 0xC3,0xF1,0xF0, // 10-12: Model ('C10') >+ 0xC8,0xD9,0xC3, // 13-15: Manufacturer ('HRC' = Hercules) >+ 0xE9,0xE9, // 16-17: Plant of Manufacture ('ZZ' = Herc) >+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // 18-29: Sequence Number >+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // >+ 0x00, 0x00, // 30-31: Tag (x'000n', n = Logical Drive Address) >+ // ---------------- Control Unit NED --------------------------------------------- >+ 0xC4, // 32: NED code >+ 0x02, // 33: Type (X'02' = Control Unit) >+ 0x00, // 34: Class (X'00' = Undefined) >+ 0x00, // 35: (Reserved) >+ 0xF0,0xF0,0xF3,0xF4,0xF9,0xF0, // 36-41: Type ('003490') >+ 0xC3,0xF1,0xF0, // 42-44: Model ('C10') >+ 0xC8,0xD9,0xC3, // 45-47: Manufacturer ('HRC' = Hercules) >+ 0xE9,0xE9, // 48-49: Plant of Manufacture ('ZZ' = Herc) >+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // 50-61: Sequence Number >+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // >+ 0x00, 0x00, // 62-63: Tag (x'0000') >+ // ---------------- Library NED -------------------------------------------------- >+ 0x00, // 64: NED code (x'00' = Not Used) >+ 0x00, // 65: Type >+ 0x00, // 66: Class >+ 0x00, // 67: (Reserved) >+ 0x00,0x00,0x00,0x00,0x00,0x00, // 68-73: Type >+ 0x00,0x00,0x00, // 74-76: Model >+ 0x00,0x00,0x00, // 77-79: Manufacturer >+ 0x00,0x00, // 80-81: Plant of Manufacture >+ 0x00,0x00,0x00,0x00,0x00,0x00, // 82-93: Sequence Number >+ 0x00,0x00,0x00,0x00,0x00,0x00, // >+ 0x00, 0x00, // 94-95: Tag >+ // ---------------- Token NED --------------------------------------------------- >+ 0xEC, // 96: NED code >+ 0x00, // 97: Type (X'00' = Unspecified) >+ 0x00, // 98: Class (X'00' = Undefined) >+ 0x00, // 99: (Reserved) >+ 0xF0,0xF0,0xF3,0xF4,0xF9,0xF0, // 100-105: Type ('003490') >+ 0xC3,0xF1,0xF0, // 106-108: Model ('C10') >+ 0xC8,0xD9,0xC3, // 109-111: Manufacturer ('HRC' = Hercules) >+ 0xE9,0xE9, // 112-113: Plant of Manufacture ('ZZ' = Herc) >+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // 114-125: Sequence Number >+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // >+ 0x00, 0x00, // 126-127: Tag (x'0000') >+ // ---------------- General NEQ -------------------------------------------------- >+ 0x80, // 128: NED code >+ 0x80, // 129: Record Selector: >+ // x'80' = Control Unit 0 >+ // x'81' = Control Unit 1 >+ 0x00,0x80, // 130-131: Interface Id: >+ // x'0080' = CU Channel Adapter A >+ // x'0040' = CU Channel Adapter B >+ 0x00, // 132: Device-Dependent Timeout >+ 0x00,0x00,0x00, // 133-135: (Reserved) >+ 0x00, // 136: Extended Information: >+ // x'00' for Logical Drive Addresses 0-7 >+ // x'01' for Logical Drive Addresses 8-F >+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 137-159: (Reserved) >+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00, >+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00, >+ 0x00,0x00, >+ }; >+ >+ ASSERT( sizeof(cfgdata) == 160 ); >+ >+ /* Calculate residual byte count */ >+ RESIDUAL_CALC (160); >+ >+ /* Copy prototype Configuration Data to channel I/O buffer */ >+ memcpy (iobuf, cfgdata, sizeof(cfgdata)); >+ >+ /* Fixup values for this particular device/type... NOTE: we >+ only fixup the Device and Control Unit NEDs here. The Token >+ NED's type/model values come from the Device NED's values. >+ */ >+ if (0x3480 == dev->devtype) >+ { >+ memcpy (&iobuf[7], "\xF4\xF8", 2); // '48' >+ memcpy (&iobuf[39], "\xF4\xF8", 2); // '48' >+ >+ memcpy (&iobuf[10], "\xC4\xF3\xF1", 3); // 'D31' >+ memcpy (&iobuf[42], "\xC4\xF3\xF1", 3); // 'D31' >+ } >+ else if (0x3490 == dev->devtype) >+ { >+// memcpy (&iobuf[7], "\xF4\xF9", 2); // '49' >+// memcpy (&iobuf[39], "\xF4\xF9", 2); // '49' >+ >+// memcpy (&iobuf[10], "\xC3\xF1\xF0", 3); // 'C10' >+// memcpy (&iobuf[42], "\xC3\xF1\xF0", 3); // 'C10' >+ } >+ else if (0x3590 == dev->devtype) >+ { >+ memcpy (&iobuf[7], "\xF5\xF9", 2); // '59' >+ memcpy (&iobuf[39], "\xF5\xF9", 2); // '59' >+ >+ memcpy (&iobuf[10], "\xC2\xF1\xC1", 3); // 'B1A' >+ memcpy (&iobuf[42], "\xC1\xF5\xF0", 3); // 'A50' >+ } >+ >+ memcpy (&iobuf[100], &iobuf[4], 9); // (set Token NED Type/Model from Device NED) >+ >+ iobuf[31] |= (dev->devnum & 0x0F); // (set Logical Drive Address) >+ >+ if ((dev->devnum & 0x0F) > 7) >+ iobuf[136] = 0x01; // (set Extended Information) >+ >+ /* Return normal status */ >+ build_senseX (TAPE_BSENSE_STATUSONLY, dev, unitstat, code); >+ break; >+ >+ } /* End case 0xFA: READ CONFIGURATION DATA */ >+ >+ /*---------------------------------------------------------------*/ >+ /* INVALID OPERATION */ >+ /*---------------------------------------------------------------*/ >+ default: >+ { >+ /* Set command reject sense byte, and unit check status */ >+ build_senseX (TAPE_BSENSE_BADCOMMAND, dev, unitstat, code); >+ } >+ >+ } /* end switch (code) */ >+ >+} /* end function tapedev_execute_ccw */ >+ >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+/*-------------------------------------------------------------------*/ >+/* Find next more-restrictive TAMDIR subdirectory entry... */ >+/*-------------------------------------------------------------------*/ >+static TAMDIR* findtamdir( int rej, int minlen, const char* pszDir ) >+{ >+ TAMDIR *pTAMDIR = sysblk.tamdir; /* always search entire list */ >+ do >+ if (1 >+ && pTAMDIR->rej == rej >+ && pTAMDIR->len > minlen >+ && strnfilenamecmp( pszDir, pTAMDIR->dir, pTAMDIR->len ) == 0 >+ ) >+ return pTAMDIR; >+ while ((pTAMDIR = pTAMDIR->next) != NULL); >+ return NULL; >+} >+#endif // defined( OPTION_TAPE_AUTOMOUNT ) >+ >+/*-------------------------------------------------------------------*/ >+/* Load Display channel command processing... */ >+/*-------------------------------------------------------------------*/ >+void load_display (DEVBLK *dev, BYTE *buf, U16 count) >+{ >+U16 i; /* Array subscript */ >+char msg1[9], msg2[9]; /* Message areas (ASCIIZ) */ >+BYTE fcb; /* Format Control Byte */ >+BYTE tapeloaded; /* (boolean true/false) */ >+BYTE* msg; /* (work buf ptr) */ >+ >+ if ( !count ) >+ return; >+ >+ /* Pick up format control byte */ >+ fcb = *buf; >+ >+ /* Copy and translate messages... */ >+ >+ memset( msg1, 0, sizeof(msg1) ); >+ memset( msg2, 0, sizeof(msg2) ); >+ >+ msg = buf+1; >+ >+ for (i=0; *msg && i < 8 && ((i+1)+0) < count; i++) >+ msg1[i] = guest_to_host(*msg++); >+ >+ msg = buf+1+8; >+ >+ for (i=0; *msg && i < 8 && ((i+1)+8) < count; i++) >+ msg2[i] = guest_to_host(*msg++); >+ >+ msg1[ sizeof(msg1) - 1 ] = 0; >+ msg2[ sizeof(msg2) - 1 ] = 0; >+ >+ tapeloaded = dev->tmh->tapeloaded( dev, NULL, 0 ); >+ >+ switch ( fcb & FCB_FS ) // (high-order 3 bits) >+ { >+ case FCB_FS_READYGO: // 0x00 >+ >+ /* >+ || 000b: "The message specified in bytes 1-8 and 9-16 is >+ || maintained until the tape drive next starts tape >+ || motion, or until the message is updated." >+ */ >+ >+ dev->tapedispflags = 0; >+ >+ strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >+ strlcpy( dev->tapemsg2, msg2, sizeof(dev->tapemsg2) ); >+ >+ dev->tapedisptype = TAPEDISPTYP_WAITACT; >+ >+ break; >+ >+ case FCB_FS_UNMOUNT: // 0x20 >+ >+ /* >+ || 001b: "The message specified in bytes 1-8 is maintained >+ || until the tape cartridge is physically removed from >+ || the tape drive, or until the next unload/load cycle. >+ || If the drive does not contain a cartridge when the >+ || Load Display command is received, the display will >+ || contain the message that existed prior to the receipt >+ || of the command." >+ */ >+ >+ dev->tapedispflags = 0; >+ >+ if ( tapeloaded ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_UNMOUNT; >+ dev->tapedispflags = TAPEDISPFLG_REQAUTOMNT; >+ >+ strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >+ >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA099I %4.4X: Tape Display \"%s\" Until Unmounted\n"), >+ dev->devnum, dev->tapemsg1 ); >+ } >+ >+ break; >+ >+ case FCB_FS_MOUNT: // 0x40 >+ >+ /* >+ || 010b: "The message specified in bytes 1-8 is maintained >+ || until the drive is next loaded. If the drive is >+ || loaded when the Load Display command is received, >+ || the display will contain the message that existed >+ || prior to the receipt of the command." >+ */ >+ >+ dev->tapedispflags = 0; >+ >+ if ( !tapeloaded ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_MOUNT; >+ dev->tapedispflags = TAPEDISPFLG_REQAUTOMNT; >+ >+ strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >+ >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA099I %4.4X: Tape Display \"%s\" Until Mounted\n"), >+ dev->devnum, dev->tapemsg1 ); >+ } >+ >+ break; >+ >+ case FCB_FS_NOP: // 0x60 >+ default: >+ >+ /* >+ || 011b: "This value is used to physically access a drive >+ || without changing the message display. This option >+ || can be used to test whether a control unit can >+ || physically communicate with a drive." >+ */ >+ >+ return; >+ >+ case FCB_FS_RESET_DISPLAY: // 0x80 >+ >+ /* >+ || 100b: "The host message being displayed is cancelled and >+ || a unit message is displayed instead." >+ */ >+ >+ dev->tapedispflags = 0; >+ dev->tapedisptype = TAPEDISPTYP_IDLE; >+ >+ break; >+ >+ case FCB_FS_UMOUNTMOUNT: // 0xE0 >+ >+ /* >+ || 111b: "The message in bytes 1-8 is displayed until a tape >+ || cartridge is physically removed from the tape drive, >+ || or until the drive is next loaded. The message in >+ || bytes 9-16 is displayed until the drive is next loaded. >+ || If no cartridge is present in the drive, the first >+ || message is ignored and only the second message is >+ || displayed until the drive is next loaded." >+ */ >+ >+ dev->tapedispflags = 0; >+ >+ strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >+ strlcpy( dev->tapemsg2, msg2, sizeof(dev->tapemsg2) ); >+ >+ if ( tapeloaded ) >+ { >+ dev->tapedisptype = TAPEDISPTYP_UMOUNTMOUNT; >+ dev->tapedispflags = TAPEDISPFLG_REQAUTOMNT; >+ >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA099I %4.4X: Tape Display \"%s\" Until Unmounted, then \"%s\" Until Mounted\n"), >+ dev->devnum, dev->tapemsg1, dev->tapemsg2 ); >+ } >+ else >+ { >+ dev->tapedisptype = TAPEDISPTYP_MOUNT; >+ dev->tapedispflags = TAPEDISPFLG_MESSAGE2 | TAPEDISPFLG_REQAUTOMNT; >+ >+ if ( dev->ccwtrace || dev->ccwstep ) >+ logmsg(_("HHCTA099I %4.4X: Tape \"%s\" Until Mounted\n"), >+ dev->devnum, dev->tapemsg2 ); >+ } >+ >+ break; >+ } >+ >+ /* Set the flags... */ >+ >+ /* >+ "When bit 7 (FCB_AL) is active and bits 0-2 (FCB_FS) specify >+ a Mount Message, then only the first eight characters of the >+ message are displayed and bits 3-5 (FCB_AM, FCB_BM, FCB_M2) >+ are ignored." >+ */ >+ if (1 >+ && ( fcb & FCB_AL ) >+ && ( ( fcb & FCB_FS ) == FCB_FS_MOUNT ) >+ ) >+ { >+ fcb &= ~( FCB_AM | FCB_BM | FCB_M2 ); >+ dev->tapedispflags &= ~TAPEDISPFLG_MESSAGE2; >+ } >+ >+ /* >+ "When bit 7 (FCB_AL) is active and bits 0-2 (FCB_FS) specify >+ a Demount/Mount message, then only the last eight characters >+ of the message are displayed. Bits 3-5 (FCB_AM, FCB_BM, FCB_M2) >+ are ignored." >+ */ >+ if (1 >+ && ( fcb & FCB_AL ) >+ && ( ( fcb & FCB_FS ) == FCB_FS_UMOUNTMOUNT ) >+ ) >+ { >+ fcb &= ~( FCB_AM | FCB_BM | FCB_M2 ); >+ dev->tapedispflags |= TAPEDISPFLG_MESSAGE2; >+ } >+ >+ /* >+ "When bit 3 (FCB_AM) is set to 1, then bits 4 (FCB_BM) and 5 >+ (FCB_M2) are ignored." >+ */ >+ if ( fcb & FCB_AM ) >+ fcb &= ~( FCB_BM | FCB_M2 ); >+ >+ dev->tapedispflags |= (((fcb & FCB_AM) ? TAPEDISPFLG_ALTERNATE : 0 ) | >+ ( (fcb & FCB_BM) ? TAPEDISPFLG_BLINKING : 0 ) | >+ ( (fcb & FCB_M2) ? TAPEDISPFLG_MESSAGE2 : 0 ) | >+ ( (fcb & FCB_AL) ? TAPEDISPFLG_AUTOLOADER : 0 )); >+ >+ UpdateDisplay( dev ); >+ ReqAutoMount( dev ); >+ >+} /* end function load_display */ >+ >+ >+/*********************************************************************/ >+/*********************************************************************/ >+/** **/ >+/** SENSE CCW HANDLING FUNCTIONS **/ >+/** **/ >+/*********************************************************************/ >+/*********************************************************************/ >+ >+/*-------------------------------------------------------------------*/ >+/* build_senseX */ >+/*-------------------------------------------------------------------*/ >+/* Construct sense bytes and unit status */ >+/* Note: name changed because semantic changed */ >+/* ERCode is our internal ERror-type code */ >+/* */ >+/* Uses the 'TapeSenseTable' table index */ >+/* from the 'TapeDevtypeList' table to route call to */ >+/* one of the below device-specific sense functions */ >+/*-------------------------------------------------------------------*/ >+void build_senseX (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+int i; >+BYTE usr; >+int sense_built; >+ sense_built = 0; >+ if(unitstat==NULL) >+ { >+ unitstat = &usr; >+ } >+ for(i = 0;TapeDevtypeList[i] != 0; i += TAPEDEVTYPELIST_ENTRYSIZE) >+ { >+ if (TapeDevtypeList[i] == dev->devtype) >+ { >+ // Clear old sense if we're going to completely rebuild it... >+ >+ if (TAPE_BSENSE_STATUSONLY != ERCode) >+ { >+ memset( dev->sense, 0, sizeof(dev->sense) ); >+ dev->sns_pending = 0; >+ } >+ >+ // Call the primary sense function (e.g. "build_sense_3480_etal")... >+ >+ TapeSenseTable[TapeDevtypeList[i+4]](ERCode,dev,unitstat,ccwcode); >+ sense_built = 1; >+ >+ // Unit-exception s/b signalled for all write operations >+ // once the end-of-tape (EOT) reflector has been passed... >+ >+ if (1 >+ && TAPE_BSENSE_STATUSONLY == ERCode >+ && >+ (0 >+ || 0x01 == ccwcode // write >+ || 0x17 == ccwcode // erase gap >+ || 0x1F == ccwcode // write tapemark >+ ) >+ && dev->tmh->passedeot(dev) >+ ) >+ { >+ // We're still in the "Early Warning Zone", >+ // so keep warning them... >+ >+ *unitstat |= CSW_UX; // ("Warning!") >+ } >+ break; >+ } >+ } >+ if (!sense_built) >+ { >+ memset( dev->sense, 0, sizeof(dev->sense) ); >+ dev->sense[0]=SENSE_EC; >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ } >+ if (*unitstat & CSW_UC) >+ { >+ dev->sns_pending = 1; >+ } >+ return; >+ >+} /* end function build_senseX */ >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_3410_3420 */ >+/*-------------------------------------------------------------------*/ >+void build_sense_3410_3420 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+ // NOTE: caller should have cleared sense area to zeros >+ // if this isn't a 'TAPE_BSENSE_STATUSONLY' call >+ >+ switch(ERCode) >+ { >+ case TAPE_BSENSE_TAPEUNLOADED: >+ switch(ccwcode) >+ { >+ case 0x01: // write >+ case 0x02: // read >+ case 0x0C: // read backward >+ *unitstat = CSW_CE | CSW_UC | (dev->tdparms.deonirq?CSW_DE:0); >+ break; >+ case 0x03: // nop >+ *unitstat = CSW_UC; >+ break; >+ case 0x0f: // rewind unload >+ /* >+ *unitstat = CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >+ */ >+ *unitstat = CSW_UC | CSW_DE | CSW_CUE; >+ break; >+ default: >+ *unitstat = CSW_CE | CSW_UC | CSW_DE; >+ break; >+ } // end switch(ccwcode) >+ dev->sense[0] = SENSE_IR; >+ dev->sense[1] = SENSE1_TAPE_TUB; >+ break; >+ case TAPE_BSENSE_RUN_SUCCESS: /* RewUnld op */ >+ *unitstat = CSW_UC | CSW_DE | CSW_CUE; >+ /* >+ *unitstat = CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >+ */ >+ dev->sense[0] = SENSE_IR; >+ dev->sense[1] = SENSE1_TAPE_TUB; >+ break; >+ case TAPE_BSENSE_REWINDFAILED: >+ case TAPE_BSENSE_FENCED: >+ case TAPE_BSENSE_EMPTYTAPE: >+ case TAPE_BSENSE_ENDOFTAPE: >+ case TAPE_BSENSE_BLOCKSHORT: >+ /* On 3411/3420 the tape runs off the reel in that case */ >+ /* this will cause pressure loss in both columns */ >+ case TAPE_BSENSE_LOCATEERR: >+ /* Locate error: This is more like improperly formatted tape */ >+ /* i.e. the tape broke inside the drive */ >+ /* So EC instead of DC */ >+ case TAPE_BSENSE_TAPELOADFAIL: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[1] = SENSE1_TAPE_TUB; >+ dev->sense[7] = 0x60; >+ break; >+ case TAPE_BSENSE_ITFERROR: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[1] = SENSE1_TAPE_TUB; >+ dev->sense[4] = 0x80; /* Tape Unit Reject */ >+ break; >+ case TAPE_BSENSE_READFAIL: >+ case TAPE_BSENSE_BADALGORITHM: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0xC0; /* Vertical CRC check & Multitrack error */ >+ break; >+ case TAPE_BSENSE_WRITEFAIL: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0x60; /* Longitudinal CRC check & Multitrack error */ >+ break; >+ case TAPE_BSENSE_BADCOMMAND: >+ case TAPE_BSENSE_INCOMPAT: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_CR; >+ dev->sense[4] = 0x01; >+ break; >+ case TAPE_BSENSE_WRITEPROTECT: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_CR; >+ break; >+ case TAPE_BSENSE_LOADPTERR: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = 0; >+ break; >+ case TAPE_BSENSE_READTM: >+ *unitstat = CSW_CE|CSW_DE|CSW_UX; >+ break; >+ case TAPE_BSENSE_UNSOLICITED: >+ *unitstat = CSW_CE|CSW_DE; >+ break; >+ case TAPE_BSENSE_STATUSONLY: >+ *unitstat = CSW_CE|CSW_DE; >+ break; >+ } // end switch(ERCode) >+ >+ if (TAPE_BSENSE_STATUSONLY == ERCode) >+ return; // (mission accomplished) >+ >+ /* Fill in the common sense information */ >+ >+ if (strcmp(dev->filename,TAPE_UNLOADED) == 0 >+ || !dev->tmh->tapeloaded(dev,NULL,0)) >+ { >+ dev->sense[0] |= SENSE_IR; >+ dev->sense[1] |= SENSE1_TAPE_FP; >+ } >+ else >+ { >+ dev->sense[0] &= ~SENSE_IR; >+ dev->sense[1] |= IsAtLoadPoint( dev ) ? SENSE1_TAPE_LOADPT : 0; >+ dev->sense[1] |= dev->readonly || dev->tdparms.logical_readonly ? >+ SENSE1_TAPE_FP : 0; >+ } >+ if (dev->tmh->passedeot(dev)) >+ { >+ dev->sense[4] |= 0x40; >+ } >+ >+} /* end function build_sense_3410_3420 */ >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_3410 */ >+/*-------------------------------------------------------------------*/ >+void build_sense_3410 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+ build_sense_3410_3420(ERCode,dev,unitstat,ccwcode); >+ >+ dev->sense[5] &= 0x80; >+ dev->sense[5] |= 0x40; >+ dev->sense[6] = 0x22; /* Dual Dens - 3410/3411 Model 2 */ >+ dev->numsense = 9; >+ >+} /* end function build_sense_3410 */ >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_3420 */ >+/*-------------------------------------------------------------------*/ >+void build_sense_3420 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+ build_sense_3410_3420(ERCode,dev,unitstat,ccwcode); >+ >+ /* Following stripped from original 'build_sense' */ >+ dev->sense[5] |= 0xC0; >+ dev->sense[6] |= 0x03; >+ dev->sense[13] = 0x80; >+ dev->sense[14] = 0x01; >+ dev->sense[15] = 0x00; >+ dev->sense[16] = 0x01; >+ dev->sense[19] = 0xFF; >+ dev->sense[20] = 0xFF; >+ dev->numsense = 24; >+ >+} /* end function build_sense_3420 */ >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_3480_etal */ >+/*-------------------------------------------------------------------*/ >+void build_sense_3480_etal (int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE ccwcode) >+{ >+int sns4mat = 0x20; >+ >+ // NOTE: caller should have cleared sense area to zeros >+ // if this isn't a 'TAPE_BSENSE_STATUSONLY' call >+ >+ switch(ERCode) >+ { >+ case TAPE_BSENSE_TAPEUNLOADED: >+ switch(ccwcode) >+ { >+ case 0x01: // write >+ case 0x02: // read >+ case 0x0C: // read backward >+ *unitstat = CSW_CE | CSW_UC; >+ break; >+ case 0x03: // nop >+ *unitstat = CSW_UC; >+ break; >+ case 0x0f: // rewind unload >+ *unitstat = CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >+ break; >+ default: >+ *unitstat = CSW_CE | CSW_UC | CSW_DE; >+ break; >+ } // end switch(ccwcode) >+ dev->sense[0] = SENSE_IR; >+ dev->sense[3] = 0x43; /* ERA 43 = Int Req */ >+ break; >+ case TAPE_BSENSE_RUN_SUCCESS: /* Not an error */ >+ *unitstat = CSW_CE|CSW_DE; >+ dev->sense[0] = SENSE_IR; >+ dev->sense[3] = 0x2B; >+ sns4mat = 0x21; >+ break; >+ case TAPE_BSENSE_TAPELOADFAIL: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_IR|0x02; >+ dev->sense[3] = 0x33; /* ERA 33 = Load Failed */ >+ break; >+ case TAPE_BSENSE_READFAIL: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0x23; >+ break; >+ case TAPE_BSENSE_WRITEFAIL: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0x25; >+ break; >+ case TAPE_BSENSE_BADCOMMAND: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_CR; >+ dev->sense[3] = 0x27; >+ break; >+ case TAPE_BSENSE_INCOMPAT: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_CR; >+ dev->sense[3] = 0x29; >+ break; >+ case TAPE_BSENSE_WRITEPROTECT: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_CR; >+ dev->sense[3] = 0x30; >+ break; >+ case TAPE_BSENSE_EMPTYTAPE: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0x31; >+ break; >+ case TAPE_BSENSE_ENDOFTAPE: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x38; >+ break; >+ case TAPE_BSENSE_LOADPTERR: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = 0; >+ dev->sense[3] = 0x39; >+ break; >+ case TAPE_BSENSE_FENCED: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC|0x02; /* Deffered UC */ >+ dev->sense[3] = 0x47; >+ break; >+ case TAPE_BSENSE_BADALGORITHM: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ if (dev->devtype==0x3480) >+ { >+ dev->sense[3] = 0x47; // (volume fenced) >+ } >+ else // 3490, 3590, etc. >+ { >+ dev->sense[3] = 0x5E; // (bad compaction algorithm) >+ } >+ break; >+ case TAPE_BSENSE_LOCATEERR: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x44; >+ break; >+ case TAPE_BSENSE_BLOCKSHORT: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x36; >+ break; >+ case TAPE_BSENSE_ITFERROR: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x22; >+ break; >+ case TAPE_BSENSE_REWINDFAILED: >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x2C; /* Generic Equipment Malfunction ERP code */ >+ break; >+ case TAPE_BSENSE_READTM: >+ *unitstat = CSW_CE|CSW_DE|CSW_UX; >+ break; >+ case TAPE_BSENSE_UNSOLICITED: >+ *unitstat = CSW_CE|CSW_DE; >+ dev->sense[3] = 0x00; >+ break; >+ case TAPE_BSENSE_STATUSONLY: >+ default: >+ *unitstat = CSW_CE|CSW_DE; >+ break; >+ } // end switch(ERCode) >+ >+ if (TAPE_BSENSE_STATUSONLY == ERCode) >+ return; // (mission accomplished) >+ >+ /* Fill in the common sense information */ >+ >+ switch(sns4mat) >+ { >+ default: >+ case 0x20: >+ case 0x21: >+ dev->sense[7] = sns4mat; >+ memset(&dev->sense[8],0,31-8); >+ break; >+ } // end switch(sns4mat) >+ >+ if (strcmp(dev->filename,TAPE_UNLOADED) == 0 >+ || !dev->tmh->tapeloaded(dev,NULL,0)) >+ { >+ dev->sense[0] |= SENSE_IR; >+ dev->sense[1] |= SENSE1_TAPE_FP; >+ } >+ else >+ { >+ dev->sense[0] &= ~SENSE_IR; >+ dev->sense[1] &= ~(SENSE1_TAPE_LOADPT|SENSE1_TAPE_FP); >+ dev->sense[1] |= IsAtLoadPoint( dev ) ? SENSE1_TAPE_LOADPT : 0; >+ dev->sense[1] |= dev->readonly || dev->tdparms.logical_readonly ? >+ SENSE1_TAPE_FP : 0; >+ } >+ >+ dev->sense[1] |= SENSE1_TAPE_TUA; >+ >+} /* end function build_sense_3480_etal */ >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_3490 */ >+/*-------------------------------------------------------------------*/ >+void build_sense_3490 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+ // Until we know for sure that we have to do something different, >+ // we should be able to safely use the 3480 sense function here... >+ >+ build_sense_3480_etal ( ERCode, dev, unitstat, ccwcode ); >+} >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_3590 */ >+/*-------------------------------------------------------------------*/ >+void build_sense_3590 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+ // Until we know for sure that we have to do something different, >+ // we should be able to safely use the 3480 sense function here... >+ >+ build_sense_3480_etal ( ERCode, dev, unitstat, ccwcode ); >+} >+ >+/*-------------------------------------------------------------------*/ >+/* build_sense_Streaming */ >+/* (8809, 9347, 9348) */ >+/*-------------------------------------------------------------------*/ >+void build_sense_Streaming (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode) >+{ >+ // NOTE: caller should have cleared sense area to zeros >+ // if this isn't a 'TAPE_BSENSE_STATUSONLY' call >+ >+ switch(ERCode) >+ { >+ case TAPE_BSENSE_TAPEUNLOADED: >+ switch(ccwcode) >+ { >+ case 0x01: // write >+ case 0x02: // read >+ case 0x0C: // read backward >+ *unitstat = CSW_CE | CSW_UC | (dev->tdparms.deonirq?CSW_DE:0); >+ break; >+ case 0x03: // nop >+ *unitstat = CSW_UC; >+ break; >+ case 0x0f: // rewind unload >+ /* >+ *unitstat = CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >+ */ >+ *unitstat = CSW_UC | CSW_DE | CSW_CUE; >+ break; >+ default: >+ *unitstat = CSW_CE | CSW_UC | CSW_DE; >+ break; >+ } // end switch(ccwcode) >+ dev->sense[0] = SENSE_IR; >+ dev->sense[3] = 6; /* Int Req ERAC */ >+ break; >+ case TAPE_BSENSE_RUN_SUCCESS: /* RewUnld op */ >+ *unitstat = CSW_UC | CSW_DE | CSW_CUE; >+ /* >+ *unitstat = CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >+ */ >+ dev->sense[0] = SENSE_IR; >+ dev->sense[3] = 6; /* Int Req ERAC */ >+ break; >+ case TAPE_BSENSE_REWINDFAILED: >+ case TAPE_BSENSE_ITFERROR: >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x03; /* Perm Equip Check */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_TAPELOADFAIL: >+ case TAPE_BSENSE_LOCATEERR: >+ case TAPE_BSENSE_ENDOFTAPE: >+ case TAPE_BSENSE_EMPTYTAPE: >+ case TAPE_BSENSE_FENCED: >+ case TAPE_BSENSE_BLOCKSHORT: >+ case TAPE_BSENSE_INCOMPAT: >+ dev->sense[0] = SENSE_EC; >+ dev->sense[3] = 0x10; /* PE-ID Burst Check */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_BADALGORITHM: >+ case TAPE_BSENSE_READFAIL: >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0x09; /* Read Data Check */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_WRITEFAIL: >+ dev->sense[0] = SENSE_DC; >+ dev->sense[3] = 0x07; /* Write Data Check (Media Error) */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_BADCOMMAND: >+ dev->sense[0] = SENSE_CR; >+ dev->sense[3] = 0x0C; /* Bad Command */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_WRITEPROTECT: >+ dev->sense[0] = SENSE_CR; >+ dev->sense[3] = 0x0B; /* File Protect */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_LOADPTERR: >+ dev->sense[0] = SENSE_CR; >+ dev->sense[3] = 0x0D; /* Backspace at Load Point */ >+ *unitstat = CSW_CE|CSW_DE|CSW_UC; >+ break; >+ case TAPE_BSENSE_READTM: >+ *unitstat = CSW_CE|CSW_DE|CSW_UX; >+ break; >+ case TAPE_BSENSE_UNSOLICITED: >+ *unitstat = CSW_CE|CSW_DE; >+ break; >+ case TAPE_BSENSE_STATUSONLY: >+ *unitstat = CSW_CE|CSW_DE; >+ break; >+ } // end switch(ERCode) >+ >+ if (TAPE_BSENSE_STATUSONLY == ERCode) >+ return; // (mission accomplished) >+ >+ /* Fill in the common sense information */ >+ >+ if (strcmp(dev->filename,TAPE_UNLOADED) == 0 >+ || !dev->tmh->tapeloaded(dev,NULL,0)) >+ { >+ dev->sense[0] |= SENSE_IR; >+ dev->sense[1] |= SENSE1_TAPE_FP; >+ dev->sense[1] &= ~SENSE1_TAPE_TUA; >+ dev->sense[1] |= SENSE1_TAPE_TUB; >+ } >+ else >+ { >+ dev->sense[0] &= ~SENSE_IR; >+ dev->sense[1] |= IsAtLoadPoint( dev ) ? SENSE1_TAPE_LOADPT : 0; >+ dev->sense[1] |= dev->readonly || dev->tdparms.logical_readonly ? >+ SENSE1_TAPE_FP : 0; >+ dev->sense[1] |= SENSE1_TAPE_TUA; >+ dev->sense[1] &= ~SENSE1_TAPE_TUB; >+ } >+ if (dev->tmh->passedeot(dev)) >+ { >+ dev->sense[4] |= 0x40; >+ } >+ >+} /* end function build_sense_Streaming */ >+ >+ >+/*********************************************************************/ >+/*********************************************************************/ >+/** **/ >+/** (( I N C O M P L E T E )) **/ >+/** **/ >+/** (experimental possible new sense handling function) **/ >+/** **/ >+/*********************************************************************/ >+/*********************************************************************/ >+ >+#if 0 // ZZ FIXME: To Do... >+ >+/*-------------------------------------------------------------------*/ >+/* Error Recovery Action codes */ >+/*-------------------------------------------------------------------*/ >+/* >+ Even though ERA codes are, technically, only applicable for >+ model 3480/3490/3590 tape drives (the sense information that >+ is returned for model 3480/3490/3590 tape drives include the >+ ERA code in them), we can nonetheless still use them as an >+ argument for our 'BuildTapeSense' function even for other >+ model tape drives (e.g. 3420's for example). That is to say, >+ even though model 3420's for example, don't have an ERA code >+ anywhere in their sense information, we can still use the >+ ERA code as an argument in our call to our 'BuildTapeSense' >+ function without actually using it anywhere in our sense info. >+ In such a case we would be just using it as an internal value >+ to tell us what type of sense information to build for the >+ model 3420, but not for any other purpose. For 3480/3490/3590 >+ model drives however, we not only use it for the same purpose >+ (i.e. as an internal value to tell us what format of sense >+ we need to build) but ALSO as an actual value to be placed >+ into the actual formatted sense information itself too. >+*/ >+ >+#define TAPE_ERA_UNSOLICITED_SENSE 0x00 >+ >+#define TAPE_ERA_DATA_STREAMING_NOT_OPER 0x21 >+#define TAPE_ERA_PATH_EQUIPMENT_CHECK 0x22 >+#define TAPE_ERA_READ_DATA_CHECK 0x23 >+#define TAPE_ERA_LOAD_DISPLAY_CHECK 0x24 >+#define TAPE_ERA_WRITE_DATA_CHECK 0x25 >+#define TAPE_ERA_READ_OPPOSITE 0x26 >+#define TAPE_ERA_COMMAND_REJECT 0x27 >+#define TAPE_ERA_WRITE_ID_MARK_CHECK 0x28 >+#define TAPE_ERA_FUNCTION_INCOMPATIBLE 0x29 >+#define TAPE_ERA_UNSOL_ENVIRONMENTAL_DATA 0x2A >+#define TAPE_ERA_ENVIRONMENTAL_DATA_PRESENT 0x2B >+#define TAPE_ERA_PERMANENT_EQUIPMENT_CHECK 0x2C >+#define TAPE_ERA_DATA_SECURE_ERASE_FAILURE 0x2D >+#define TAPE_ERA_NOT_CAPABLE_BOT_ERROR 0x2E >+ >+#define TAPE_ERA_WRITE_PROTECTED 0x30 >+#define TAPE_ERA_TAPE_VOID 0x31 >+#define TAPE_ERA_TENSION_LOST 0x32 >+#define TAPE_ERA_LOAD_FAILURE 0x33 >+#define TAPE_ERA_UNLOAD_FAILURE 0x34 >+#define TAPE_ERA_DRIVE_EQUIPMENT_CHECK 0x35 >+#define TAPE_ERA_END_OF_DATA 0x36 >+#define TAPE_ERA_TAPE_LENGTH_ERROR 0x37 >+#define TAPE_ERA_PHYSICAL_END_OF_TAPE 0x38 >+#define TAPE_ERA_BACKWARD_AT_BOT 0x39 >+#define TAPE_ERA_DRIVE_SWITCHED_NOT_READY 0x3A >+#define TAPE_ERA_MANUAL_REWIND_OR_UNLOAD 0x3B >+ >+#define TAPE_ERA_OVERRUN 0x40 >+#define TAPE_ERA_RECORD_SEQUENCE_ERROR 0x41 >+#define TAPE_ERA_DEGRADED_MODE 0x42 >+#define TAPE_ERA_DRIVE_NOT_READY 0x43 >+#define TAPE_ERA_LOCATE_BLOCK_FAILED 0x44 >+#define TAPE_ERA_DRIVE_ASSIGNED_ELSEWHERE 0x45 >+#define TAPE_ERA_DRIVE_NOT_ONLINE 0x46 >+#define TAPE_ERA_VOLUME_FENCED 0x47 >+#define TAPE_ERA_UNSOL_INFORMATIONAL_DATA 0x48 >+#define TAPE_ERA_BUS_OUT_CHECK 0x49 >+#define TAPE_ERA_CONTROL_UNIT_ERP_FAILURE 0x4A >+#define TAPE_ERA_CU_AND_DRIVE_INCOMPATIBLE 0x4B >+#define TAPE_ERA_RECOVERED_CHECKONE_FAILED 0x4C >+#define TAPE_ERA_RESETTING_EVENT 0x4D >+#define TAPE_ERA_MAX_BLOCKSIZE_EXCEEDED 0x4E >+ >+#define TAPE_ERA_BUFFERED_LOG_OVERFLOW 0x50 >+#define TAPE_ERA_BUFFERED_LOG_END_OF_VOLUME 0x51 >+#define TAPE_ERA_END_OF_VOLUME_COMPLETE 0x52 >+#define TAPE_ERA_GLOBAL_COMMAND_INTERCEPT 0x53 >+#define TAPE_ERA_TEMP_CHANN_INTFACE_ERROR 0x54 >+#define TAPE_ERA_PERM_CHANN_INTFACE_ERROR 0x55 >+#define TAPE_ERA_CHANN_PROTOCOL_ERROR 0x56 >+#define TAPE_ERA_GLOBAL_STATUS_INTERCEPT 0x57 >+#define TAPE_ERA_TAPE_LENGTH_INCOMPATIBLE 0x5A >+#define TAPE_ERA_FORMAT_3480_XF_INCOMPAT 0x5B >+#define TAPE_ERA_FORMAT_3480_2_XF_INCOMPAT 0x5C >+#define TAPE_ERA_TAPE_LENGTH_VIOLATION 0x5D >+#define TAPE_ERA_COMPACT_ALGORITHM_INCOMPAT 0x5E >+ >+// Sense byte 0 >+ >+#define TAPE_SNS0_CMDREJ 0x80 // Command Reject >+#define TAPE_SNS0_INTVREQ 0x40 // Intervention Required >+#define TAPE_SNS0_BUSCHK 0x20 // Bus-out Check >+#define TAPE_SNS0_EQUIPCHK 0x10 // Equipment Check >+#define TAPE_SNS0_DATACHK 0x08 // Data check >+#define TAPE_SNS0_OVERRUN 0x04 // Overrun >+#define TAPE_SNS0_DEFUNITCK 0x02 // Deferred Unit Check >+#define TAPE_SNS0_ASSIGNED 0x01 // Assigned Elsewhere >+ >+// Sense byte 1 >+ >+#define TAPE_SNS1_LOCFAIL 0x80 // Locate Failure >+#define TAPE_SNS1_ONLINE 0x40 // Drive Online to CU >+#define TAPE_SNS1_RSRVD 0x20 // Reserved >+#define TAPE_SNS1_RCDSEQ 0x10 // Record Sequence Error >+#define TAPE_SNS1_BOT 0x08 // Beginning of Tape >+#define TAPE_SNS1_WRTMODE 0x04 // Write Mode >+#define TAPE_SNS1_FILEPROT 0x02 // Write Protect >+#define TAPE_SNS1_NOTCAPBL 0x01 // Not Capable >+ >+// Sense byte 2 >+ >+//efine TAPE_SNS2_XXXXXXX 0x80-0x04 // (not defined) >+#define TAPE_SNS2_SYNCMODE 0x02 // Tape Synchronous Mode >+#define TAPE_SNS2_POSITION 0x01 // Tape Positioning >+ >+#define BUILD_TAPE_SENSE( _era ) BuildTapeSense( _era, dev, unitstat, code ) >+// BUILD_TAPE_SENSE( TAPE_ERA_COMMAND_REJECT ); >+ >+ >+/*-------------------------------------------------------------------*/ >+/* BuildTapeSense */ >+/*-------------------------------------------------------------------*/ >+/* Build appropriate sense information based on passed ERA code... */ >+/*-------------------------------------------------------------------*/ >+ >+void BuildTapeSense( BYTE era, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode ) >+{ >+ BYTE fmt; >+ >+ // ---------------- Determine Sense Format ----------------------- >+ >+ switch (era) >+ { >+ default: >+ >+ fmt = 0x20; >+ break; >+ >+ case TAPE_ERA_UNSOL_ENVIRONMENTAL_DATA: // ERA 2A >+ >+ fmt = 0x21; >+ break; >+ >+ case TAPE_ERA_ENVIRONMENTAL_DATA_PRESENT: // ERA 2B >+ >+ if (dev->devchar[8] & 0x01) // Extended Buffered Log support enabled? >+ fmt = 0x30; // Yes, IDRC; 64-bytes of sense data >+ else >+ fmt = 0x21; // No, no IDRC; only 32-bytes of sense >+ break; >+ >+ case TAPE_ERA_UNSOL_INFORMATIONAL_DATA: // ERA 48 >+ >+ if (dev->forced_logging) // Forced Error Logging enabled? >+ fmt = 0x19; // Yes, Forced Error Logging sense >+ else >+ fmt = 0x20; // No, Normal Informational sense >+ break; >+ >+ case TAPE_ERA_END_OF_VOLUME_COMPLETE: // ERA 52 >+ >+ fmt = 0x22; >+ break; >+ >+ case TAPE_ERA_FORMAT_3480_2_XF_INCOMPAT: // ERA 5C >+ >+ fmt = 0x24; >+ break; >+ >+ } // End switch (era) >+ >+ // ---------------- Build Sense Format ----------------------- >+ >+ switch (fmt) >+ { >+ case 0x19: >+ break; >+ >+ default: >+ case 0x20: >+ break; >+ >+ case 0x21: >+ break; >+ >+ case 0x22: >+ break; >+ >+ case 0x24: >+ break; >+ >+ case 0x30: >+ break; >+ >+ } // End switch (fmt) >+ >+} /* end function BuildTapeSense */ >+ >+ >+#endif // ZZ FIXME: To Do... >+ >+ >+/*********************************************************************/ >+/*********************************************************************/ >diff -Naupr hercules-3.05/tapecopy.c hercules-20070717/tapecopy.c >--- hercules-3.05/tapecopy.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/tapecopy.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* TAPECOPY.C (c) Copyright Roger Bowler, 1999-2007 */ > /* Convert SCSI tape into AWSTAPE format */ > >-// $Id: tapecopy.c,v 1.42 2007/06/23 00:04:17 ivan Exp $ >+// $Id: tapecopy.c,v 1.43 2008/06/22 05:54:30 fish Exp $ > > /* Read from AWSTAPE and write to SCSI tape mods */ > /* Copyright 2005-2007 James R. Maynard III */ >@@ -14,6 +14,11 @@ > /*-------------------------------------------------------------------*/ > > // $Log: tapecopy.c,v $ >+// Revision 1.43 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// > // Revision 1.42 2007/06/23 00:04:17 ivan > // Update copyright notices to include current year (2007) > // >@@ -143,21 +148,21 @@ void delayed_exit (int exit_code) > /*-------------------------------------------------------------------*/ > static void print_status (char *devname, long stat) > { >- printf (_("HHCTC015I %s status: %8.8lX"), devname, stat); >+ char statmsg[128]; statmsg[0]=0; > >- if (GMT_EOF ( stat )) printf (" EOF" ); >- if (GMT_BOT ( stat )) printf (" BOT" ); >- if (GMT_EOT ( stat )) printf (" EOT" ); >- if (GMT_SM ( stat )) printf (" SETMARK"); >- if (GMT_EOD ( stat )) printf (" EOD" ); >- if (GMT_WR_PROT( stat )) printf (" WRPROT" ); >- if (GMT_ONLINE ( stat )) printf (" ONLINE" ); >- if (GMT_D_6250 ( stat )) printf (" 6250" ); >- if (GMT_D_1600 ( stat )) printf (" 1600" ); >- if (GMT_D_800 ( stat )) printf (" 800" ); >- if (GMT_DR_OPEN( stat )) printf (" NOTAPE" ); >+ if (GMT_EOF ( stat )) strlcat( statmsg, " EOF", sizeof(statmsg) ); >+ if (GMT_BOT ( stat )) strlcat( statmsg, " BOT", sizeof(statmsg) ); >+ if (GMT_EOT ( stat )) strlcat( statmsg, " EOT", sizeof(statmsg) ); >+ if (GMT_SM ( stat )) strlcat( statmsg, " SETMARK", sizeof(statmsg) ); >+ if (GMT_EOD ( stat )) strlcat( statmsg, " EOD", sizeof(statmsg) ); >+ if (GMT_WR_PROT( stat )) strlcat( statmsg, " WRPROT", sizeof(statmsg) ); >+ if (GMT_ONLINE ( stat )) strlcat( statmsg, " ONLINE", sizeof(statmsg) ); >+ if (GMT_D_6250 ( stat )) strlcat( statmsg, " 6250", sizeof(statmsg) ); >+ if (GMT_D_1600 ( stat )) strlcat( statmsg, " 1600", sizeof(statmsg) ); >+ if (GMT_D_800 ( stat )) strlcat( statmsg, " 800", sizeof(statmsg) ); >+ if (GMT_DR_OPEN( stat )) strlcat( statmsg, " NOTAPE", sizeof(statmsg) ); > >- printf ("\n"); >+ printf (_("HHCTC015I %s status: "I32_FMTX"%s\n"), devname, stat, statmsg); > > } /* end function print_status */ > >@@ -644,7 +649,7 @@ int is3590 = 0; > printf (_("HHCTC003I %s device type: %s\n"), > (devnamein ? devnamein : devnameout), tapeinfo[i].t_name); > else >- printf (_("HHCTC003I %s device type: 0x%lX\n"), >+ printf (_("HHCTC003I %s device type: 0x%"I32_FMT"X\n"), > (devnamein ? devnamein : devnameout), mtget.mt_type); > > density = (mtget.mt_dsreg & MT_ST_DENSITY_MASK) >@@ -657,7 +662,7 @@ int is3590 = 0; > printf (_("HHCTC004I %s tape density: %s\n"), > (devnamein ? devnamein : devnameout), densinfo[i].t_name); > else >- printf (_("HHCTC004I %s tape density code: 0x%lX\n"), >+ printf (_("HHCTC004I %s tape density code: 0x%"I32_FMT"X\n"), > (devnamein ? devnamein : devnameout), density); > > if (mtget.mt_gstat != 0) >diff -Naupr hercules-3.05/tapedev.c hercules-20070717/tapedev.c >--- hercules-3.05/tapedev.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/tapedev.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,23 +1,30 @@ > /* TAPEDEV.C (c) Copyright Roger Bowler, 1999-2007 */ >-/* JCS - minor changes by John Summerfield */ > /* ESA/390 Tape Device Handler */ >+ > /* Original Author: Roger Bowler */ > /* Prime Maintainer: Ivan Warren */ >+/* Secondary Maintainer: "Fish" (David B. Trout) */ > >-// $Id: tapedev.c,v 1.116 2007/06/23 00:04:18 ivan Exp $ >+// $Id: tapedev.c,v 1.148 2008/07/08 05:35:51 fish Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains device handling functions for emulated */ >-/* 3420 magnetic tape devices for the Hercules ESA/390 emulator. */ >+/* magnetic tape devices for the Hercules ESA/390 emulator. */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Five emulated tape formats are supported: */ > /* */ >-/* Four emulated tape formats are supported: */ > /* 1. AWSTAPE This is the format used by the P/390. */ > /* The entire tape is contained in a single flat file. */ >-/* Each tape block is preceded by a 6-byte header. */ >+/* A tape block consists of one or more block segments. */ >+/* Each block segment is preceded by a 6-byte header. */ > /* Files are separated by tapemarks, which consist */ > /* of headers with zero block length. */ > /* AWSTAPE files are readable and writable. */ > /* */ >+/* Support for AWSTAPE is in the "AWSTAPE.C" member. */ >+/* */ >+/* */ > /* 2. OMATAPE This is the Optical Media Attach device format. */ > /* Each physical file on the tape is represented by */ > /* a separate flat file. The collection of files that */ >@@ -38,6 +45,10 @@ > /* reside under the same directory which is normally */ > /* on CDROM but can be on disk. */ > /* OMATAPE files are supported as read-only media. */ >+/* */ >+/* OMATAPE tape Support is in the "OMATAPE.C" member. */ >+/* */ >+/* */ > /* 3. SCSITAPE This format allows reading and writing of 4mm or */ > /* 8mm DAT tape, 9-track open-reel tape, or 3480-type */ > /* cartridge on an appropriate SCSI-attached drive. */ >@@ -46,10 +57,30 @@ > /* the MTIOCxxx set of IOCTL commands. */ > /* PROGRAMMING NOTE: the 'tape' portability macros for */ > /* physical (SCSI) tapes MUST be used for all tape i/o! */ >+/* */ >+/* SCSI tape Support is in the "SCSITAPE.C" member. */ >+/* */ >+/* */ > /* 4. HET This format is based on the AWSTAPE format but has */ > /* been extended to support compression. Since the */ > /* basic file format has remained the same, AWSTAPEs */ > /* can be read/written using the HET routines. */ >+/* */ >+/* Support for HET is in the "HETTAPE.C" member. */ >+/* */ >+/* */ >+/* 5. FAKETAPE This is the format used by Fundamental Software */ >+/* on their FLEX-ES systems. It it similar to the AWS */ >+/* format. The entire tape is contained in a single */ >+/* flat file. A tape block is preceded by a 12-ASCII- */ >+/* hex-characters header which indicate the size of */ >+/* the previous and next blocks. Files are separated */ >+/* by tapemarks which consist of headers with a zero */ >+/* current block length. FakeTapes are both readable */ >+/* and writable. */ >+/* */ >+/* Support for FAKETAPE is in the "FAKETAPE.C" member. */ >+/* */ > /*-------------------------------------------------------------------*/ > > /*-------------------------------------------------------------------*/ >@@ -59,7 +90,10 @@ > /* 3480 Read Block ID and Locate CCWs by Brandon Hill */ > /* Unloaded tape support by Brandon Hill v209*/ > /* HET format support by Leland Lucius v209*/ >-/* 3590 support by Fish (David B. Trout) ** INCOMPLETE ** */ >+/* JCS - minor changes by John Summerfield 2003*/ >+/* PERFORM SUBSYSTEM FUNCTION / CONTROL ACCESS support by */ >+/* Adrian Trenkwalder (with futher enhancements by Fish) */ >+/* **INCOMPLETE** 3590 support by Fish (David B. Trout) */ > /*-------------------------------------------------------------------*/ > > /*-------------------------------------------------------------------*/ >@@ -67,10 +101,130 @@ > /* SC53-1200 S/370 and S/390 Optical Media Attach/2 User's Guide */ > /* SC53-1201 S/370 and S/390 Optical Media Attach/2 Technical Ref */ > /* SG24-2506 IBM 3590 Tape Subsystem Technical Guide */ >-/* GA32-0331 Magstar 3590 Hardware Reference */ >+/* GA32-0331 IBM 3590 Hardware Reference */ >+/* GA32-0329 IBM 3590 Introduction and Planning Guide */ >+/* SG24-2594 IBM 3590 Multiplatform Implementation */ >+/* ANSI INCITS 131-1994 (R1999) SCSI-2 Reference */ >+/* GA32-0127 IBM 3490E Hardware Reference */ >+/* GC35-0152 EREP Release 3.5.0 Reference */ >+/* SA22-7204 ESA/390 Common I/O-Device Commands */ >+/* Flex FakeTape format (http://preview.tinyurl.com/67rgnp) */ > /*-------------------------------------------------------------------*/ > > // $Log: tapedev.c,v $ >+// Revision 1.148 2008/07/08 05:35:51 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.147 2008/06/22 05:54:30 fish >+// Fix print-formatting issue (mostly in tape modules) >+// that can sometimes, in certain circumstances, >+// cause herc to crash. (%8.8lx --> I32_FMTX, etc) >+// >+// Revision 1.146 2008/05/28 16:46:29 fish >+// Misleading VTAPE support renamed to AUTOMOUNT instead and fixed and enhanced so that it actually WORKS now. >+// >+// Revision 1.145 2008/05/25 06:36:43 fish >+// VTAPE automount support (0x4B + 0xE4) >+// >+// Revision 1.144 2008/05/23 20:37:05 fish >+// Fix "presuming" message in gettapetype function to use implemented default shortdesc in message. >+// >+// Revision 1.143 2008/05/22 21:17:29 fish >+// Tape file extension neutrality support >+// >+// Revision 1.142 2008/05/22 20:15:12 fish >+// Correct --blkid-24 typo (SHOULD be --blkid-22, not 24) >+// >+// Revision 1.141 2008/05/22 19:25:58 fish >+// Flex FakeTape support >+// >+// Revision 1.140 2008/04/05 02:36:00 fish >+// Wrap GENTMH_SCSI_ACTION... case in 'generic_tmhcall' function >+// with #ifdef OPTION_SCSI_TAPE to fix undefined symbol error >+// on non-scsi-tape build platforms >+// >+// Revision 1.139 2008/03/30 02:51:34 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.138 2008/03/29 08:36:46 fish >+// More complete/extensive 3490/3590 tape support >+// >+// Revision 1.137 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.136 2008/03/27 07:14:17 fish >+// SCSI MODS: groundwork: part 3: final shuffling around. >+// Moved functions from one module to another and resequenced >+// functions within each. NO CODE WAS ACTUALLY CHANGED. >+// Next commit will begin the actual changes. >+// >+// Revision 1.135 2008/03/26 07:23:51 fish >+// SCSI MODS part 2: split tapedev.c: aws, het, oma processing moved >+// to separate modules, CCW processing moved to separate module. >+// >+// Revision 1.134 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.133 2008/03/13 01:44:17 kleonard >+// Fix residual read-only setting for tape device >+// >+// Revision 1.132 2008/03/04 01:10:29 ivan >+// Add LEGACYSENSEID config statement to allow X'E4' Sense ID on devices >+// that originally didn't support it. Defaults to off for compatibility reasons >+// >+// Revision 1.131 2008/03/04 00:25:25 ivan >+// Ooops.. finger check on 8809 case for numdevid.. Thanks Roger ! >+// >+// Revision 1.130 2008/03/02 12:00:04 ivan >+// Re-disable Sense ID on 3410, 3420, 8809 : report came in that it breaks MTS >+// >+// Revision 1.129 2007/12/14 17:48:52 rbowler >+// Enable SENSE ID CCW for 2703,3410,3420 >+// >+// Revision 1.128 2007/11/29 03:36:40 fish >+// Re-sequence CCW opcode 'case' statements to be in ascending order. >+// COSMETIC CHANGE ONLY. NO ACTUAL LOGIC WAS CHANGED. >+// >+// Revision 1.127 2007/11/13 15:10:52 rbowler >+// fsb_awstape support for segmented blocks >+// >+// Revision 1.126 2007/11/11 20:46:50 rbowler >+// read_awstape support for segmented blocks >+// >+// Revision 1.125 2007/11/09 14:59:34 rbowler >+// Move misplaced comment and restore original programming style >+// >+// Revision 1.124 2007/11/02 16:04:15 jmaynard >+// Removing redundant #if !(defined OPTION_SCSI_TAPE). >+// >+// Revision 1.123 2007/09/01 06:32:24 fish >+// Surround 3590 SCSI test w/#ifdef (OPTION_SCSI_TAPE) >+// >+// Revision 1.122 2007/08/26 14:37:17 fish >+// Fix missed unfixed 31 Aug 2006 non-SCSI tape Locate bug >+// >+// Revision 1.121 2007/07/24 23:06:32 fish >+// Force command-reject for 3590 Medium Sense and Mode Sense >+// >+// Revision 1.120 2007/07/24 22:54:49 fish >+// (comment changes only) >+// >+// Revision 1.119 2007/07/24 22:46:09 fish >+// Default to --blkid-32 and --no-erg for 3590 SCSI >+// >+// Revision 1.118 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// >+// Revision 1.117 2007/07/24 21:57:29 fish >+// Fix Win32 SCSI tape "Locate" and "ReadBlockId" SNAFU >+// > // Revision 1.116 2007/06/23 00:04:18 ivan > // Update copyright notices to include current year (2007) > // >@@ -92,11 +246,13 @@ > // Revision 1.110 2006/12/08 09:43:30 jj > // Add CVS message log > // >+/*-------------------------------------------------------------------*/ > > #include "hstdinc.h" >- > #include "hercules.h" /* need Hercules control blocks */ >-#include "tapedev.h" /* This module's header file */ >+#include "tapedev.h" /* Main tape handler header file */ >+ >+/*-------------------------------------------------------------------*/ > > //#define ENABLE_TRACING_STMTS // (Fish: DEBUGGING) > >@@ -104,6 +260,7 @@ > #if !defined(DEBUG) > #warning DEBUG required for ENABLE_TRACING_STMTS > #endif >+ // (TRACE, ASSERT, and VERIFY macros are #defined in hmacros.h) > #else > #undef TRACE > #undef ASSERT >@@ -113,3015 +270,1686 @@ > #define VERIFY(a) ((void)(a)) > #endif > >+/*-------------------------------------------------------------------*/ >+ > #if defined(WIN32) && defined(OPTION_DYNAMIC_LOAD) && !defined(HDL_USE_LIBTOOL) && !defined(_MSVC_) > SYSBLK *psysblk; > #define sysblk (*psysblk) > #endif > >-/*---------------------------------------*/ >-/* The following table goes hand-in-hand */ >-/* with the 'enum' values that follow */ >-/*---------------------------------------*/ >-static PARSER ptab[] = >-{ >- { "awstape", NULL }, >- { "idrc", "%d" }, >- { "compress", "%d" }, >- { "method", "%d" }, >- { "level", "%d" }, >- { "chunksize", "%d" }, >- { "maxsize", "%d" }, >- { "maxsizeK", "%d" }, >- { "maxsizeM", "%d" }, >- { "eotmargin", "%d" }, >- { "strictsize", "%d" }, >- { "readonly", "%d" }, >- { "ro", NULL }, >- { "noring", NULL }, >- { "rw", NULL }, >- { "ring", NULL }, >- { "deonirq", "%d" }, >- { "--blkid-32", NULL }, >- { "--no-erg", NULL }, >- { NULL, NULL }, >-}; >+/*-------------------------------------------------------------------*/ > >-/*---------------------------------------*/ >-/* The following table goes hand-in-hand */ >-/* with PARSER table immediately above */ >-/*---------------------------------------*/ >-enum >+DEVHND tapedev_device_hndinfo = > { >- TDPARM_NONE, >- TDPARM_AWSTAPE, >- TDPARM_IDRC, >- TDPARM_COMPRESS, >- TDPARM_METHOD, >- TDPARM_LEVEL, >- TDPARM_CHKSIZE, >- TDPARM_MAXSIZE, >- TDPARM_MAXSIZEK, >- TDPARM_MAXSIZEM, >- TDPARM_EOTMARGIN, >- TDPARM_STRICTSIZE, >- TDPARM_READONLY, >- TDPARM_RO, >- TDPARM_NORING, >- TDPARM_RW, >- TDPARM_RING, >- TDPARM_DEONIRQ, >- TDPARM_BLKID32, >- TDPARM_NOERG >+ &tapedev_init_handler, /* Device Initialisation */ >+ &tapedev_execute_ccw, /* Device CCW execute */ >+ &tapedev_close_device, /* Device Close */ >+ &tapedev_query_device, /* Device Query */ >+ NULL, /* Device Start channel pgm */ >+ NULL, /* Device End channel pgm */ >+ NULL, /* Device Resume channel pgm */ >+ NULL, /* Device Suspend channel pgm */ >+ NULL, /* Device Read */ >+ NULL, /* Device Write */ >+ NULL, /* Device Query used */ >+ NULL, /* Device Reserve */ >+ NULL, /* Device Release */ >+ NULL, /* Device Attention */ >+ TapeImmedCommands, /* Immediate CCW Codes */ >+ NULL, /* Signal Adapter Input */ >+ NULL, /* Signal Adapter Output */ >+ NULL, /* Hercules suspend */ >+ NULL /* Hercules resume */ > }; > > /*-------------------------------------------------------------------*/ >-/* Ivan Warren 20030224 */ >-/* Code / Devtype Validity Tables */ >-/* SOURCES: GX20-1850-2 (S/370 Reference Summary (3410/3411/3420) */ >-/* SOURCES: GX20-0157-1 (370/XA Reference Summary (3420/3422/3430/ */ >-/* 3480) */ >-/* SOURCES: GA33-1510-0 (S/370 Model 115 FC (for 3410/3411) */ >-/* ITEMS MARKED NEED_CHECK Need to be verified */ >-/* (especially for a need for a tape to be loaded or not) */ >-/*-------------------------------------------------------------------*/ >- >-// Generic tape sense function type used by below routing table... >- >-typedef void TapeDeviceDepSenseFunction (int,DEVBLK *,BYTE *,BYTE); >- >-// Forward declarations needed by below routing table... >- >-static TapeDeviceDepSenseFunction build_sense_3410; >-static TapeDeviceDepSenseFunction build_sense_3420; >-#define build_sense_3422 build_sense_3420 >-#define build_sense_3430 build_sense_3420 >-static TapeDeviceDepSenseFunction build_sense_3480; >-static TapeDeviceDepSenseFunction build_sense_Streaming; /* 9347, 9348, 8809 */ >- >-// Routing table used by generic tape sense function "build_senseX"... >- >-static TapeDeviceDepSenseFunction *TapeSenseTable[]={ >- build_sense_3410, >- build_sense_3420, >- build_sense_3422, >- build_sense_3430, >- build_sense_3480, >- build_sense_Streaming, >- NULL}; >- >-/*-------------------------------------------------------------------*/ >-/* Ivan Warren 20040227 */ >-/* This table is used by channel.c to determine if a CCW code is an */ >-/* immediate command or not */ >-/* The tape is addressed in the DEVHND structure as 'DEVIMM immed' */ >-/* 0: Command is NOT an immediate command */ >-/* 1: Command is an immediate command */ >-/* Note: An immediate command is defined as a command which returns */ >-/* CE (channel end) during initialisation (that is, no data is */ >-/* actually transfered. In this case, IL is not indicated for a CCW */ >-/* Format 0 or for a CCW Format 1 when IL Suppression Mode is in */ >-/* effect */ >-/*-------------------------------------------------------------------*/ >-static BYTE TapeImmedCommands[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1, /* 00 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 20 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 30 */ >- 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0, /* 40 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 50 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 60 */ >- 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1, /* 70 */ /* Adrian Trenkwalder - 77 was 1 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1, /* 80 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0, /* 90 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0, /* A0 */ >- 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1, /* B0 */ >- 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1, /* C0 */ >- 0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1, /* D0 */ >- 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1, /* E0 */ >- 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1}; /* F0 */ >- >-/*-------------------------------------------------------------------*/ >-/* Ivan Warren 20030224 */ >-/* This table is used by TapeCommandIsValid to determine if a CCW */ >-/* code is valid for the device */ >-/* 0: Command is NOT valid */ >-/* 1: Command is Valid, Tape MUST be loaded */ >-/* 2: Command is Valid, Tape NEED NOT be loaded */ >-/* 3: Command is Valid, But is a NO-OP (return CE+DE now) */ >-/* 4: Command is Valid, But is a NO-OP (for virtual tapes) */ >-/* 5: Command is Valid, Tape MUST be loaded (add DE to status) */ >-/*-------------------------------------------------------------------*/ >-static BYTE TapeCommands3410[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,0,5,0,0,0,0,1,0,0,5, /* 00 */ >- 0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 20 */ >- 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 30 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */ >- 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 60 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 70 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >- 0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* A0 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* B0 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* C0 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >- 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* F0 */ >- >-static BYTE TapeCommands3420[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >- 0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 20 */ >- 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 30 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */ >- 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 60 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 70 */ >- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 80 */ >- 0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* A0 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* B0 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* C0 */ >- 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >- 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0}; /* F0 */ >- >-static BYTE TapeCommands3422[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 10 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 20 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 30 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */ >- 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, /* 80 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ >- 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ >- 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >- 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0}; /* F0 */ >- >-static BYTE TapeCommands3430[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >- 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 20 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, /* 30 */ >- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 40 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 80 */ >- 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* A0 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* B0 */ >- 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* C0 */ >- 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >- 0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0}; /* F0 */ >- >-static BYTE TapeCommands3480[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >- 0,0,1,3,2,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,1,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 20 */ >- 0,0,0,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 30 */ >- 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1, /* 40 */ >- 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0, /* 50 */ >- 0,0,0,3,2,0,0,0,0,0,0,3,0,0,0,0, /* 60 */ >- 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* 70 */ /* Allow 77 (was 0) - Adrian Trenkwalder */ >- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 80 */ >- 0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,2, /* 90 */ >- 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,2, /* A0 */ >- 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* B0 */ >- 0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0, /* C0 */ >- 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* D0 */ >- 0,0,0,2,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0}; /* F0 */ >- >-static BYTE TapeCommands3590[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,1,5,0,0,1,2,0,0,0,5, /* 00 */ /* 0x06 == "Read Forward" added, 0x0C == "Read Backward" replaced with 0x0A == "Read Previous" */ >- 0,0,1,3,2,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,1,3,2,0,0,1,0,0,0,3,0,0,0,1, /* 20 */ >- 0,0,0,3,2,0,0,1,0,0,0,3,0,0,2,1, /* 30 */ /* 0x3E == "Read SS Data" */ >- 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1, /* 40 */ >- 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0, /* 50 */ >- 0,0,2,3,2,0,0,0,0,0,0,3,0,0,0,0, /* 60 */ /* 0x62 == "Read Media Characteristics" */ >- 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* 70 */ >- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 80 */ >- 0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,2, /* 90 */ >- 0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,2, /* A0 */ >- 0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,0, /* B0 */ >- 0,0,2,2,0,0,0,2,0,0,0,3,0,0,0,2, /* C0 */ /* 0xC2 == "Medium Sense", 0xCF == "Mode Sense" */ >- 0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0, /* D0 */ >- 0,0,0,2,2,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0}; /* F0 */ >- >-static BYTE TapeCommands9347[256]= >- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ >- { 0,1,1,1,2,0,0,5,0,0,0,2,1,0,0,5, /* 00 */ >- 0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1, /* 10 */ >- 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 20 */ >- 0,0,0,4,0,0,0,1,0,0,0,4,0,0,0,1, /* 30 */ >- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */ >- 0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 60 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* 70 */ >- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0, /* 80 */ >- 0,0,0,4,0,0,0,1,0,0,0,0,0,0,0,0, /* 90 */ >- 0,0,0,4,2,0,0,0,0,0,0,4,0,0,0,0, /* A0 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* B0 */ >- 0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0, /* C0 */ >- 0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0, /* D0 */ >- 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0, /* E0 */ >- 0,0,0,2,4,0,0,0,0,0,0,0,0,2,0,0}; /* F0 */ >- >-static TAPEMEDIA_HANDLER tmh_aws; >-static TAPEMEDIA_HANDLER tmh_oma; >-static TAPEMEDIA_HANDLER tmh_het; >-#if defined(OPTION_SCSI_TAPE) >-static TAPEMEDIA_HANDLER tmh_scsi; >-#endif >+/* Libtool static name colision resolution... */ >+/* Note: lt_dlopen will look for symbol & modulename_LTX_symbol */ >+/*-------------------------------------------------------------------*/ > >-/* Specific device supported CCW codes */ >-/* index fetched from TapeDevtypeList[n+1] */ >+#if !defined(HDL_BUILD_SHARED) && defined(HDL_USE_LIBTOOL) >+ >+ #define hdl_ddev hdt3420_LTX_hdl_ddev >+ #define hdl_depc hdt3420_LTX_hdl_depc >+ #define hdl_reso hdt3420_LTX_hdl_reso >+ #define hdl_init hdt3420_LTX_hdl_init >+ #define hdl_fini hdt3420_LTX_hdl_fini >+ >+#endif > >-static BYTE *TapeCommandTable[]={ >- TapeCommands3410, /* 3410/3411 Code table */ >- TapeCommands3420, /* 3420 Code Table */ >- TapeCommands3422, /* 3422 Code Table */ >- TapeCommands3430, /* 3430 Code Table */ >- TapeCommands3480, /* 3480 (Maybe all 38K Tapes) Code Table */ >- TapeCommands9347, /* 9347 (Maybe all streaming tapes) code table */ >- TapeCommands3590, /* 3590 Code Table*/ >- NULL}; >- >-/* Device type list: */ >-/* Format: D/T, Command Table Index in TapeCommandTable, >- UC on RewUnld, CUE on RewUnld, Sense Build Function Table Index */ >-#define TAPEDEVTYPELISTENTRYSIZE 5 /* #of values per devtype */ >-static int TapeDevtypeList[]={0x3410,0,1,0,0, >- 0x3411,0,1,0,0, >- 0x3420,1,1,1,1, >- 0x3422,2,0,0,2, >- 0x3430,3,0,0,3, >- 0x3480,4,0,0,4, >- 0x3490,4,0,0,4, >- 0x3590,6,0,0,4, >- 0x9347,5,0,0,5, >- 0x9348,5,0,0,5, >- 0x8809,5,0,0,5, >- 0x0000,0,0,0,0}; /* End Marker */ >- >-/**************************************/ >-/* START OF ORIGINAL AWS FUNCTIONS */ >-/* ISW Additions */ >-/**************************************/ >-/*-------------------------------------------------------------------*/ >-/* Close an AWSTAPE format file */ >-/* New Function added by ISW for consistency with other medias */ >-/*-------------------------------------------------------------------*/ >-static void close_awstape (DEVBLK *dev) >-{ >- if(dev->fd>=0) >- { >- logmsg(_("HHCTA996I %4.4x - AWS Tape %s closed\n"),dev->devnum,dev->filename); >- close(dev->fd); >- } >- strcpy(dev->filename, TAPE_UNLOADED); >- dev->fd=-1; >- dev->blockid = 0; >- dev->poserror = 0; >- return; >-} >-/*-------------------------------------------------------------------*/ >-/* Rewinds an AWS Tape format file */ >-/* New Function added by ISW for consistency with other medias */ > /*-------------------------------------------------------------------*/ >-static int rewind_awstape (DEVBLK *dev,BYTE *unitstat,BYTE code) >+ >+#if defined(OPTION_DYNAMIC_LOAD) >+ >+HDL_DEPENDENCY_SECTION; > { >- off_t rcoff; >- rcoff=lseek(dev->fd,0,SEEK_SET); >- if(rcoff<0) >- { >- build_senseX(TAPE_BSENSE_REWINDFAILED,dev,unitstat,code); >- return -1; >- } >- dev->nxtblkpos=0; >- dev->prvblkpos=-1; >- dev->curfilen=1; >- dev->blockid=0; >- return 0; >+ HDL_DEPENDENCY ( HERCULES ); >+ HDL_DEPENDENCY ( DEVBLK ); >+ HDL_DEPENDENCY ( SYSBLK ); > } >+END_DEPENDENCY_SECTION >+ > /*-------------------------------------------------------------------*/ >-/* Determines if a tape has passed a virtual EOT marker */ >-/* New Function added by ISW for consistency with other medias */ >-/*-------------------------------------------------------------------*/ >-static int passedeot_awstape (DEVBLK *dev) >+ >+HDL_DEVICE_SECTION; > { >- if(!dev->nxtblkpos) >- { >- return 0; >- } >- if(!dev->tdparms.maxsize) >- { >- return 0; >- } >- if(dev->nxtblkpos+dev->tdparms.eotmargin > dev->tdparms.maxsize) >- { >- return 1; >- } >- return 0; >+ HDL_DEVICE ( 3410, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3411, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3420, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3422, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3430, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3480, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3490, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 3590, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 8809, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 9347, tapedev_device_hndinfo ); >+ HDL_DEVICE ( 9348, tapedev_device_hndinfo ); > } >-/**************************************/ >-/* START OF ORIGINAL RB AWS FUNCTIONS */ >-/**************************************/ >-/*-------------------------------------------------------------------*/ >-/* Open an AWSTAPE format file */ >-/* */ >-/* If successful, the file descriptor is stored in the device block */ >-/* and the return value is zero. Otherwise the return value is -1. */ >-/*-------------------------------------------------------------------*/ >-static int open_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc = -1; /* Return code */ >-char pathname[MAX_PATH]; /* file path in host format */ >- >- /* Check for no tape in drive */ >- if (!strcmp (dev->filename, TAPE_UNLOADED)) >- { >- build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >- return -1; >- } >+END_DEVICE_SECTION > >- /* Open the AWSTAPE file */ >- hostpath(pathname, dev->filename, sizeof(pathname)); >- if(!dev->tdparms.logical_readonly) >- { >- rc = open (pathname, O_RDWR | O_BINARY); >- } >+/*-------------------------------------------------------------------*/ > >- /* If file is read-only, attempt to open again */ >- if (dev->tdparms.logical_readonly || (rc < 0 && (EROFS == errno || EACCES == errno))) >- { >- dev->readonly = 1; >- rc = open (pathname, O_RDONLY | O_BINARY); >- } >+#if defined(WIN32) && !defined(HDL_USE_LIBTOOL) && !defined(_MSVC_) > >- /* Check for successful open */ >- if (rc < 0) >- { >- logmsg (_("HHCTA001E Error opening %s: %s\n"), >- dev->filename, strerror(errno)); >+ #undef sysblk > >- strcpy(dev->filename, TAPE_UNLOADED); >- build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >- return -1; >- } >+ HDL_RESOLVER_SECTION; >+ { >+ HDL_RESOLVE_PTRVAR ( psysblk, sysblk ); >+ } >+ END_RESOLVER_SECTION > >- /* Store the file descriptor in the device block */ >- dev->fd = rc; >- rc=rewind_awstape(dev,unitstat,code); >- return rc; >+#endif // defined(WIN32) && !defined(HDL_USE_LIBTOOL) && !defined(_MSVC_) > >-} /* end function open_awstape */ >+#endif // defined(OPTION_DYNAMIC_LOAD) > > /*-------------------------------------------------------------------*/ >-/* Read an AWSTAPE block header */ >-/* */ >-/* If successful, return value is zero, and buffer contains header. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* (see 'tapedev.h' for layout of TAPEMEDIA_HANDLER structure) */ > /*-------------------------------------------------------------------*/ >-static int readhdr_awstape (DEVBLK *dev, off_t blkpos, >- AWSTAPE_BLKHDR *buf, BYTE *unitstat,BYTE code) >+ >+TAPEMEDIA_HANDLER tmh_aws = > { >-int rc; /* Return code */ >-off_t rcoff; /* Return code from lseek() */ >+ &generic_tmhcall, >+ &open_awstape, >+ &close_awstape, >+ &read_awstape, >+ &write_awstape, >+ &rewind_awstape, >+ &bsb_awstape, >+ &fsb_awstape, >+ &bsf_awstape, >+ &fsf_awstape, >+ &write_awsmark, >+ &sync_awstape, >+ &no_operation, // (DSE) ZZ FIXME: not coded yet >+ &no_operation, // (ERG) >+ &is_tapeloaded_filename, >+ &passedeot_awstape, >+ &readblkid_virtual, >+ &locateblk_virtual >+}; > >- /* Reposition file to the requested block header */ >- rcoff = lseek (dev->fd, blkpos, SEEK_SET); >- if (rcoff < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA002E Error seeking to offset %8.8lX " >- "in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+/*-------------------------------------------------------------------*/ > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >+TAPEMEDIA_HANDLER tmh_het = >+{ >+ &generic_tmhcall, >+ &open_het, >+ &close_het, >+ &read_het, >+ &write_het, >+ &rewind_het, >+ &bsb_het, >+ &fsb_het, >+ &bsf_het, >+ &fsf_het, >+ &write_hetmark, >+ &sync_het, >+ &no_operation, // (DSE) ZZ FIXME: not coded yet >+ &no_operation, // (ERG) >+ &is_tapeloaded_filename, >+ &passedeot_het, >+ &readblkid_virtual, >+ &locateblk_virtual >+}; > >- /* Read the 6-byte block header */ >- rc = read (dev->fd, buf, sizeof(AWSTAPE_BLKHDR)); >+/*-------------------------------------------------------------------*/ > >- /* Handle read error condition */ >- if (rc < 0) >- { >- logmsg (_("HHCTA003E Error reading block header " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+TAPEMEDIA_HANDLER tmh_fake = >+{ >+ &generic_tmhcall, >+ &open_faketape, >+ &close_faketape, >+ &read_faketape, >+ &write_faketape, >+ &rewind_faketape, >+ &bsb_faketape, >+ &fsb_faketape, >+ &bsf_faketape, >+ &fsf_faketape, >+ &write_fakemark, >+ &sync_faketape, >+ &no_operation, // (DSE) ZZ FIXME: not coded yet >+ &no_operation, // (ERG) >+ &is_tapeloaded_filename, >+ &passedeot_faketape, >+ &readblkid_virtual, >+ &locateblk_virtual >+}; > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } >+/*-------------------------------------------------------------------*/ > >- /* Handle end of file (uninitialized tape) condition */ >- if (!rc ) >- { >- logmsg (_("HHCTA004E End of file (uninitialized tape) " >- "at offset %8.8lX in file %s\n"), >- blkpos, dev->filename); >+TAPEMEDIA_HANDLER tmh_oma = >+{ >+ &generic_tmhcall, >+ &open_omatape, >+ &close_omatape, >+ &read_omatape, >+ &write_READONLY5, // WRITE >+ &rewind_omatape, >+ &bsb_omatape, >+ &fsb_omatape, >+ &bsf_omatape, >+ &fsf_omatape, >+ &write_READONLY, // WTM >+ &write_READONLY, // SYNC >+ &write_READONLY, // DSE >+ &write_READONLY, // ERG >+ &is_tapeloaded_filename, >+ &return_false1, // passedeot >+ &readblkid_virtual, >+ &locateblk_virtual >+}; > >- /* Set unit exception with tape indicate (end of tape) */ >- build_senseX(TAPE_BSENSE_EMPTYTAPE,dev,unitstat,code); >- return -1; >- } >+/*-------------------------------------------------------------------*/ > >- /* Handle end of file within block header */ >- if (rc < (int)sizeof(AWSTAPE_BLKHDR)) >- { >- logmsg (_("HHCTA004E Unexpected end of file in block header " >- "at offset %8.8lX in file %s\n"), >- blkpos, dev->filename); >+#if defined(OPTION_SCSI_TAPE) > >- build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >- return -1; >- } >+TAPEMEDIA_HANDLER tmh_scsi = >+{ >+ &generic_tmhcall, >+ &open_scsitape, >+ &close_scsitape, >+ &read_scsitape, >+ &write_scsitape, >+ &rewind_scsitape, >+ &bsb_scsitape, >+ &fsb_scsitape, >+ &bsf_scsitape, >+ &fsf_scsitape, >+ &write_scsimark, >+ &sync_scsitape, >+ &dse_scsitape, >+ &erg_scsitape, >+ &is_tape_mounted_scsitape, >+ &passedeot_scsitape, >+ &readblkid_scsitape, >+ &locateblk_scsitape >+}; > >- /* Successful return */ >- return 0; >+#endif /* defined(OPTION_SCSI_TAPE) */ > >-} /* end function readhdr_awstape */ >+/*-------------------------------------------------------------------*/ >+/* Device-Type Initialization Table (DEV/CU MODEL, FEATURES, ETC) */ >+/*-------------------------------------------------------------------*/ >+/* >+ PROGRAMMING NOTE: the MDR/OBR code (Device Characteristics bytes >+ 40-41) are apparently CRITICALLY IMPORTANT for proper tape drive >+ functioning for certain operating systems. If the bytes are not >+ provided (set to zero) or are set incorrectly, certain operating >+ systems end up using unusual/undesirable Mode Set values in their >+ Channel Programs (such as x'20' Write Immediate for example). I >+ only note it here because these two particular bytes are rather >+ innocuous looking based upon their name and sparsely documented >+ and largely unexplained values, thereby possibly misleading one >+ into believing they weren't important and thus could be safely >+ set to zero if their values were unknown. Rest assured they are >+ NOT unimportant! Quite the opposite: the are, for some operating >+ systems, CRITICALLY IMPORTANT and must NOT be returned as zeros. >+ >+ The following were obtained from "EREP Release 3.5.0 Reference" >+ (GC35-0152-03): >+ >+ Model MDR OBR >+ ------- ----- ----- >+ >+ 3480 0x41 0x80 >+ 3490 0x42 0x81 >+ >+ 3590 0x46 0x83 >+ 3590 (3591/3490 EMU) 0x47 0x84 >+ 3590 (3590/3490 EMU) 0x48 0x85 >+ >+ >+ NOTE: only models 3480, 3490 and 3590 support the RDC (Read >+ Device Characteristics) channel command, and thus they're the >+ only ones we must know the MDR/OBR codes for (since the MDR/OBR >+ codes are only used in the RDC CCW and not anwhere else). That >+ is to say, NONE of the Channel Commands (CCWs) that all the >+ OTHER models happen to support have an MDR/OBR code anywhere >+ in their data. Only models 3480, 3490 and 3590 have MDR/OBR >+ codes buried in their CCW data (specifically the RDC CCW data). >+ >+ Also note that, at the moment, we do not support emulating 3590's >+ or 3591's running in 3490 Emulation Mode (i.e. 3591/3490 EMU or >+ 3590/3490 EMU). The user is free to use such a device with Herc- >+ ules however, but if they do, it should be specified as a 3490. >+ >+---------------------------------------------------------------------*/ >+ >+typedef struct DEVINITTAB /* Initialization values */ >+{ >+ U16 devtype; /* Device type */ >+ BYTE devmodel; /* Device model number */ >+ U16 cutype; /* Control unit type */ >+ BYTE cumodel; /* Control unit model number */ >+ U32 sctlfeat; /* Storage control features */ >+ BYTE devclass; /* Device class code */ >+ BYTE devtcode; /* Device type code */ >+ BYTE MDR; /* Misc. Data Record ID */ >+ BYTE OBR; /* Outboard Recorder ID */ >+ int numdevid; /* #of SNSID bytes (see NOTE)*/ >+ int numsense; /* #of SENSE bytes */ >+ int haverdc; /* RDC Supported */ >+ int displayfeat; /* Has LCD display */ >+} >+DEVINITTAB; >+DEVINITTAB DevInitTab[] = /* Initialization table */ >+{ >+// PROGRAMMING NOTE: we currently do not support a #of Sense-ID bytes >+// value (numdevid) greater than 7 since our current channel-subsystem >+// design does not support the concept of hardware physical attachment >+// "Nodes" (i.e. separate control-unit, device and interface elements). >+// Supporting more than 7 bytes of Sense-ID information would require >+// support for Node Descriptors (ND) and Node Element Descriptors (NED) >+// and the associated commands (CCWs) to query them (Read Configuration >+// Data (0xFA) , Set Interface Identifier (0x73) and associated support >+// in the Read Subsystem Data (0x3E) command), which is vast overkill >+// and a complete waste of time given our current overly-simple channel >+// subsystem design. >+// >+//-------------------------------------------------------------------- >+// 3410/3411/3420/3422/3430/8809/9347/9348 >+//-------------------------------------------------------------------- >+// >+// devtype/mod cutype/mod sctlfeat cls typ MDR OBR sid sns rdc dsp >+ { 0x3410,0x01, 0x3115,0x01, 0x00000000, 0, 0, 0, 0, 0, 9, 0, 0 }, >+ { 0x3411,0x01, 0x3115,0x01, 0x00000000, 0, 0, 0, 0, 0, 9, 0, 0 }, >+ { 0x3420,0x06, 0x3803,0x02, 0x00000000, 0, 0, 0, 0, 0, 24, 0, 0 }, // (DEFAULT: 3420) >+ { 0x3422,0x01, 0x3422,0x01, 0x00000000, 0, 0, 0, 0, 7, 32, 0, 0 }, >+ { 0x3430,0x01, 0x3422,0x01, 0x00000000, 0, 0, 0, 0, 7, 32, 0, 0 }, >+ { 0x8809,0x01, 0x8809,0x01, 0x00000000, 0, 0, 0, 0, 0, 32, 0, 0 }, >+ { 0x9347,0x01, 0x9347,0x01, 0x00000000, 0, 0, 0, 0, 7, 32, 0, 0 }, >+ { 0x9348,0x01, 0x9348,0x01, 0x00000000, 0, 0, 0, 0, 7, 32, 0, 0 }, >+ >+//-------------------------------------------------------------------- >+// 3480/3490/3590 >+//-------------------------------------------------------------------- >+// >+// PROGRAMMING NOTE: we currently do not support a #of Sense-ID bytes >+// value (numdevid) greater than 7 since our current channel-subsystem >+// design does not support the concept of hardware physical attachment >+// "Nodes" (i.e. separate control-unit, device and interface elements). >+// Supporting more than 7 bytes of Sense-ID information would require >+// support for Node Descriptors (ND) and Node Element Descriptors (NED) >+// and the associated commands (CCWs) to query them (Read Configuration >+// Data (0xFA) , Set Interface Identifier (0x73) and associated support >+// in the Read Subsystem Data (0x3E) command), which is vast overkill >+// and a complete waste of time given our current overly-simple channel >+// subsystem design. >+// >+// PROGRAMMING NOTE: if you change the below devtype/mod or cutype/mod >+// values, be sure to ALSO change tapeccws.c's READ CONFIGURATION DATA >+// (CCW opcode 0xFA) values as well! >+// >+// PROGRAMMING NOTE: the bit values of the 'sctlfeat' field are: >+// >+// ....40.. (unknown) >+// ....08.. Set Special Intercept Condition (SIC) supported >+// ....04.. Channel Path No-Operation supported (always >+// on if Library Attachment Facility installed) >+// ....02.. Logical Write-Protect supported (always on >+// if Read Device Characteristics is supported) >+// ....01.. Extended Buffered Log support enabled (if 64 >+// bytes of buffered log data, else 32 bytes) >+// ......80 Automatic Cartridge Loader installed/enabled >+// ......40 Improved Data Recording Capability (i.e. >+// compression support) installed/enabled >+// ......20 Suppress Volume Fencing >+// ......10 Library Interface online/enabled >+// ......08 Library Attachment Facility installed >+// ......04 (unknown) >+// >+// PROGRAMMING NOTE: the below "0x00004EC4" value for the 'sctlfeat' >+// field for Model 3590 was determined empirically on a real machine. >+// >+// devtype/mod cutype/mod sctlfeat cls typ MDR OBR sid sns rdc dsp >+ { 0x3480,0x31, 0x3480,0x31, 0x000002C0, 0x80,0x80, 0x41,0x80, 7, 24, 1, 1 }, // 0x31 = D31 >+ { 0x3490,0x50, 0x3490,0x50, 0x000002C0, 0x80,0x80, 0x42,0x81, 7, 32, 1, 1 }, // 0x50 = C10 >+ { 0x3590,0x10, 0x3590,0x50, 0x00004EC4, 0x80,0x80, 0x46,0x83, 7, 32, 1, 1 }, // 0x10 = B1A, 0x50 = A50 >+ { 0xFFFF,0xFF, 0xFFFF,0xFF, 0xFFFFFFFF, 0xFF,0xFF, 0xFF,0xFF, -1, -1, -1, -1 }, //**** END OF TABLE **** >+ { 0x3420,0x06, 0x3803,0x02, 0x00000000, 0, 0, 0, 0, 0, 24, 0, 0 }, // (DEFAULT: 3420) >+}; > > /*-------------------------------------------------------------------*/ >-/* Read a block from an AWSTAPE format file */ >-/* */ >-/* If successful, return value is block length read. */ >-/* If a tapemark was read, the return value is zero, and the */ >-/* current file number in the device block is incremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* Initialize the device handler */ > /*-------------------------------------------------------------------*/ >-static int read_awstape (DEVBLK *dev, BYTE *buf, BYTE *unitstat,BYTE code) >+int tapedev_init_handler (DEVBLK *dev, int argc, char *argv[]) > { >-int rc; /* Return code */ >-AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >-off_t blkpos; /* Offset of block header */ >-U16 blklen; /* Data length of block */ >- >- /* Initialize current block position */ >- blkpos = dev->nxtblkpos; >- >- /* Read the 6-byte block header */ >- rc = readhdr_awstape (dev, blkpos, &awshdr, unitstat,code); >- if (rc < 0) return -1; >- >- /* Extract the block length from the block header */ >- blklen = ((U16)(awshdr.curblkl[1]) << 8) >- | awshdr.curblkl[0]; >- >- /* Calculate the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos + sizeof(awshdr) + blklen; >- dev->prvblkpos = blkpos; >+int rc; >+DEVINITTAB* pDevInitTab; > >- /* Increment file number and return zero if tapemark was read */ >- if (!blklen) >+ /* Close current tape */ >+ if(dev->fd>=0) > { >- dev->curfilen++; >- dev->blockid++; >- return 0; /* UX will be set by caller */ >- } >+ dev->tmh->close(dev); >+ dev->fd=-1; >+ } > >- /* Read data block from tape file */ >- rc = read (dev->fd, buf, blklen); >+ autoload_close(dev); >+ dev->tdparms.displayfeat=0; > >- /* Handle read error condition */ >- if (rc < 0) >- { >- logmsg (_("HHCTA003E Error reading data block " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+ /* Determine the control unit type and model number */ >+ /* Support for 3490/3422/3430/8809/9347, etc.. */ >+ if (!sscanf( dev->typname, "%hx", &dev->devtype )) >+ dev->devtype = 0x3420; > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >+ // PROGAMMING NOTE: we use hard-coded values from our DevInitTab >+ // for virtual (non-SCSI) devices and, for the time being, for non- >+ // virtual (SCSI) devices too. Once we add direct SCSI I/O support >+ // we will need to add code to get this information directly from >+ // the actual SCSI device itself. >+ for >+ ( >+ pDevInitTab = &DevInitTab[0]; >+ pDevInitTab->devtype != 0xFFFF && pDevInitTab->devtype != dev->devtype; >+ pDevInitTab++ >+ ); >+ >+ if (pDevInitTab->devtype == 0xFFFF) /* (entry not found?) */ >+ { >+ logmsg ( _("Unsupported device type specified %4.4x\n"), dev->devtype ); >+ >+ pDevInitTab++; /* (default entry; s/b same as 0x3420) */ >+ pDevInitTab->devtype = dev->devtype; /* (don't know what else to do really) */ >+ pDevInitTab->cutype = dev->devtype; /* (don't know what else to do really) */ > } > >- dev->blockid++; >+ /* Allow SENSE ID for certain specific legacy devices if requested */ > >- /* Handle end of file within data block */ >- if (rc < blklen) >- { >- logmsg (_("HHCTA004E Unexpected end of file in data block " >- "at offset %8.8lX in file %s\n"), >- blkpos, dev->filename); >+ dev->numdevid = pDevInitTab->numdevid; // (default == from table) > >- /* Set unit check with data check and partial record */ >- build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >- return -1; >+ if (1 >+ && sysblk.legacysenseid // (if option requested, AND is) >+ && (0 // (for allowable legacy device) >+ || 0x3410 == dev->devtype >+ || 0x3411 == dev->devtype >+ || 0x3420 == dev->devtype >+ || 0x8809 == dev->devtype >+ ) >+ ) >+ { >+ dev->numdevid = 7; // (allow for this legacy device) > } > >- /* Return block length */ >- return blklen; >+ /* Initialize the Sense-Id bytes if needed... */ >+ if (dev->numdevid > 0) >+ { >+ dev->devid[0] = 0xFF; > >-} /* end function read_awstape */ >+ dev->devid[1] = (pDevInitTab->cutype >> 8) & 0xFF; >+ dev->devid[2] = (pDevInitTab->cutype >> 0) & 0xFF; >+ dev->devid[3] = pDevInitTab->cumodel; > >-/*-------------------------------------------------------------------*/ >-/* Write a block to an AWSTAPE format file */ >-/* */ >-/* If successful, return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int write_awstape (DEVBLK *dev, BYTE *buf, U16 blklen, >- BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-off_t rcoff; /* Return code from lseek() */ >-AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >-off_t blkpos; /* Offset of block header */ >-U16 prvblkl; /* Length of previous block */ >+ dev->devid[4] = (pDevInitTab->devtype >> 8) & 0xFF; >+ dev->devid[5] = (pDevInitTab->devtype >> 0) & 0xFF; >+ dev->devid[6] = pDevInitTab->devmodel; >+ >+ /* Initialize the CIW information if needed... */ >+ if (dev->numdevid > 7) >+ { >+ // PROGRAMMING NOTE: see note near 'DEVINITTAB' >+ // struct definition regarding requirements for >+ // supporting more than 7 bytes of SNSID info. > >- /* Initialize current block position and previous block length */ >- blkpos = dev->nxtblkpos; >- prvblkl = 0; >+ memcpy (&dev->devid[8], "\x40\xFA\x00\xA0", 4); // CIW Read Configuration Data (0xFA) >+ memcpy (&dev->devid[12], "\x41\x73\x00\x04", 4); // CIW Set Interface Identifier (0x73) >+ memcpy (&dev->devid[16], "\x42\x3E\x00\x60", 4); // CIW Read Subsystem Data (0x3E) >+ } >+ } > >- /* Determine previous block length if not at start of tape */ >- if (dev->nxtblkpos > 0) >+ /* Initialize the Read Device Characteristics (RDC) bytes... */ >+ if (pDevInitTab->haverdc) > { >- /* Reread the previous block header */ >- rc = readhdr_awstape (dev, dev->prvblkpos, &awshdr, unitstat,code); >- if (rc < 0) return -1; >+ dev->numdevchar = 64; > >- /* Extract the block length from the block header */ >- prvblkl = ((U16)(awshdr.curblkl[1]) << 8) >- | awshdr.curblkl[0]; >+ memset (dev->devchar, 0, sizeof(dev->devchar)); >+ memcpy (dev->devchar, dev->devid+1, 6); > >- /* Recalculate the offset of the next block */ >- blkpos = dev->prvblkpos + sizeof(awshdr) + prvblkl; >- } >+ // Bytes 6-9: Subsystem Facilities... > >- /* Reposition file to the new block header */ >- rcoff = lseek (dev->fd, blkpos, SEEK_SET); >- if (rcoff < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA002E Error seeking to offset %8.8lX " >- "in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+ dev->devchar[6] = (pDevInitTab->sctlfeat >> 24) & 0xFF; >+ dev->devchar[7] = (pDevInitTab->sctlfeat >> 16) & 0xFF; >+ dev->devchar[8] = (pDevInitTab->sctlfeat >> 8) & 0xFF; >+ dev->devchar[9] = (pDevInitTab->sctlfeat >> 0) & 0xFF; > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >- /* ISW: Determine if we are passed maxsize */ >- if(dev->tdparms.maxsize>0) >- { >- if((off_t)(dev->nxtblkpos+blklen+sizeof(awshdr)) > dev->tdparms.maxsize) >- { >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- return -1; >- } >- } >- /* ISW: End of virtual physical EOT determination */ >+ // Bytes 10/11: Device Class/Type ... > >- /* Build the 6-byte block header */ >- awshdr.curblkl[0] = blklen & 0xFF; >- awshdr.curblkl[1] = (blklen >> 8) & 0xFF; >- awshdr.prvblkl[0] = prvblkl & 0xFF; >- awshdr.prvblkl[1] = (prvblkl >>8) & 0xFF; >- awshdr.flags1 = AWSTAPE_FLAG1_NEWREC | AWSTAPE_FLAG1_ENDREC; >- awshdr.flags2 = 0; >- >- /* Write the block header */ >- rc = write (dev->fd, &awshdr, sizeof(awshdr)); >- if (rc < (int)sizeof(awshdr)) >- { >- if(ENOSPC==errno) >- { >- /* Disk FULL */ >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- logmsg (_("HHCTA995E Media full condition reached " >- "at offset %8.8lX in file %s\n"), >- blkpos, dev->filename); >- return -1; >- } >- /* Handle write error condition */ >- logmsg (_("HHCTA009E Error writing block header " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+ dev->devchar[10] = pDevInitTab->devclass; >+ dev->devchar[11] = pDevInitTab->devtcode; > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >- } >+ // Bytes 24-29: cutype/model & devtype/model ... >+ // (Note: undocumented; determined empirically) > >- /* Calculate the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos + sizeof(awshdr) + blklen; >- dev->prvblkpos = blkpos; >- >- /* Write the data block */ >- rc = write (dev->fd, buf, blklen); >- if (rc < blklen) >- { >- if(ENOSPC==errno) >- { >- /* Disk FULL */ >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- logmsg (_("HHCTA995E Media full condition reached " >- "at offset %8.8lX in file %s\n"), >- blkpos, dev->filename); >- return -1; >- } >- /* Handle write error condition */ >- logmsg (_("HHCTA010E Error writing data block " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+ dev->devchar[24] = (pDevInitTab->cutype >> 8) & 0xFF; >+ dev->devchar[25] = (pDevInitTab->cutype >> 0) & 0xFF; >+ dev->devchar[26] = pDevInitTab->cumodel; > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >+ dev->devchar[27] = (pDevInitTab->devtype >> 8) & 0xFF; >+ dev->devchar[28] = (pDevInitTab->devtype >> 0) & 0xFF; >+ dev->devchar[29] = pDevInitTab->devmodel; >+ >+ // Bytes 40-41: MDR/OBR code... >+ >+ dev->devchar[40] = pDevInitTab->MDR; >+ dev->devchar[41] = pDevInitTab->OBR; > } > >- dev->blockid++; >+ /* Initialize other fields */ >+// dev->numdevid = pDevInitTab->numdevid; // (handled above) >+ dev->numsense = pDevInitTab->numsense; >+ dev->tdparms.displayfeat = pDevInitTab->displayfeat; > >- /* Set new physical EOF */ >- do rc = ftruncate( dev->fd, dev->nxtblkpos ); >- while (EINTR == rc); >+ dev->fenced = 0; // (always, initially) >+ dev->SIC_active = 0; // (always, initially) >+ dev->SIC_supported = 0; // (until we're sure) >+ dev->forced_logging = 0; // (always, initially) >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ dev->noautomount = 0; // (always, initially) >+#endif > >- if (rc != 0) >- { >- /* Handle write error condition */ >- logmsg (_("HHCTA010E Error writing data block " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >+ /* Initialize SCSI tape control fields */ >+#if defined(OPTION_SCSI_TAPE) >+ dev->sstat = GMT_DR_OPEN(-1); >+ dev->stape_getstat_sstat = GMT_DR_OPEN(-1); >+#endif > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >- } >+ /* Clear the DPA */ >+ memset (dev->pgid, 0, sizeof(dev->pgid)); >+ /* Clear Drive password - Adrian */ >+ memset (dev->drvpwd, 0, sizeof(dev->drvpwd)); > >- /* Return normal status */ >- return 0; >+ /* Request the channel to merge data chained write CCWs into >+ a single buffer before passing data to the device handler */ >+ dev->cdwmerge = 1; > >-} /* end function write_awstape */ >+ /* Tape is a syncio type 2 device */ >+ dev->syncio = 2; > >-/*-------------------------------------------------------------------*/ >-/* Write a tapemark to an AWSTAPE format file */ >-/* */ >-/* If successful, return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int write_awsmark (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-off_t rcoff; /* Return code from lseek() */ >-AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >-off_t blkpos; /* Offset of block header */ >-U16 prvblkl; /* Length of previous block */ >+ /* ISW */ >+ /* Build a 'clear' sense */ >+ memset (dev->sense, 0, sizeof(dev->sense)); >+ dev->sns_pending = 0; > >- /* Initialize current block position and previous block length */ >- blkpos = dev->nxtblkpos; >- prvblkl = 0; >+ // Initialize the [non-SCSI] auto-loader... > >- /* Determine previous block length if not at start of tape */ >- if (dev->nxtblkpos > 0) >- { >- /* Reread the previous block header */ >- rc = readhdr_awstape (dev, dev->prvblkpos, &awshdr, unitstat,code); >- if (rc < 0) return -1; >+ // PROGRAMMING NOTE: we don't [yet] know at this early stage >+ // what type of tape device we're dealing with (SCSI (non-virtual) >+ // or non-SCSI (virtual)) since 'mountnewtape' hasn't been called >+ // yet (which is the function that determines which media handler >+ // should be used and is the one that initializes dev->tapedevt) > >- /* Extract the block length from the block header */ >- prvblkl = ((U16)(awshdr.curblkl[1]) << 8) >- | awshdr.curblkl[0]; >+ // The only thing we know (or WILL know once 'autoload_init' >+ // is called) is whether or not there was a [non-SCSI] auto- >+ // loader defined for the device. That's it and nothing more. > >- /* Recalculate the offset of the next block */ >- blkpos = dev->prvblkpos + sizeof(awshdr) + prvblkl; >- } >+ autoload_init( dev, argc, argv ); > >- /* Reposition file to the new block header */ >- rcoff = lseek (dev->fd, blkpos, SEEK_SET); >- if (rcoff < 0) >+ // Was an auto-loader defined for this device? >+ if ( !dev->als ) > { >- /* Handle seek error condition */ >- logmsg (_("HHCTA011E Error seeking to offset %8.8lX " >- "in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >- >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >+ // No. Just mount whatever tape there is (if any)... >+ rc = mountnewtape( dev, argc, argv ); > } >- /* ISW: Determine if we are passed maxsize */ >- if(dev->tdparms.maxsize>0) >+ else > { >- if((off_t)(dev->nxtblkpos+sizeof(awshdr)) > dev->tdparms.maxsize) >+ // Yes. Try mounting the FIRST auto-loader slot... >+ if ( (rc = autoload_mount_first( dev )) != 0 ) > { >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- return -1; >+ // If that doesn't work, try subsequent slots... >+ while >+ ( >+ dev->als >+ && >+ (rc = autoload_mount_next( dev )) != 0 >+ ) >+ { >+ ; // (nop; just go on to next slot) >+ } >+ rc = dev->als ? rc : -1; > } > } >- /* ISW: End of virtual physical EOT determination */ >- >- /* Build the 6-byte block header */ >- awshdr.curblkl[0] = 0; >- awshdr.curblkl[1] = 0; >- awshdr.prvblkl[0] = prvblkl & 0xFF; >- awshdr.prvblkl[1] = (prvblkl >>8) & 0xFF; >- awshdr.flags1 = AWSTAPE_FLAG1_TAPEMARK; >- awshdr.flags2 = 0; >- >- /* Write the block header */ >- rc = write (dev->fd, &awshdr, sizeof(awshdr)); >- if (rc < (int)sizeof(awshdr)) >- { >- /* Handle write error condition */ >- logmsg (_("HHCTA012E Error writing block header " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >- >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >- } > >- dev->blockid++; >+ if (dev->devchar[8] & 0x08) // SIC supported? >+ dev->SIC_supported = 1; // remember that fact > >- /* Calculate the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos + sizeof(awshdr); >- dev->prvblkpos = blkpos; >- >- /* Set new physical EOF */ >- do rc = ftruncate( dev->fd, dev->nxtblkpos ); >- while (EINTR == rc); >- >- if (rc != 0) >- { >- /* Handle write error condition */ >- logmsg (_("HHCTA017E Error writing tape mark " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, dev->filename, strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >- } >+ return rc; > >- /* Return normal status */ >- return 0; >+} /* end function tapedev_init_handler */ > >-} /* end function write_awsmark */ > > /*-------------------------------------------------------------------*/ >-/* Forward space over next block of AWSTAPE format file */ >-/* */ >-/* If successful, return value is the length of the block skipped. */ >-/* If the block skipped was a tapemark, the return value is zero, */ >-/* and the current file number in the device block is incremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* Close the device */ > /*-------------------------------------------------------------------*/ >-static int fsb_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+int tapedev_close_device ( DEVBLK *dev ) > { >-int rc; /* Return code */ >-AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >-off_t blkpos; /* Offset of block header */ >-U16 blklen; /* Data length of block */ >- >- /* Initialize current block position */ >- blkpos = dev->nxtblkpos; >- >- /* Read the 6-byte block header */ >- rc = readhdr_awstape (dev, blkpos, &awshdr, unitstat,code); >- if (rc < 0) return -1; >- >- /* Extract the block length from the block header */ >- blklen = ((U16)(awshdr.curblkl[1]) << 8) >- | awshdr.curblkl[0]; >+ autoload_close(dev); >+ dev->tmh->close(dev); >+ ASSERT( dev->fd < 0 ); > >- /* Calculate the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos + sizeof(awshdr) + blklen; >- dev->prvblkpos = blkpos; >+ dev->curfilen = 1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ dev->curblkrem = 0; >+ dev->curbufoff = 0; >+ dev->blockid = 0; >+ dev->fenced = 0; > >- /* Increment current file number if tapemark was skipped */ >- if (!blklen) >- dev->curfilen++; >+ return 0; >+} /* end function tapedev_close_device */ > >- dev->blockid++; > >- /* Return block length or zero if tapemark */ >- return blklen; >+/*-------------------------------------------------------------------*/ >+/* Tape format determination REGEXPS. Used by gettapetype below */ >+/*-------------------------------------------------------------------*/ > >-} /* end function fsb_awstape */ >+struct tape_format_entry /* (table layout) */ >+{ >+ char* fmtreg; /* A regular expression */ >+ int fmtcode; /* the device code */ >+ TAPEMEDIA_HANDLER* tmh; /* The media dispatcher */ >+ char* descr; /* readable description */ >+ char* short_descr; /* (same but shorter) */ >+}; > > /*-------------------------------------------------------------------*/ >-/* Backspace to previous block of AWSTAPE format file */ >-/* */ >-/* If successful, return value is the length of the block. */ >-/* If the block is a tapemark, the return value is zero, */ >-/* and the current file number in the device block is decremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int bsb_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-AWSTAPE_BLKHDR awshdr; /* AWSTAPE block header */ >-U16 curblkl; /* Length of current block */ >-U16 prvblkl; /* Length of previous block */ >-off_t blkpos; /* Offset of block header */ >+/* Tape format determination REGEXPS. Used by gettapetype below */ >+/*-------------------------------------------------------------------*/ > >- /* Unit check if already at start of tape */ >- if (!dev->nxtblkpos) >+struct tape_format_entry fmttab [] = /* (table itself) */ >+{ >+ /* This entry matches a filename ending with .aws */ >+#define AWSTAPE_FMTENTRY 0 >+#define DEFAULT_FMTENTRY AWSTAPE_FMTENTRY > { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >- return -1; >- } >+ "\\.aws$", >+ TAPEDEVT_AWSTAPE, >+ &tmh_aws, >+ "AWS Format tape file", >+ "AWS tape" >+ }, > >- /* Backspace to previous block position */ >- blkpos = dev->prvblkpos; >+ /* This entry matches a filename ending with .het */ >+#define HETTAPE_FMTENTRY 1 >+ { >+ "\\.het$", >+ TAPEDEVT_HETTAPE, >+ &tmh_het, >+ "Hercules Emulated Tape file", >+ "HET tape" >+ }, > >- /* Read the 6-byte block header */ >- rc = readhdr_awstape (dev, blkpos, &awshdr, unitstat,code); >- if (rc < 0) return -1; >+ /* This entry matches a filename ending with .tdf */ >+#define OMATAPE_FMTENTRY 2 >+ { >+ "\\.tdf$", >+ TAPEDEVT_OMATAPE, >+ &tmh_oma, >+ "Optical Media Attachment (OMA) tape", >+ "OMA tape" >+ }, >+ >+ /* This entry matches a filename ending with .fkt */ >+#define FAKETAPE_FMTENTRY 3 >+ { >+ "\\.fkt$", >+ TAPEDEVT_FAKETAPE, >+ &tmh_fake, >+ "Flex FakeTape file", >+ "FakeTape" >+ }, > >- /* Extract the block lengths from the block header */ >- curblkl = ((U16)(awshdr.curblkl[1]) << 8) >- | awshdr.curblkl[0]; >- prvblkl = ((U16)(awshdr.prvblkl[1]) << 8) >- | awshdr.prvblkl[0]; >+#if defined(OPTION_SCSI_TAPE) > >- /* Calculate the offset of the previous block */ >- dev->prvblkpos = blkpos - sizeof(awshdr) - prvblkl; >- dev->nxtblkpos = blkpos; >+ /* This entry matches a filename starting with /dev/ */ >+#define SCSITAPE_FMTENTRY 4 >+ { >+ "^/dev/", >+ TAPEDEVT_SCSITAPE, >+ &tmh_scsi, >+ "SCSI attached tape drive", >+ "SCSI tape" >+ }, > >- /* Decrement current file number if backspaced over tapemark */ >- if (!curblkl) >- dev->curfilen--; >+#if defined(_MSVC_) > >- dev->blockid--; >+ /* (same idea but for Windows SCSI tape device names) */ >+#undef SCSITAPE_FMTENTRY >+#define SCSITAPE_FMTENTRY 5 >+ { >+ "^\\\\\\\\\\.\\\\Tape[0-9]", >+ TAPEDEVT_SCSITAPE, >+ &tmh_scsi, >+ "SCSI attached tape drive", >+ "SCSI tape" >+ }, > >- /* Return block length or zero if tapemark */ >- return curblkl; >+#endif // _MSVC_ >+#endif // OPTION_SCSI_TAPE >+}; > >-} /* end function bsb_awstape */ > > /*-------------------------------------------------------------------*/ >-/* Forward space to next logical file of AWSTAPE format file */ >-/* */ >-/* For AWSTAPE files, the forward space file operation is achieved */ >-/* by forward spacing blocks until positioned just after a tapemark. */ >-/* */ >-/* If successful, return value is zero, and the current file number */ >-/* in the device block is incremented by fsb_awstape. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* gettapetype_byname determine tape device type by filename */ >+/*-------------------------------------------------------------------*/ >+/* returns fmttab entry# on success, -1 on error/unable to determine */ > /*-------------------------------------------------------------------*/ >-static int fsf_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+int gettapetype_byname (DEVBLK *dev) > { >-int rc; /* Return code */ >- >- while (1) >- { >- /* Forward space over next block */ >- rc = fsb_awstape (dev, unitstat,code); >- if (rc < 0) return -1; >- >- /* Exit loop if spaced over a tapemark */ >- if (!rc) break; >- >- } /* end while */ >- >- /* Return normal status */ >- return 0; >+#if defined(HAVE_REGEX_H) || defined(HAVE_PCRE) >+ regex_t regwrk; /* REGEXP work area */ >+ regmatch_t regwrk2; /* REGEXP match area */ >+ char errbfr[1024]; /* Working storage */ >+#endif // HAVE_REGEX_H >+ int i; /* Loop control */ >+ int rc; /* various rtns return codes */ > >-} /* end function fsf_awstape */ >+ /* Use the file name to determine the device type */ > >-/*-------------------------------------------------------------------*/ >-/* Backspace to previous logical file of AWSTAPE format file */ >-/* */ >-/* For AWSTAPE files, the backspace file operation is achieved */ >-/* by backspacing blocks until positioned just before a tapemark */ >-/* or until positioned at start of tape. */ >-/* */ >-/* If successful, return value is zero, and the current file number */ >-/* in the device block is decremented by bsb_awstape. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int bsf_awstape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >+#if defined(HAVE_REGEX_H) || defined(HAVE_PCRE) > >- while (1) >+ for (i=0; i < arraysize( fmttab ); i++) > { >- /* Exit if now at start of tape */ >- if (!dev->nxtblkpos) >+ rc = regcomp (®wrk, fmttab[i].fmtreg, REG_ICASE); >+ if (rc < 0) > { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >+ regerror (rc, ®wrk, errbfr, 1024); >+ logmsg (_("HHCTA999E Device %4.4X: Unable to determine tape format type for %s: Internal error: Regcomp error %s on index %d\n"), >+ dev->devnum, dev->filename, errbfr, i); > return -1; > } > >- /* Backspace to previous block position */ >- rc = bsb_awstape (dev, unitstat,code); >- if (rc < 0) return -1; >- >- /* Exit loop if backspaced over a tapemark */ >- if (!rc) break; >+ rc = regexec (®wrk, dev->filename, 1, ®wrk2, 0); >+ if (rc < 0) >+ { >+ regerror (rc, ®wrk, errbfr, 1024); >+ regfree ( ®wrk ); >+ logmsg (_("HHCTA999E Device %4.4X: Unable to determine tape format type for %s: Internal error: Regexec error %s on index %d\n"), >+ dev->devnum, dev->filename, errbfr, i); >+ return -1; >+ } > >- } /* end while */ >+ regfree (®wrk); > >- /* Return normal status */ >- return 0; >+ if (rc == 0) /* MATCH? */ >+ return i; > >-} /* end function bsf_awstape */ >+ ASSERT( rc == REG_NOMATCH ); >+ } > >-/************************************/ >-/* END OF ORIGINAL RB AWS FUNCTIONS */ >-/************************************/ >+#else // !HAVE_REGEX_H > >-/*-------------------------------------------------------------------*/ >-/* Open an HET format file */ >-/* */ >-/* If successful, the het control blk is stored in the device block */ >-/* and the return value is zero. Otherwise the return value is -1. */ >-/*-------------------------------------------------------------------*/ >-static int open_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >+ if (1 >+ && (rc = strlen(dev->filename)) > 4 >+ && (rc = strcasecmp( &dev->filename[rc-4], ".aws" )) == 0 >+ ) >+ { >+ return AWSTAPE_FMTENTRY; >+ } > >- /* Check for no tape in drive */ >- if (!strcmp (dev->filename, TAPE_UNLOADED)) >+ if (1 >+ && (rc = strlen(dev->filename)) > 4 >+ && (rc = strcasecmp( &dev->filename[rc-4], ".het" )) == 0 >+ ) > { >- build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >- return -1; >+ return HETTAPE_FMTENTRY; > } > >- /* Open the HET file */ >- rc = het_open (&dev->hetb, dev->filename, dev->tdparms.logical_readonly ? HETOPEN_READONLY : HETOPEN_CREATE ); >- if (rc >= 0) >+ if (1 >+ && (rc = strlen(dev->filename)) > 4 >+ && (rc = strcasecmp( &dev->filename[rc-4], ".tdf" )) == 0 >+ ) > { >- if(dev->hetb->writeprotect) >- { >- dev->readonly=1; >- } >- rc = het_cntl (dev->hetb, >- HETCNTL_SET | HETCNTL_COMPRESS, >- dev->tdparms.compress); >- if (rc >= 0) >- { >- rc = het_cntl (dev->hetb, >- HETCNTL_SET | HETCNTL_METHOD, >- dev->tdparms.method); >- if (rc >= 0) >- { >- rc = het_cntl (dev->hetb, >- HETCNTL_SET | HETCNTL_LEVEL, >- dev->tdparms.level); >- if (rc >= 0) >- { >- rc = het_cntl (dev->hetb, >- HETCNTL_SET | HETCNTL_CHUNKSIZE, >- dev->tdparms.chksize); >- } >- } >- } >+ return OMATAPE_FMTENTRY; > } > >- /* Check for successful open */ >- if (rc < 0) >+ if (1 >+ && (rc = strlen(dev->filename)) > 4 >+ && (rc = strcasecmp( &dev->filename[rc-4], ".fkt" )) == 0 >+ ) > { >- int save_errno = errno; >- het_close (&dev->hetb); >- errno = save_errno; >+ return FAKETAPE_FMTENTRY; >+ } > >- logmsg (_("HHCTA013E Error opening %s: %s(%s)\n"), >- dev->filename, het_error(rc), strerror(errno)); >+#if defined(OPTION_SCSI_TAPE) >+ if (1 >+ && (rc = strlen(dev->filename)) > 5 >+ && (rc = strncasecmp( dev->filename, "/dev/", 5 )) == 0 >+ ) >+ { >+ if (strncasecmp( dev->filename+5, "st", 2 ) == 0) >+ dev->stape_close_rewinds = 1; // (rewind at close) >+ else >+ dev->stape_close_rewinds = 0; // (otherwise don't) > >- strcpy(dev->filename, TAPE_UNLOADED); >- build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >- return -1; >+ return SCSITAPE_FMTENTRY; >+ } >+#if defined(_MSVC_) >+ if (1 >+ && strncasecmp(dev->filename, "\\\\.\\Tape", 8) == 0 >+ && isdigit(*(dev->filename+8)) >+ && 0 == *(dev->filename+9) >+ ) >+ { >+ return SCSITAPE_FMTENTRY; > } >+#endif // _MSVC_ >+#endif // OPTION_SCSI_TAPE >+#endif // HAVE_REGEX_H > >- /* Indicate file opened */ >- dev->fd = 1; >+ return -1; /* -1 == "unable to determine" */ > >- return 0; >+} /* end function gettapetype_byname */ > >-} /* end function open_het */ > > /*-------------------------------------------------------------------*/ >-/* Close an HET format file */ >-/* */ >-/* The HET file is close and all device block fields reinitialized. */ >+/* gettapetype_bydata determine tape device type by file data */ >+/*-------------------------------------------------------------------*/ >+/* returns fmttab entry# on success, -1 on error/unable to determine */ > /*-------------------------------------------------------------------*/ >-static void close_het (DEVBLK *dev) >+int gettapetype_bydata (DEVBLK *dev) > { >+ char pathname[MAX_PATH]; /* file path in host format */ >+ int rc; /* various rtns return codes */ >+ >+ /* Try to determine the type based on actual file contents */ >+ hostpath( pathname, dev->filename, sizeof(pathname) ); >+ rc = open ( pathname, O_RDONLY | O_BINARY ); >+ if (rc >= 0) >+ { >+ BYTE hdr[6]; /* block header i/o buffer */ >+ int fd = rc; /* save file descriptor */ > >- /* Close the HET file */ >- het_close (&dev->hetb); >+ /* Read the header. If bytes 0-3 are ASCII "0000", then the >+ * tape is likely a Flex FakeTape. Otherwise if bytes 2-3 are >+ * binary zero (x'0000'), it's likely an AWS type tape. If byte >+ * 4 (first flag byte) has either of the ZLIB or BZIP2 flags on, >+ * then it's a HET tape. Otherwise it's just an ordinary AWS tape. >+ */ >+ rc = read (fd, hdr, sizeof(hdr)); >+ close(fd); >+ if (rc >= 6) >+ { >+ /* Use the data to make the possible determination */ >+ if (hdr[0] == 0x30 && hdr[1] == 0x30 && hdr[2] == 0x30 && hdr[3] == 0x30) >+ return FAKETAPE_FMTENTRY; > >- /* Reinitialize the DEV fields */ >- dev->fd = -1; >- strcpy (dev->filename, TAPE_UNLOADED); >- dev->blockid = 0; >- dev->poserror = 0; >+ if (hdr[2] == 0 && hdr[3] == 0) >+ { >+ if (hdr[4] & 0x03) /* ZLIB/BZIP2 compressed? */ >+ return HETTAPE_FMTENTRY; >+ else >+ return AWSTAPE_FMTENTRY; >+ } >+ } >+ } >+ return -1; /* -1 == "unable to determine" */ > >- return; >+} /* end function gettapetype_bydata */ > >-} /* end function close_het */ > > /*-------------------------------------------------------------------*/ >-/* Rewind HET format file */ >-/* */ >-/* The HET file is close and all device block fields reinitialized. */ >+/* gettapetype determine tape device type */ > /*-------------------------------------------------------------------*/ >-static int rewind_het(DEVBLK *dev,BYTE *unitstat,BYTE code) >+/* returns fmttab entry# on success, -1 on error/unable to determine */ >+/*-------------------------------------------------------------------*/ >+int gettapetype (DEVBLK *dev, char **short_descr) > { >-int rc; >- rc = het_rewind (dev->hetb); >- if (rc < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA075E Error seeking to start of %s: %s(%s)\n"), >- dev->filename, het_error(rc), strerror(errno)); >+ char* descr; /* Device descr from fmttab */ >+ int i = -1; /* fmttab entry# */ > >- build_senseX(TAPE_BSENSE_REWINDFAILED,dev,unitstat,code); >- return -1; >+ /* Try to determine device type by actual file contents first, >+ but only if this isn't a SCSI tape device. (Thus we need to >+ check by name first to determine if it's a SCSI device) */ >+#if defined(OPTION_SCSI_TAPE) >+ i = gettapetype_byname( dev ); // (check if this is a SCSI) >+ >+ if (i != SCSITAPE_FMTENTRY) // (if not, then check by.. >+#endif >+ { >+ int i2 = gettapetype_bydata( dev ); // ..reading the file data) >+ if (i2 >= 0) // (if that worked..) >+ i = i2; // (..then we know the type) > } >- dev->nxtblkpos=0; >- dev->prvblkpos=-1; >- dev->curfilen=1; >- dev->blockid=0; >- return 0; >-} >-/*-------------------------------------------------------------------*/ >-/* Read a block from an HET format file */ >-/* */ >-/* If successful, return value is block length read. */ >-/* If a tapemark was read, the return value is zero, and the */ >-/* current file number in the device block is incremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int read_het (DEVBLK *dev, BYTE *buf, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ > >- rc = het_read (dev->hetb, buf); >- if (rc < 0) >+ /* If we couldn't determine the device type based on the file's >+ contents, then try again but this time based on its filename */ >+ if (i < 0) >+ i = gettapetype_byname( dev ); >+ >+ /* If still unknown, use a reasonable default value */ >+ if (i < 0) > { >- /* Increment file number and return zero if tapemark was read */ >- if (HETE_TAPEMARK == rc) >- { >- dev->curfilen++; >- dev->blockid++; >- return 0; >- } >+ i = DEFAULT_FMTENTRY; >+ if (strcmp (dev->filename, TAPE_UNLOADED) != 0) >+ logmsg (_("HHCTA999W Device %4.4X: Unable to determine tape format type for %s; presuming %s.\n"), >+ dev->devnum, dev->filename, fmttab[i].short_descr ); >+ } > >- /* Handle end of file (uninitialized tape) condition */ >- if (HETE_EOT == rc) >- { >- logmsg (_("HHCTA014E End of file (uninitialized tape) " >- "at block %8.8X in file %s\n"), >- dev->hetb->cblk, dev->filename); >+ dev->tapedevt = fmttab[i].fmtcode; >+ dev->tmh = fmttab[i].tmh; >+ descr = fmttab[i].descr; >+ *short_descr = fmttab[i].short_descr; > >- /* Set unit exception with tape indicate (end of tape) */ >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- return -1; >- } >+ if (strcmp (dev->filename, TAPE_UNLOADED) != 0) >+ logmsg (_("HHCTA998I Device %4.4X: %s is a %s\n"), >+ dev->devnum, dev->filename, descr); > >- logmsg (_("HHCTA015E Error reading data block " >- "at block %8.8X in file %s: %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >+ return 0; // (success) > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } >- dev->blockid++; >- /* Return block length */ >- return rc; >+} /* end function gettapetype */ > >-} /* end function read_het */ > > /*-------------------------------------------------------------------*/ >-/* Write a block to an HET format file */ >-/* */ >-/* If successful, return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >+/* The following table goes hand-in-hand with the 'enum' values */ >+/* that immediately follow. Used by 'mountnewtape' function. */ > /*-------------------------------------------------------------------*/ >-static int write_het (DEVBLK *dev, BYTE *buf, U16 blklen, >- BYTE *unitstat,BYTE code) >+ >+PARSER ptab [] = > { >-int rc; /* Return code */ >-off_t cursize; /* Current size for size chk */ >+ { "awstape", NULL }, >+ { "idrc", "%d" }, >+ { "compress", "%d" }, >+ { "method", "%d" }, >+ { "level", "%d" }, >+ { "chunksize", "%d" }, >+ { "maxsize", "%d" }, >+ { "maxsizeK", "%d" }, >+ { "maxsizeM", "%d" }, >+ { "eotmargin", "%d" }, >+ { "strictsize", "%d" }, >+ { "readonly", "%d" }, >+ { "ro", NULL }, >+ { "noring", NULL }, >+ { "rw", NULL }, >+ { "ring", NULL }, >+ { "deonirq", "%d" }, >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ { "noautomount",NULL }, >+#endif >+ { "--blkid-22", NULL }, >+ { "--blkid-24", NULL }, /* (synonym for --blkid-22) */ >+ { "--blkid-32", NULL }, >+ { "--no-erg", NULL }, >+ { NULL, NULL }, /* (end of table) */ >+}; > >- /* Check if we have already violated the size limit */ >- if(dev->tdparms.maxsize>0) >- { >- cursize=het_tell(dev->hetb); >- if(cursize>=dev->tdparms.maxsize) >- { >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- return -1; >- } >- } >- /* Write the data block */ >- rc = het_write (dev->hetb, buf, blklen); >- if (rc < 0) >- { >- /* Handle write error condition */ >- logmsg (_("HHCTA016E Error writing data block " >- "at block %8.8X in file %s: %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >- } >- /* Check if we have violated the maxsize limit */ >- /* Also check if we are passed EOT marker */ >- if(dev->tdparms.maxsize>0) >- { >- cursize=het_tell(dev->hetb); >- if(cursize>dev->tdparms.maxsize) >- { >- logmsg(_("TAPE EOT Handling: max capacity exceeded\n")); >- if(dev->tdparms.strictsize) >- { >- logmsg(_("TAPE EOT Handling: max capacity enforced\n")); >- het_bsb(dev->hetb); >- cursize=het_tell(dev->hetb); >- ftruncate( fileno(dev->hetb->fd),cursize); >- dev->hetb->truncated=TRUE; /* SHOULD BE IN HETLIB */ >- } >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- return -1; >- } >- } >- >- /* Return normal status */ >- dev->blockid++; >- >- return 0; >+/*-------------------------------------------------------------------*/ >+/* The following table goes hand-in-hand with the 'ptab' PARSER */ >+/* table immediately above. Used by 'mountnewtape' function. */ >+/*-------------------------------------------------------------------*/ > >-} /* end function write_het */ >+enum >+{ >+ TDPARM_NONE, >+ TDPARM_AWSTAPE, >+ TDPARM_IDRC, >+ TDPARM_COMPRESS, >+ TDPARM_METHOD, >+ TDPARM_LEVEL, >+ TDPARM_CHKSIZE, >+ TDPARM_MAXSIZE, >+ TDPARM_MAXSIZEK, >+ TDPARM_MAXSIZEM, >+ TDPARM_EOTMARGIN, >+ TDPARM_STRICTSIZE, >+ TDPARM_READONLY, >+ TDPARM_RO, >+ TDPARM_NORING, >+ TDPARM_RW, >+ TDPARM_RING, >+ TDPARM_DEONIRQ, >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ TDPARM_NOAUTOMOUNT, >+#endif >+ TDPARM_BLKID22, >+ TDPARM_BLKID24, >+ TDPARM_BLKID32, >+ TDPARM_NOERG >+}; > > /*-------------------------------------------------------------------*/ >-/* Write a tapemark to an HET format file */ >+/* mountnewtape -- mount a tape in the drive */ >+/*-------------------------------------------------------------------*/ >+/* */ >+/* Syntax: filename [options] */ >+/* */ >+/* where options are any of the entries in the 'ptab' PARSER */ >+/* table defined further above. Some commonly used options are: */ >+/* */ >+/* awstape sets the HET parms to be compatible with the */ >+/* R|P/390|'s tape file Format (HET files) */ >+/* */ >+/* idrc|compress 0|1: Write tape blocks with compression */ >+/* (std deviation: Read backward allowed on */ >+/* compressed HET tapes while it is not on */ >+/* IDRC formated 3480 tapes) */ >+/* */ >+/* --no-erg for SCSI tape only, means the hardware does */ >+/* not support the "Erase Gap" command and all */ >+/* such i/o's should return 'success' instead. */ >+/* */ >+/* --blkid-32 for SCSI tape only, means the hardware */ >+/* only supports full 32-bit block-ids. */ > /* */ >-/* If successful, return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ > /*-------------------------------------------------------------------*/ >-static int write_hetmark (DEVBLK *dev, BYTE *unitstat,BYTE code) >+int mountnewtape ( DEVBLK *dev, int argc, char **argv ) > { >-int rc; /* Return code */ >+ char* short_descr; /* Short descr from fmttab */ >+ int i; /* Loop control */ >+ int rc, optrc; /* various rtns return codes */ >+ union { /* Parser results */ >+ U32 num; /* Parser results */ >+ BYTE str[ 80 ]; /* Parser results */ >+ } res; /* Parser results */ > >- /* Write the tape mark */ >- rc = het_tapemark (dev->hetb); >- if (rc < 0) >+ /* Release the previous OMA descriptor array if allocated */ >+ if (dev->omadesc != NULL) > { >- /* Handle error condition */ >- logmsg (_("HHCTA017E Error writing tape mark " >- "at block %8.8X in file %s: %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_WRITEFAIL,dev,unitstat,code); >- return -1; >+ free (dev->omadesc); >+ dev->omadesc = NULL; > } > >- /* Return normal status */ >- dev->blockid++; >+ /* The first argument is the file name */ >+ if (argc == 0 || strlen(argv[0]) > sizeof(dev->filename)-1) >+ strcpy (dev->filename, TAPE_UNLOADED); >+ else >+ /* Save the file name in the device block */ >+ strcpy (dev->filename, argv[0]); > >- return 0; >+ /* Determine tape device type... */ >+ VERIFY( gettapetype( dev, &short_descr ) == 0 ); > >-} /* end function write_hetmark */ >+ /* (sanity check) */ >+ ASSERT(dev->tapedevt != TAPEDEVT_UNKNOWN); >+ ASSERT(dev->tmh != NULL); >+ ASSERT(short_descr != NULL); > >-/*-------------------------------------------------------------------*/ >-/* Forward space over next block of an HET format file */ >-/* */ >-/* If successful, return value +1. */ >-/* If the block skipped was a tapemark, the return value is zero, */ >-/* and the current file number in the device block is incremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int fsb_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >+ /* Initialize device dependent fields */ >+ dev->fd = -1; >+#if defined(OPTION_SCSI_TAPE) >+ dev->sstat = GMT_DR_OPEN(-1); >+ dev->stape_getstat_sstat = GMT_DR_OPEN(-1); >+#endif >+ dev->omadesc = NULL; >+ dev->omafiles = 0; >+ dev->curfilen = 1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ dev->curblkrem = 0; >+ dev->curbufoff = 0; >+ dev->readonly = 0; >+ dev->hetb = NULL; >+ dev->tdparms.compress = HETDFLT_COMPRESS; >+ dev->tdparms.method = HETDFLT_METHOD; >+ dev->tdparms.level = HETDFLT_LEVEL; >+ dev->tdparms.chksize = HETDFLT_CHKSIZE; >+ dev->tdparms.maxsize = 0; // no max size (default) >+ dev->eotmargin = 128*1024; // 128K EOT margin (default) >+ dev->tdparms.logical_readonly = 0; // read/write (default) >+#if defined( OPTION_TAPE_AUTOMOUNT ) >+ dev->noautomount = 0; >+#endif > >- /* Forward space one block */ >- rc = het_fsb (dev->hetb); >+#if defined(OPTION_SCSI_TAPE) >+ // Real 3590's support Erase Gap and use 32-bit blockids. > >- if (rc < 0) >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt >+ && 0x3590 == dev->devtype) > { >- /* Increment file number and return zero if tapemark was read */ >- if (HETE_TAPEMARK == rc) >- { >- dev->blockid++; >- dev->curfilen++; >- return 0; >- } >- >- logmsg (_("HHCTA018E Error forward spacing " >- "at block %8.8X in file %s: %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >- >- /* Set unit check with equipment check */ >- if(HETE_EOT==rc) >- { >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- } >- else >- { >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- } >- return -1; >+ dev->stape_no_erg = 0; // (default for 3590 SCSI) >+ dev->stape_blkid_32 = 1; // (default for 3590 SCSI) > } >+#endif > >- dev->blockid++; >- >- /* Return +1 to indicate forward space successful */ >- return +1; >- >-} /* end function fsb_het */ >- >-/*-------------------------------------------------------------------*/ >-/* Backspace to previous block of an HET format file */ >-/* */ >-/* If successful, return value will be +1. */ >-/* If the block is a tapemark, the return value is zero, */ >-/* and the current file number in the device block is decremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int bsb_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >+#define HHCTA078E() logmsg (_("HHCTA078E Device %4.4X: option '%s' not valid for %s\n"), \ >+ dev->devnum, argv[i], short_descr) > >- /* Back space one block */ >- rc = het_bsb (dev->hetb); >- if (rc < 0) >+ /* Process remaining options */ >+ rc = 0; >+ for (i = 1; i < argc; i++) > { >- /* Increment file number and return zero if tapemark was read */ >- if (HETE_TAPEMARK == rc) >+ optrc = 0; >+ switch (parser (&ptab[0], argv[i], &res)) > { >- dev->blockid--; >- dev->curfilen--; >- return 0; >- } >+ case TDPARM_NONE: >+ logmsg (_("HHCTA067E Device %4.4X: option '%s' unrecognized\n"), >+ dev->devnum, argv[i]); >+ optrc = -1; >+ break; > >- /* Unit check if already at start of tape */ >- if (HETE_BOT == rc) >- { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >- return -1; >- } >+ case TDPARM_AWSTAPE: >+ if (0 >+ || TAPEDEVT_SCSITAPE == dev->tapedevt >+ || TAPEDEVT_FAKETAPE == dev->tapedevt >+ ) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.compress = FALSE; >+ dev->tdparms.chksize = 4096; >+ break; > >- logmsg (_("HHCTA019E Error reading data block " >- "at block %8.8X in file %s: %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >+ case TDPARM_IDRC: >+ case TDPARM_COMPRESS: >+ if (0 >+ || TAPEDEVT_SCSITAPE == dev->tapedevt >+ || TAPEDEVT_FAKETAPE == dev->tapedevt >+ ) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.compress = (res.num ? TRUE : FALSE); >+ break; > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } >+ case TDPARM_METHOD: >+ if (0 >+ || TAPEDEVT_SCSITAPE == dev->tapedevt >+ || TAPEDEVT_FAKETAPE == dev->tapedevt >+ ) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ if (res.num < HETMIN_METHOD || res.num > HETMAX_METHOD) >+ { >+ logmsg(_("HHCTA068E Device %4.4X: option '%s': method must be within %u-%u\n"), >+ dev->devnum, argv[i], HETMIN_METHOD, HETMAX_METHOD); >+ optrc = -1; >+ break; >+ } >+ dev->tdparms.method = res.num; >+ break; > >- dev->blockid--; >+ case TDPARM_LEVEL: >+ if (0 >+ || TAPEDEVT_SCSITAPE == dev->tapedevt >+ || TAPEDEVT_FAKETAPE == dev->tapedevt >+ ) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ if (res.num < HETMIN_LEVEL || res.num > HETMAX_LEVEL) >+ { >+ logmsg(_("HHCTA069E Device %4.4X: option '%s': level must be within %u-%u\n"), >+ dev->devnum, argv[i], HETMIN_LEVEL, HETMAX_LEVEL); >+ optrc = -1; >+ break; >+ } >+ dev->tdparms.level = res.num; >+ break; > >- /* Return +1 to indicate back space successful */ >- return +1; >+ case TDPARM_CHKSIZE: >+ if (0 >+ || TAPEDEVT_SCSITAPE == dev->tapedevt >+ || TAPEDEVT_FAKETAPE == dev->tapedevt >+ ) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ if (res.num < HETMIN_CHUNKSIZE || res.num > HETMAX_CHUNKSIZE) >+ { >+ logmsg (_("HHCTA070E Device %4.4X: option '%s': chunksize must be within %u-%u\n"), >+ dev->devnum, argv[i], HETMIN_CHUNKSIZE, HETMAX_CHUNKSIZE); >+ optrc = -1; >+ break; >+ } >+ dev->tdparms.chksize = res.num; >+ break; > >-} /* end function bsb_het */ >+ case TDPARM_MAXSIZE: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.maxsize=res.num; >+ break; > >-/*-------------------------------------------------------------------*/ >-/* Forward space to next logical file of HET format file */ >-/* */ >-/* If successful, return value is zero, and the current file number */ >-/* in the device block is incremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int fsf_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >+ case TDPARM_MAXSIZEK: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.maxsize=res.num*1024; >+ break; > >- /* Forward space to start of next file */ >- rc = het_fsf (dev->hetb); >- if (rc < 0) >- { >- logmsg (_("HHCTA020E Error forward spacing to next file " >- "at block %8.8X in file %s: %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >+ case TDPARM_MAXSIZEM: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.maxsize=res.num*1024*1024; >+ break; > >- if(HETE_EOT==rc) >- { >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- } >- else >- { >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- } >- return -1; >- } >+ case TDPARM_EOTMARGIN: >+ dev->eotmargin=res.num; >+ break; > >- /* Maintain position */ >- dev->blockid = rc; >- dev->curfilen++; >+ case TDPARM_STRICTSIZE: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.strictsize=res.num; >+ break; > >- /* Return success */ >- return 0; >+ case TDPARM_READONLY: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.logical_readonly=(res.num ? 1 : 0 ); >+ break; > >-} /* end function fsf_het */ >-/*-------------------------------------------------------------------*/ >-/* Check HET file is passed the allowed EOT margin */ >-/*-------------------------------------------------------------------*/ >-static int passedeot_het (DEVBLK *dev) >-{ >-off_t cursize; >- if(dev->fd>0) >- { >- if(dev->tdparms.maxsize>0) >- { >- cursize=het_tell(dev->hetb); >- if(cursize+dev->tdparms.eotmargin>dev->tdparms.maxsize) >+ case TDPARM_RO: >+ case TDPARM_NORING: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) > { >- return 1; >+ HHCTA078E(); optrc = -1; break; > } >- } >- } >- return 0; >-} >+ dev->tdparms.logical_readonly=1; >+ break; > >-/*-------------------------------------------------------------------*/ >-/* Backspace to previous logical file of HET format file */ >-/* */ >-/* If successful, return value is zero, and the current file number */ >-/* in the device block is decremented. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int bsf_het (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >+ case TDPARM_RW: >+ case TDPARM_RING: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.logical_readonly=0; >+ break; > >- /* Exit if already at BOT */ >- if (1==dev->curfilen && !dev->nxtblkpos) >- { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >- return -1; >- } >+ case TDPARM_DEONIRQ: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->tdparms.deonirq=(res.num ? 1 : 0 ); >+ break; > >- rc = het_bsf (dev->hetb); >- if (rc < 0) >- { >- logmsg (_("HHCTA021E Error back spacing to previous file " >- "at block %8.8X in file %s:\n %s(%s)\n"), >- dev->hetb->cblk, dev->filename, >- het_error(rc), strerror(errno)); >+#if defined( OPTION_TAPE_AUTOMOUNT ) > >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >+ case TDPARM_NOAUTOMOUNT: >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->noautomount = 1; >+ break; > >- /* Maintain position */ >- dev->blockid = rc; >- dev->curfilen--; >+#endif /* OPTION_TAPE_AUTOMOUNT */ > >- /* Return success */ >- return 0; >+#if defined(OPTION_SCSI_TAPE) >+ case TDPARM_BLKID22: >+ case TDPARM_BLKID24: >+ if (TAPEDEVT_SCSITAPE != dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->stape_blkid_32 = 0; >+ break; > >-} /* end function bsf_het */ >+ case TDPARM_BLKID32: >+ if (TAPEDEVT_SCSITAPE != dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->stape_blkid_32 = 1; >+ break; > >-/*-------------------------------------------------------------------*/ >-/* Read the OMA tape descriptor file */ >-/*-------------------------------------------------------------------*/ >-static int read_omadesc (DEVBLK *dev) >-{ >-int rc; /* Return code */ >-int i; /* Array subscript */ >-int pathlen; /* Length of TDF path name */ >-int tdfsize; /* Size of TDF file in bytes */ >-int filecount; /* Number of files */ >-int stmt; /* TDF file statement number */ >-int fd; /* TDF file descriptor */ >-struct stat statbuf; /* TDF file information */ >-U32 blklen; /* Fixed block length */ >-int tdfpos; /* Position in TDF buffer */ >-char *tdfbuf; /* -> TDF file buffer */ >-char *tdfrec; /* -> TDF record */ >-char *tdffilenm; /* -> Filename in TDF record */ >-char *tdfformat; /* -> Format in TDF record */ >-char *tdfreckwd; /* -> Keyword in TDF record */ >-char *tdfblklen; /* -> Length in TDF record */ >-OMATAPE_DESC *tdftab; /* -> Tape descriptor array */ >-BYTE c; /* Work area for sscanf */ >-char pathname[MAX_PATH]; /* file path in host format */ >- >- /* Isolate the base path name of the TDF file */ >- for (pathlen = strlen(dev->filename); pathlen > 0; ) >- { >- pathlen--; >- if ('/' == dev->filename[pathlen-1]) break; >- } >-#if 0 >- // JCS thinks this is bad >- if (pathlen < 7 >- || strncasecmp(dev->filename+pathlen-7, "/tapes/", 7) != 0) >- { >- logmsg (_("HHC232I Invalid filename %s: " >- "TDF files must be in the TAPES subdirectory\n"), >- dev->filename+pathlen); >- return -1; >- } >- pathlen -= 7; >-#endif >- >- /* Open the tape descriptor file */ >- hostpath(pathname, dev->filename, sizeof(pathname)); >- fd = open (pathname, O_RDONLY | O_BINARY); >- if (fd < 0) >- { >- logmsg (_("HHCTA039E Error opening TDF file %s: %s\n"), >- dev->filename, strerror(errno)); >- return -1; >- } >- >- /* Determine the size of the tape descriptor file */ >- rc = fstat (fd, &statbuf); >- if (rc < 0) >- { >- logmsg (_("HHCTA040E %s fstat error: %s\n"), >- dev->filename, strerror(errno)); >- close (fd); >- return -1; >- } >- tdfsize = statbuf.st_size; >+ case TDPARM_NOERG: >+ if (TAPEDEVT_SCSITAPE != dev->tapedevt) >+ { >+ HHCTA078E(); optrc = -1; break; >+ } >+ dev->stape_no_erg = 1; >+ break; >+#endif /* defined(OPTION_SCSI_TAPE) */ > >- /* Obtain a buffer for the tape descriptor file */ >- tdfbuf = malloc (tdfsize); >- if (!tdfbuf) >- { >- logmsg (_("HHCTA041E Cannot obtain buffer for TDF file %s: %s\n"), >- dev->filename, strerror(errno)); >- close (fd); >- return -1; >- } >+ default: >+ logmsg(_("HHCTA071E Device %4.4X: option '%s': parse error\n"), >+ dev->devnum, argv[i]); >+ optrc = -1; >+ break; > >- /* Read the tape descriptor file into the buffer */ >- rc = read (fd, tdfbuf, tdfsize); >- if (rc < tdfsize) >- { >- logmsg (_("HHCTA042E Error reading TDF file %s: %s\n"), >- dev->filename, strerror(errno)); >- free (tdfbuf); >- close (fd); >- return -1; >- } >+ } // end switch (parser (&ptab[0], argv[i], &res)) > >- /* Close the tape descriptor file */ >- close (fd); fd = -1; >+ if (optrc < 0) >+ rc = -1; >+ else >+ logmsg (_("HHCTA066I Device %4.4X: option '%s' accepted.\n"), >+ dev->devnum, argv[i]); > >- /* Check that the first record is a TDF header */ >- if (memcmp(tdfbuf, "@TDF", 4) != 0) >- { >- logmsg (_("HHCTA043E %s is not a valid TDF file\n"), >- dev->filename); >- free (tdfbuf); >- return -1; >- } >+ } // end for (i = 1; i < argc; i++) > >- /* Count the number of linefeeds in the tape descriptor file >- to determine the size of the descriptor array required */ >- for (i = 0, filecount = 0; i < tdfsize; i++) >- { >- if ('\n' == tdfbuf[i]) filecount++; >- } /* end for(i) */ >- /* ISW Add 1 to filecount to add an extra EOT marker */ >- filecount++; >- >- /* Obtain storage for the tape descriptor array */ >- tdftab = (OMATAPE_DESC*)malloc (filecount * sizeof(OMATAPE_DESC)); >- if (!tdftab) >- { >- logmsg (_("HHCTA044E Cannot obtain buffer for TDF array: %s\n"), >- strerror(errno)); >- free (tdfbuf); >+ if (0 != rc) > return -1; >- } > >- /* Build the tape descriptor array */ >- for (filecount = 0, tdfpos = 0, stmt = 1; ; filecount++) >+ /* Adjust the display if necessary */ >+ if(dev->tdparms.displayfeat) > { >- /* Clear the tape descriptor array entry */ >- memset (&(tdftab[filecount]), 0, sizeof(OMATAPE_DESC)); >- >- /* Point past the next linefeed in the TDF file */ >- while (tdfpos < tdfsize && tdfbuf[tdfpos++] != '\n'); >- stmt++; >- >- /* Exit at end of TDF file */ >- if (tdfpos >= tdfsize) break; >- >- /* Mark the end of the TDF record with a null terminator */ >- tdfrec = tdfbuf + tdfpos; >- while (tdfpos < tdfsize && tdfbuf[tdfpos]!='\r' >- && tdfbuf[tdfpos]!='\n') tdfpos++; >- c = tdfbuf[tdfpos]; >- if (tdfpos >= tdfsize) break; >- tdfbuf[tdfpos] = '\0'; >- >- /* Exit if TM or EOT record */ >- if (strcasecmp(tdfrec, "TM") == 0) >- { >- tdftab[filecount].format='X'; >- tdfbuf[tdfpos] = c; >- continue; >- } >- if(strcasecmp(tdfrec, "EOT") == 0) >- { >- tdftab[filecount].format='E'; >- break; >- } >- >- /* Parse the TDF record */ >- tdffilenm = strtok (tdfrec, " \t"); >- tdfformat = strtok (NULL, " \t"); >- tdfreckwd = strtok (NULL, " \t"); >- tdfblklen = strtok (NULL, " \t"); >- >- /* Check for missing fields */ >- if (!tdffilenm || !tdfformat) >- { >- logmsg (_("HHCTA045E Filename or format missing in " >- "line %d of file %s\n"), >- stmt, dev->filename); >- free (tdftab); >- free (tdfbuf); >- return -1; >- } >- >- /* Check that the file name is not too long */ >- if (pathlen + 1 + strlen(tdffilenm) >- > sizeof(tdftab[filecount].filename) - 1) >- { >- logmsg (_("HHCTA046E Filename %s too long in " >- "line %d of file %s\n"), >- tdffilenm, stmt, dev->filename); >- free (tdftab); >- free (tdfbuf); >- return -1; >- } >- >- /* Convert the file name to Unix format */ >- for (i = 0; i < (int)strlen(tdffilenm); i++) >- { >- if ('\\' == tdffilenm[i]) >- tdffilenm[i] = '/'; >-/* JCS */ >-// else >-// tdffilenm[i] = tolower(tdffilenm[i]); >- } /* end for(i) */ >- >- /* Prefix the file name with the base path name and >- save it in the tape descriptor array */ >- /* but only if the filename lacks a leading slash - JCS */ >-/* >- strncpy (tdftab[filecount].filename, dev->filename, pathlen); >- if (tdffilenm[0] != '/') >- stlrcat ( tdftab[filecount].filename, "/", sizeof(tdftab[filecount].filename) ); >- strlcat ( tdftab[filecount].filename, tdffilenm, sizeof(tdftab[filecount].filename) ); >-*/ >- tdftab[filecount].filename[0] = 0; >- >- if ((tdffilenm[0] != '/') && (tdffilenm[1] != ':')) >- { >- strncpy (tdftab[filecount].filename, dev->filename, pathlen); >- strlcat (tdftab[filecount].filename, "/", sizeof(tdftab[filecount].filename) ); >- } >- >- strlcat (tdftab[filecount].filename, tdffilenm, sizeof(tdftab[filecount].filename) ); >- >- /* Check for valid file format code */ >- if (strcasecmp(tdfformat, "HEADERS") == 0) >- { >- tdftab[filecount].format = 'H'; >- } >- else if (strcasecmp(tdfformat, "TEXT") == 0) >- { >- tdftab[filecount].format = 'T'; >- } >- else if (strcasecmp(tdfformat, "FIXED") == 0) >+ if(strcmp(dev->filename,TAPE_UNLOADED)==0) > { >- /* Check for RECSIZE keyword */ >- if (!tdfreckwd || >- strcasecmp(tdfreckwd, "RECSIZE") != 0) >+ /* NO tape is loaded */ >+ if(TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype) > { >- logmsg (_("HHCTA047E RECSIZE keyword missing in " >- "line %d of file %s\n"), >- stmt, dev->filename); >- free (tdftab); >- free (tdfbuf); >- return -1; >+ /* A new tape SHOULD be mounted */ >+ dev->tapedisptype = TAPEDISPTYP_MOUNT; >+ dev->tapedispflags |= TAPEDISPFLG_REQAUTOMNT; >+ strlcpy( dev->tapemsg1, dev->tapemsg2, sizeof(dev->tapemsg1) ); > } >- >- /* Check for valid fixed block length */ >- if (!tdfblklen >- || sscanf(tdfblklen, "%u%c", &blklen, &c) != 1 >- || blklen < 1 || blklen > MAX_BLKLEN) >+ else if(TAPEDISPTYP_UNMOUNT == dev->tapedisptype) > { >- logmsg (_("HHCTA048E Invalid record size %s in " >- "line %d of file %s\n"), >- tdfblklen, stmt, dev->filename); >- free (tdftab); >- free (tdfbuf); >- return -1; >+ dev->tapedisptype = TAPEDISPTYP_IDLE; > } >- >- /* Set format and block length in descriptor array */ >- tdftab[filecount].format = 'F'; >- tdftab[filecount].blklen = blklen; > } > else > { >- logmsg (_("HHCTA049E Invalid record format %s in " >- "line %d of file %s\n"), >- tdfformat, stmt, dev->filename); >- free (tdftab); >- free (tdfbuf); >- return -1; >+ /* A tape IS already loaded */ >+ dev->tapedisptype = TAPEDISPTYP_IDLE; > } >- tdfbuf[tdfpos] = c; >- } /* end for(filecount) */ >- /* Force an EOT as last entry (filecount is correctly adjusted here) */ >- tdftab[filecount].format='E'; >- >- /* Save the file count and TDF array pointer in the device block */ >- dev->omafiles = filecount+1; >- dev->omadesc = tdftab; >- >- /* Release the TDF file buffer and exit */ >- free (tdfbuf); >+ } >+ UpdateDisplay(dev); >+ ReqAutoMount(dev); > return 0; > >-} /* end function read_omadesc */ >+} /* end function mountnewtape */ >+ > > /*-------------------------------------------------------------------*/ >-/* Open the OMATAPE file defined by the current file number */ >-/* */ >-/* The OMA tape descriptor file is read if necessary. */ >-/* If successful, the file descriptor is stored in the device block */ >-/* and the return value is zero. Otherwise the return value is -1. */ >+/* Query the device definition */ > /*-------------------------------------------------------------------*/ >-static int open_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >+void tapedev_query_device ( DEVBLK *dev, char **class, >+ int buflen, char *buffer ) > { >-int fd; /* File descriptor integer */ >-int rc; /* Return code */ >-OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >-char pathname[MAX_PATH]; /* file path in host format */ >- >- /* Read the OMA descriptor file if necessary */ >- if (!dev->omadesc) >- { >- rc = read_omadesc (dev); >- if (rc < 0) >- { >- build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >- return -1; >- } >- dev->blockid = 0; >- dev->poserror = 0; >- } >- >- /* Unit exception if beyond end of tape */ >- /* ISW: CHANGED PROCESSING - RETURN UNDEFINITE Tape Marks */ >- /* NOTE: The last entry in the TDF table is ALWAYS */ >- /* an EOT Condition */ >- /* This is ensured by the TDF reading routine */ >-#if 0 >- if (dev->curfilen >= dev->omafiles) >- { >- logmsg (_("HHCTA050E Attempt to access beyond end of tape %s\n"), >- dev->filename); >+ char devparms[ MAX_PATH+1 + 128 ]; >+ char dispmsg [ 256 ]; > >- build_senseX(TAPE_BSENSE_ENDOFTAPE,dev,unitstat,code); >- return -1; >- } >-#else >- if(dev->curfilen>dev->omafiles) >- { >- dev->curfilen=dev->omafiles; >- return(0); >- } >-#endif >- >- /* Point to the current file entry in the OMA descriptor table */ >- omadesc = (OMATAPE_DESC*)(dev->omadesc); >- omadesc += (dev->curfilen-1); >- if('X' == omadesc->format) >- { >- return 0; >- } >- if('E'==omadesc->format) >- { >- return 0; >- } >- >- /* Open the OMATAPE file */ >- hostpath(pathname, omadesc->filename, sizeof(pathname)); >- fd = open (pathname, O_RDONLY | O_BINARY); >- >- /* Check for successful open */ >- if (fd < 0 || lseek (fd, 0, SEEK_END) > LONG_MAX) >- { >- if (fd >= 0) /* (if open was successful, then it) */ >- errno = EOVERFLOW; /* (must have been a lseek overflow) */ >- >- logmsg (_("HHCTA051E Error opening %s: %s\n"), >- omadesc->filename, strerror(errno)); >- >- if (fd >= 0) >- close(fd); /* (close the file if it was opened) */ >+ BEGIN_DEVICE_CLASS_QUERY( "TAPE", dev, class, buflen, buffer ); > >- build_senseX(TAPE_BSENSE_TAPELOADFAIL,dev,unitstat,code); >- return -1; >- } >- >- /* OMA tapes are always read-only */ >- dev->readonly = 1; >+ *buffer = 0; >+ devparms[0]=0; >+ dispmsg [0]=0; > >- /* Store the file descriptor in the device block */ >- dev->fd = fd; >- return 0; >+ GetDisplayMsg( dev, dispmsg, sizeof(dispmsg) ); > >-} /* end function open_omatape */ >+ if (strchr(dev->filename,' ')) strlcat( devparms, "\"", sizeof(devparms)); >+ strlcat( devparms, dev->filename, sizeof(devparms)); >+ if (strchr(dev->filename,' ')) strlcat( devparms, "\"", sizeof(devparms)); > >-/*-------------------------------------------------------------------*/ >-/* Read a block header from an OMA tape file in OMA headers format */ >-/* */ >-/* If successful, return value is zero, and the current block */ >-/* length and previous and next header offsets are returned. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int readhdr_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >- long blkpos, S32 *pcurblkl, S32 *pprvhdro, >- S32 *pnxthdro, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-off_t rcoff; /* Return code from lseek() */ >-int padding; /* Number of padding bytes */ >-OMATAPE_BLKHDR omahdr; /* OMATAPE block header */ >-S32 curblkl; /* Length of current block */ >-S32 prvhdro; /* Offset of previous header */ >-S32 nxthdro; /* Offset of next header */ >- >- /* Seek to start of block header */ >- rcoff = lseek (dev->fd, blkpos, SEEK_SET); >- if (rcoff < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA052E Error seeking to offset %8.8lX " >- "in file %s: %s\n"), >- blkpos, omadesc->filename, strerror(errno)); >+#if defined( OPTION_TAPE_AUTOMOUNT ) > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >+ if (dev->noautomount) >+ strlcat( devparms, " noautomount", sizeof(devparms)); > >- /* Read the 16-byte block header */ >- rc = read (dev->fd, &omahdr, sizeof(omahdr)); >+#endif /* OPTION_TAPE_AUTOMOUNT */ > >- /* Handle read error condition */ >- if (rc < 0) >+ if ( strcmp( dev->filename, TAPE_UNLOADED ) == 0 ) > { >- logmsg (_("HHCTA053E Error reading block header " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, omadesc->filename, >- strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >+#if defined(OPTION_SCSI_TAPE) >+ if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >+ { >+ if (0x3590 == dev->devtype) // emulating 3590 >+ { >+ if (!dev->stape_blkid_32 ) strlcat( devparms, " --blkid-22", sizeof(devparms) ); >+ } >+ else // emulating 3480, 3490 >+ { >+ if ( dev->stape_blkid_32 ) strlcat( devparms, " --blkid-32", sizeof(devparms) ); >+ } >+ if ( dev->stape_no_erg ) strlcat( devparms, " --no-erg", sizeof(devparms) ); >+ } >+#endif >+ snprintf(buffer, buflen, "%s%s%s", >+ devparms, >+ dev->tdparms.displayfeat ? ", Display: " : "", >+ dev->tdparms.displayfeat ? dispmsg : ""); > } >- >- /* Handle end of file within block header */ >- if (rc < (int)sizeof(omahdr)) >+ else // (filename was specified) > { >- logmsg (_("HHCTA054E Unexpected end of file in block header " >- "at offset %8.8lX in file %s\n"), >- blkpos, omadesc->filename); >- >- /* Set unit check with data check and partial record */ >- build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >- return -1; >- } >- >- /* Extract the current block length and previous header offset */ >- curblkl = (S32)(((U32)(omahdr.curblkl[3]) << 24) >- | ((U32)(omahdr.curblkl[2]) << 16) >- | ((U32)(omahdr.curblkl[1]) << 8) >- | omahdr.curblkl[0]); >- prvhdro = (S32)((U32)(omahdr.prvhdro[3]) << 24) >- | ((U32)(omahdr.prvhdro[2]) << 16) >- | ((U32)(omahdr.prvhdro[1]) << 8) >- | omahdr.prvhdro[0]; >- >- /* Check for valid block header */ >- if (curblkl < -1 || !curblkl || curblkl > MAX_BLKLEN >- || memcmp(omahdr.omaid, "@HDF", 4) != 0) >- { >- logmsg (_("HHCTA055E Invalid block header " >- "at offset %8.8lX in file %s\n"), >- blkpos, omadesc->filename); >- >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } >+ char tapepos[64]; tapepos[0]=0; > >- /* Calculate the number of padding bytes which follow the data */ >- padding = (16 - (curblkl & 15)) & 15; >- >- /* Calculate the offset of the next block header */ >- nxthdro = blkpos + sizeof(OMATAPE_BLKHDR) + curblkl + padding; >- >- /* Return current block length and previous/next header offsets */ >- *pcurblkl = curblkl; >- *pprvhdro = prvhdro; >- *pnxthdro = nxthdro; >- return 0; >- >-} /* end function readhdr_omaheaders */ >- >-/*-------------------------------------------------------------------*/ >-/* Read a block from an OMA tape file in OMA headers format */ >-/* */ >-/* If successful, return value is block length read. */ >-/* If a tapemark was read, the file is closed, the current file */ >-/* number in the device block is incremented so that the next file */ >-/* will be opened by the next CCW, and the return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int read_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >- BYTE *buf, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-long blkpos; /* Offset to block header */ >-S32 curblkl; /* Length of current block */ >-S32 prvhdro; /* Offset of previous header */ >-S32 nxthdro; /* Offset of next header */ >- >- /* Read the 16-byte block header */ >- blkpos = dev->nxtblkpos; >- rc = readhdr_omaheaders (dev, omadesc, blkpos, &curblkl, >- &prvhdro, &nxthdro, unitstat,code); >- if (rc < 0) return -1; >- >- /* Update the offsets of the next and previous blocks */ >- dev->nxtblkpos = nxthdro; >- dev->prvblkpos = blkpos; >- >- /* Increment file number and return zero if tapemark */ >- if (-1 == curblkl) >- { >- close (dev->fd); >- dev->fd = -1; >- dev->curfilen++; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- return 0; >- } >- >- /* Read data block from tape file */ >- rc = read (dev->fd, buf, curblkl); >- >- /* Handle read error condition */ >- if (rc < 0) >- { >- logmsg (_("HHCTA056E Error reading data block " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, omadesc->filename, >- strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } >+ if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >+ { >+ snprintf( tapepos, sizeof(tapepos), "[%d:%08"I64_FMT"X] ", >+ dev->curfilen, dev->nxtblkpos ); >+ tapepos[sizeof(tapepos)-1] = 0; >+ } >+#if defined(OPTION_SCSI_TAPE) >+ else // (this is a SCSI tape drive) >+ { >+ if (STS_BOT( dev )) >+ { >+ dev->eotwarning = 0; >+ strlcat(tapepos,"*BOT* ",sizeof(tapepos)); >+ } > >- /* Handle end of file within data block */ >- if (rc < curblkl) >- { >- logmsg (_("HHCTA057E Unexpected end of file in data block " >- "at offset %8.8lX in file %s\n"), >- blkpos, omadesc->filename); >+ // If tape has a display, then GetDisplayMsg already >+ // appended *FP* for us. Otherwise we need to do it. > >- /* Set unit check with data check and partial record */ >- build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >- return -1; >- } >+ if ( !dev->tdparms.displayfeat ) >+ if (STS_WR_PROT( dev )) >+ strlcat(tapepos,"*FP* ",sizeof(tapepos)); > >- /* Return block length */ >- return curblkl; >+ if (0x3590 == dev->devtype) // emulating 3590 >+ { >+ if (!dev->stape_blkid_32 ) strlcat( devparms, " --blkid-22", sizeof(devparms) ); >+ } >+ else // emulating 3480, 3490 >+ { >+ if ( dev->stape_blkid_32 ) strlcat( devparms, " --blkid-32", sizeof(devparms) ); >+ } >+ if ( dev->stape_no_erg ) strlcat( devparms, " --no-erg", sizeof(devparms) ); >+ } >+#endif > >-} /* end function read_omaheaders */ >+ if ( TAPEDEVT_SCSITAPE != dev->tapedevt >+#if defined(OPTION_SCSI_TAPE) >+ || !STS_NOT_MOUNTED(dev) >+#endif >+ ) >+ { >+ // Not a SCSI tape, -or- mounted SCSI tape... > >-/*-------------------------------------------------------------------*/ >-/* Read a block from an OMA tape file in fixed block format */ >-/* */ >-/* If successful, return value is block length read. */ >-/* If a tapemark was read, the file is closed, the current file */ >-/* number in the device block is incremented so that the next file */ >-/* will be opened by the next CCW, and the return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int read_omafixed (DEVBLK *dev, OMATAPE_DESC *omadesc, >- BYTE *buf, BYTE *unitstat,BYTE code) >-{ >-off_t rcoff; /* Return code from lseek() */ >-int blklen; /* Block length */ >-long blkpos; /* Offset of block in file */ >- >- /* Initialize current block position */ >- blkpos = dev->nxtblkpos; >- >- /* Seek to new current block position */ >- rcoff = lseek (dev->fd, blkpos, SEEK_SET); >- if (rcoff < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA058E Error seeking to offset %8.8lX " >- "in file %s: %s\n"), >- blkpos, omadesc->filename, strerror(errno)); >+ snprintf (buffer, buflen, "%s%s %s%s%s", > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >+ devparms, (dev->readonly ? " ro" : ""), > >- /* Read fixed length block or short final block */ >- blklen = read (dev->fd, buf, omadesc->blklen); >+ tapepos, >+ dev->tdparms.displayfeat ? "Display: " : "", >+ dev->tdparms.displayfeat ? dispmsg : ""); >+ } >+ else /* ( TAPEDEVT_SCSITAPE == dev->tapedevt && STS_NOT_MOUNTED(dev) ) */ >+ { >+ // UNmounted SCSI tape... > >- /* Handle read error condition */ >- if (blklen < 0) >- { >- logmsg (_("HHCTA059E Error reading data block " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, omadesc->filename, >- strerror(errno)); >+ snprintf (buffer, buflen, "%s%s (%sNOTAPE)%s%s", > >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } >+ devparms, (dev->readonly ? " ro" : ""), > >- /* At end of file return zero to indicate tapemark */ >- if (!blklen) >- { >- close (dev->fd); >- dev->fd = -1; >- dev->curfilen++; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- return 0; >+ dev->fd < 0 ? "closed; " : "", >+ dev->tdparms.displayfeat ? ", Display: " : "", >+ dev->tdparms.displayfeat ? dispmsg : "" ); >+ } > } > >- /* Calculate the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos + blklen; >- dev->prvblkpos = blkpos; >+ buffer[buflen-1] = 0; > >- /* Return block length, or zero to indicate tapemark */ >- return blklen; >+} /* end function tapedev_query_device */ > >-} /* end function read_omafixed */ > > /*-------------------------------------------------------------------*/ >-/* Read a block from an OMA tape file in ASCII text format */ >-/* */ >-/* If successful, return value is block length read. */ >-/* If a tapemark was read, the file is closed, the current file */ >-/* number in the device block is incremented so that the next file */ >-/* will be opened by the next CCW, and the return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/* */ >-/* The buf parameter points to the I/O buffer during a read */ >-/* operation, or is NULL for a forward space block operation. */ >+/* Issue a message on the console indicating the display status */ > /*-------------------------------------------------------------------*/ >-static int read_omatext (DEVBLK *dev, OMATAPE_DESC *omadesc, >- BYTE *buf, BYTE *unitstat,BYTE code) >+void UpdateDisplay( DEVBLK *dev ) > { >-int rc; /* Return code */ >-off_t rcoff; /* Return code from lseek() */ >-int num; /* Number of characters read */ >-int pos; /* Position in I/O buffer */ >-long blkpos; /* Offset of block in file */ >-BYTE c; /* Character work area */ >- >- /* Initialize current block position */ >- blkpos = dev->nxtblkpos; >- >- /* Seek to new current block position */ >- rcoff = lseek (dev->fd, blkpos, SEEK_SET); >- if (rcoff < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA060E Error seeking to offset %8.8lX " >- "in file %s: %s\n"), >- blkpos, omadesc->filename, strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >- >- /* Read data from tape file until end of line */ >- for (num = 0, pos = 0; ; ) >+ if ( dev->tdparms.displayfeat ) > { >- rc = read (dev->fd, &c, 1); >- if (rc < 1) break; >+ char msgbfr[256]; >+ >+ GetDisplayMsg( dev, msgbfr, sizeof(msgbfr) ); > >- /* Treat X'1A' as end of file */ >- if ('\x1A' == c) >+ if ( dev->prev_tapemsg ) > { >- rc = 0; >- break; >+ if ( strcmp( msgbfr, dev->prev_tapemsg ) == 0 ) >+ return; >+ free( dev->prev_tapemsg ); >+ dev->prev_tapemsg = NULL; > } > >- /* Count characters read */ >- num++; >- >- /* Ignore carriage return character */ >- if ('\r' == c) continue; >- >- /* Exit if newline character */ >- if ('\n' == c) break; >- >- /* Ignore characters in excess of I/O buffer length */ >- if (pos >= MAX_BLKLEN) continue; >- >- /* Translate character to EBCDIC and copy to I/O buffer */ >- if (buf) >- buf[pos] = host_to_guest(c); >- >- /* Count characters copied or skipped */ >- pos++; >- >- } /* end for(num) */ >+ dev->prev_tapemsg = strdup( msgbfr ); > >- /* At end of file return zero to indicate tapemark */ >- if (!rc && !num) >- { >- close (dev->fd); >- dev->fd = -1; >- dev->curfilen++; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- return 0; >+ logmsg(_("HHCTA100I %4.4X: Now Displays: %s\n"), >+ dev->devnum, msgbfr ); > } >+#if defined(OPTION_SCSI_TAPE) >+ else >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ int_scsi_status_update( dev, 1 ); >+#endif >+} > >- /* Handle read error condition */ >- if (rc < 0) >- { >- logmsg (_("HHCTA061E Error reading data block " >- "at offset %8.8lX in file %s: %s\n"), >- blkpos, omadesc->filename, >- strerror(errno)); >- >- build_senseX(TAPE_BSENSE_READFAIL,dev,unitstat,code); >- return -1; >- } > >- /* Check for block not terminated by newline */ >- if (rc < 1) >- { >- logmsg (_("HHCTA062E Unexpected end of file in data block " >- "at offset %8.8lX in file %s\n"), >- blkpos, omadesc->filename); >+/*-------------------------------------------------------------------*/ >+/* Issue Automatic Mount Requests as defined by the display */ >+/*-------------------------------------------------------------------*/ >+void ReqAutoMount( DEVBLK *dev ) >+{ >+ char volser[7]; >+ BYTE tapeloaded, autoload, mountreq, unmountreq, stdlbled, ascii, scratch; >+ char* lbltype; >+ char* tapemsg = ""; >+ char* eyecatcher = >+"*******************************************************************************"; > >- /* Set unit check with data check and partial record */ >- build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >- return -1; >- } >+ /////////////////////////////////////////////////////////////////// > >- /* Check for invalid zero length block */ >- if (!pos) >- { >- logmsg (_("HHCTA063E Invalid zero length block " >- "at offset %8.8lX in file %s\n"), >- blkpos, omadesc->filename); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_BLOCKSHORT,dev,unitstat,code); >- return -1; >- } >- >- /* Calculate the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos + num; >- dev->prvblkpos = blkpos; >- >- /* Return block length */ >- return pos; >- >-} /* end function read_omatext */ >- >-/*-------------------------------------------------------------------*/ >-/* Read a block from an OMA - Selection of format done here */ >-/* */ >-/* If successful, return value is block length read. */ >-/* If a tapemark was read, the file is closed, the current file */ >-/* number in the device block is incremented so that the next file */ >-/* will be opened by the next CCW, and the return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/* */ >-/* The buf parameter points to the I/O buffer during a read */ >-/* operation, or is NULL for a forward space block operation. */ >-/*-------------------------------------------------------------------*/ >-static int read_omatape (DEVBLK *dev, >- BYTE *buf, BYTE *unitstat,BYTE code) >-{ >-int len; >-OMATAPE_DESC *omadesc; >- omadesc = (OMATAPE_DESC*)(dev->omadesc); >- omadesc += (dev->curfilen-1); >- >- switch (omadesc->format) >- { >- default: >- case 'H': >- len = read_omaheaders (dev, omadesc, buf, unitstat,code); >- break; >- case 'F': >- len = read_omafixed (dev, omadesc, buf, unitstat,code); >- break; >- case 'T': >- len = read_omatext (dev, omadesc, buf, unitstat,code); >- break; >- case 'X': >- len=0; >- dev->curfilen++; >- break; >- case 'E': >- len=0; >- break; >- } /* end switch(omadesc->format) */ >- >- if (len >= 0) >- dev->blockid++; >- >- return len; >-} >- >-/*-------------------------------------------------------------------*/ >-/* Forward space to next file of OMA tape device */ >-/* */ >-/* For OMA tape devices, the forward space file operation is */ >-/* achieved by closing the current file, and incrementing the */ >-/* current file number in the device block, which causes the */ >-/* next file will be opened when the next CCW is processed. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int fsf_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >- UNREFERENCED(unitstat); >- UNREFERENCED(code); >- >- /* Close the current OMA file */ >- if (dev->fd >= 0) >- close (dev->fd); >- dev->fd = -1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >+ // The Automatic Cartridge Loader or "ACL" (sometimes also referred >+ // to as an "Automatic Cartridge Feeder" (ACF) too) automatically >+ // loads the next cartridge [from the magazine] whenever a tape is >+ // unloaded, BUT ONLY IF the 'Index Automatic Load' bit (bit 7) of >+ // the FCB (Format Control Byte, byte 0) was on whenever the Load >+ // Display ccw was sent to the drive. If the bit was not on when >+ // the Load Display ccw was issued, then the requested message (if >+ // any) is displayed until the next tape mount/dismount and the ACL >+ // is NOT activated (i.e. the next tape is NOT automatically loaded). >+ // If the bit was on however, then, as stated, the ACF component of >+ // the drive will automatically load the next [specified] cartridge. > >- /* Increment the current file number */ >- dev->curfilen++; >+ // Whenever the ACL facility is activated (via bit 7 of byte 0 of >+ // the Load Display ccw), then only bytes 1-8 of the "Display Until >+ // Mounted" message (or bytes 9-17 of a "Display Until Dismounted >+ // Then Mounted" message) are displayed to let the operator know >+ // which tape is currently being processed by the autoloader and >+ // thus is basically for informational purposes only (the operator >+ // does NOT need to do anything since the auto-loader is handling >+ // tape mounts for them automatically; i.e. the message is NOT an >+ // operator mount/dismount request). > >- /* Return normal status */ >- return 0; >+ // If the 'Index Automatic Load' bit was not set in the Load Display >+ // CCW however, then the specified "Display Until Mounted", "Display >+ // Until Unmounted" or "Display Until Unmounted Then Display Until >+ // Mounted" message is meant as a mount, unmount, or unmount-then- >+ // mount request for the actual [human being] operator, and thus >+ // they DO need to take some sort of action (since the ACL automatic >+ // loader facility is not active; i.e. the message is a request to >+ // the operator to manually unload, load or unload then load a tape). > >-} /* end function fsf_omatape */ >+ // THUS... If the TAPEDISPFLG_AUTOLOADER flag is set (indicating >+ // the autoloader is (or should be) active), then the message we >+ // issue is simply for INFORMATIONAL purposes only (i.e. "FYI: the >+ // following tape is being *automatically* loaded; you don't need >+ // to actually do anything") > >-/*-------------------------------------------------------------------*/ >-/* Forward space over next block of OMA file in OMA headers format */ >-/* */ >-/* If successful, return value is the length of the block skipped. */ >-/* If the block skipped was a tapemark, the return value is zero, */ >-/* the file is closed, and the current file number in the device */ >-/* block is incremented so that the next file belonging to the OMA */ >-/* tape will be opened when the next CCW is executed. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int fsb_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >- BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-long blkpos; /* Offset of block header */ >-S32 curblkl; /* Length of current block */ >-S32 prvhdro; /* Offset of previous header */ >-S32 nxthdro; /* Offset of next header */ >+ // If the TAPEDISPFLG_AUTOLOADER is flag is NOT set however, then >+ // we need to issue a message notifying the operator of what they >+ // are *expected* to do (e.g. either unload, load or unload/load >+ // the specified tape volume). > >- /* Initialize current block position */ >- blkpos = dev->nxtblkpos; >+ // Also please note that while there are no formally established >+ // standards regarding the format of the Load Display CCW message >+ // text, there are however certain established conventions (estab- >+ // lished by IBM naturally). If the first character is an 'M', it >+ // means "Please MOUNT the indicated volume". An 'R' [apparently] >+ // means "Retain", and, similarly, 'K' means "Keep" (same thing as >+ // "Retain"). If the LAST character is an 'S', then it means that >+ // a Standard Labeled volume is being requested, whereas an 'N' >+ // (or really, anything OTHER than an 'S' (except 'A')) means an >+ // unlabeled (or non-labeled) tape volume is being requested. An >+ // 'A' as the last character means a Standard Labeled ASCII tape >+ // is being requested. If the message is "SCRTCH" (or something >+ // similar), then a either a standard labeled or unlabeled scratch >+ // tape is obviously being requested (there doesn't seem to be any >+ // convention/consensus regarding the format for requesting scratch >+ // tapes; some shops for example use 'XXXSCR' to indicate that a >+ // scratch tape from tape pool 'XXX' should be mounted). > >- /* Read the 16-byte block header */ >- rc = readhdr_omaheaders (dev, omadesc, blkpos, &curblkl, >- &prvhdro, &nxthdro, unitstat,code); >- if (rc < 0) return -1; >+ /////////////////////////////////////////////////////////////////// > >- /* Check if tapemark was skipped */ >- if (-1 == curblkl) >+ /* Open the file/drive if needed (kick off auto-mount if needed) */ >+ if (dev->fd < 0) > { >- /* Close the current OMA file */ >- if (dev->fd >= 0) >- close (dev->fd); >- dev->fd = -1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- >- /* Increment the file number */ >- dev->curfilen++; >- >- /* Return zero to indicate tapemark */ >- return 0; >- } >- >- /* Update the offsets of the next and previous blocks */ >- dev->nxtblkpos = nxthdro; >- dev->prvblkpos = blkpos; >- >- /* Return block length */ >- return curblkl; >+ BYTE unitstat = 0, code = 0; > >-} /* end function fsb_omaheaders */ >+ dev->tmh->open( dev, &unitstat, code ); > >-/*-------------------------------------------------------------------*/ >-/* Forward space over next block of OMA file in fixed block format */ >-/* */ >-/* If successful, return value is the length of the block skipped. */ >-/* If already at end of file, the return value is zero, */ >-/* the file is closed, and the current file number in the device */ >-/* block is incremented so that the next file belonging to the OMA */ >-/* tape will be opened when the next CCW is executed. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int fsb_omafixed (DEVBLK *dev, OMATAPE_DESC *omadesc, >- BYTE *unitstat,BYTE code) >-{ >-off_t eofpos; /* Offset of end of file */ >-off_t blkpos; /* Offset of current block */ >-int curblkl; /* Length of current block */ >- >- /* Initialize current block position */ >- blkpos = dev->nxtblkpos; >- >- /* Seek to end of file to determine file size */ >- eofpos = lseek (dev->fd, 0, SEEK_END); >- if (eofpos < 0 || eofpos >= LONG_MAX) >- { >- /* Handle seek error condition */ >- if ( eofpos >= LONG_MAX) errno = EOVERFLOW; >- logmsg (_("HHCTA064E Error seeking to end of file %s: %s\n"), >- omadesc->filename, strerror(errno)); >+#if defined(OPTION_SCSI_TAPE) >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ { >+ // PROGRAMMING NOTE: it's important to do TWO refreshes here >+ // to cause the auto-mount thread to get created. Doing only >+ // one doesn't work and doing two shouldn't cause any harm. > >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- return -1; >- } >+ GENTMH_PARMS gen_parms; > >- /* Check if already at end of file */ >- if (blkpos >= eofpos) >- { >- /* Close the current OMA file */ >- if (dev->fd >= 0) >- close (dev->fd); >- dev->fd = -1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >+ gen_parms.action = GENTMH_SCSI_ACTION_UPDATE_STATUS; >+ gen_parms.dev = dev; > >- /* Increment the file number */ >- dev->curfilen++; >+ // (refresh potentially stale status) >+ VERIFY( dev->tmh->generic( &gen_parms ) == 0 ); > >- /* Return zero to indicate tapemark */ >- return 0; >+ // (force auto-mount thread creation) >+ VERIFY( dev->tmh->generic( &gen_parms ) == 0 ); >+ } >+#endif /* defined(OPTION_SCSI_TAPE) */ > } > >- /* Calculate current block length */ >- curblkl = (int)(eofpos - blkpos); >- if (curblkl > omadesc->blklen) >- curblkl = omadesc->blklen; >- >- /* Update the offsets of the next and previous blocks */ >- dev->nxtblkpos = (long)(blkpos + curblkl); >- dev->prvblkpos = (long)(blkpos); >- >- /* Return block length */ >- return curblkl; >- >-} /* end function fsb_omafixed */ >- >-/*-------------------------------------------------------------------*/ >-/* Forward space to next block of OMA file */ >-/* */ >-/* If successful, return value is the length of the block skipped. */ >-/* If forward spaced over end of file, return value is 0. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int fsb_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >+ /* Disabled when [non-SCSI] ACL in use */ >+ if ( dev->als ) >+ return; > >- /* Point to the current file entry in the OMA descriptor table */ >- omadesc = (OMATAPE_DESC*)(dev->omadesc); >- omadesc += (dev->curfilen-1); >+ /* Do we actually have any work to do? */ >+ if ( !( dev->tapedispflags & TAPEDISPFLG_REQAUTOMNT ) ) >+ return; // (nothing to do!) > >- /* Forward space block depending on OMA file type */ >- switch (omadesc->format) >- { >- default: >- case 'H': >- rc = fsb_omaheaders (dev, omadesc, unitstat,code); >- break; >- case 'F': >- rc = fsb_omafixed (dev, omadesc, unitstat,code); >- break; >- case 'T': >- rc = read_omatext (dev, omadesc, NULL, unitstat,code); >- break; >- } /* end switch(omadesc->format) */ >+ /* Reset work flag */ >+ dev->tapedispflags &= ~TAPEDISPFLG_REQAUTOMNT; > >- if (rc >= 0) dev->blockid++; >+ /* If the drive doesn't have a display, >+ then it can't have an auto-loader either */ >+ if ( !dev->tdparms.displayfeat ) >+ return; > >- return rc; >+ /* Determine if mount or unmount request >+ and get pointer to correct message */ > >-} /* end function fsb_omatape */ >+ tapeloaded = dev->tmh->tapeloaded( dev, NULL, 0 ) ? TRUE : FALSE; > >-/*-------------------------------------------------------------------*/ >-/* Backspace to previous file of OMA tape device */ >-/* */ >-/* If the current file number is 1, then backspace file simply */ >-/* closes the file, setting the current position to start of tape. */ >-/* Otherwise, the current file is closed, the current file number */ >-/* is decremented, the new file is opened, and the new file is */ >-/* repositioned to just before the tape mark at the end of the file. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/*-------------------------------------------------------------------*/ >-static int bsf_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-off_t pos; /* File position */ >-OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >-S32 curblkl; /* Length of current block */ >-S32 prvhdro; /* Offset of previous header */ >-S32 nxthdro; /* Offset of next header */ >- >- /* Close the current OMA file */ >- if (dev->fd >= 0) >- close (dev->fd); >- dev->fd = -1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >+ mountreq = FALSE; // (default) >+ unmountreq = FALSE; // (default) > >- /* Exit with tape at load point if currently on first file */ >- if (dev->curfilen <= 1) >+ if (tapeloaded) > { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >- return -1; >- } >+ // A tape IS already loaded... > >- /* Decrement current file number */ >- dev->curfilen--; >+ // 1st byte of message1 non-blank, *AND*, >+ // unmount request or, >+ // unmountmount request and not message2-only flag? > >- /* Point to the current file entry in the OMA descriptor table */ >- omadesc = (OMATAPE_DESC*)(dev->omadesc); >- omadesc += (dev->curfilen-1); >- >- /* Open the new current file */ >- rc = open_omatape (dev, unitstat,code); >- if (rc < 0) return rc; >- >- /* Reposition before tapemark header at end of file, or >- to end of file for fixed block or ASCII text files */ >- pos = 0; >- if ( 'H' == omadesc->format ) >- pos -= sizeof(OMATAPE_BLKHDR); >- >- pos = lseek (dev->fd, pos, SEEK_END); >- if (pos < 0) >- { >- /* Handle seek error condition */ >- logmsg (_("HHCTA065E Error seeking to end of file %s: %s\n"), >- omadesc->filename, strerror(errno)); >- >- /* Set unit check with equipment check */ >- build_senseX(TAPE_BSENSE_LOCATEERR,dev,unitstat,code); >- dev->sense[0] = SENSE_EC; >- *unitstat = CSW_CE | CSW_DE | CSW_UC; >- return -1; >+ if (' ' != *(tapemsg = dev->tapemsg1) && >+ (0 >+ || TAPEDISPTYP_UNMOUNT == dev->tapedisptype >+ || (1 >+ && TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype >+ && !(dev->tapedispflags & TAPEDISPFLG_MESSAGE2) >+ ) >+ ) >+ ) >+ unmountreq = TRUE; > } >- dev->nxtblkpos = pos; >- dev->prvblkpos = -1; >- >- /* Determine the offset of the previous block */ >- switch (omadesc->format) >- { >- case 'H': >- /* For OMA headers files, read the tapemark header >- and extract the previous block offset */ >- rc = readhdr_omaheaders (dev, omadesc, pos, &curblkl, >- &prvhdro, &nxthdro, unitstat,code); >- if (rc < 0) return -1; >- dev->prvblkpos = prvhdro; >- break; >- case 'F': >- /* For OMA fixed block files, calculate the previous block >- offset allowing for a possible short final block */ >- pos = (pos + omadesc->blklen - 1) / omadesc->blklen; >- dev->prvblkpos = (pos > 0 ? (pos - 1) * omadesc->blklen : -1); >- break; >- case 'T': >- /* For OMA ASCII text files, the previous block is unknown */ >- dev->prvblkpos = -1; >- break; >- } /* end switch(omadesc->format) */ >- >- /* Return normal status */ >- return 0; >- >-} /* end function bsf_omatape */ >- >-/*-------------------------------------------------------------------*/ >-/* Backspace to previous block of OMA file */ >-/* */ >-/* If successful, return value is +1. */ >-/* If current position is at start of a file, then a backspace file */ >-/* operation is performed to reset the position to the end of the */ >-/* previous file, and the return value is zero. */ >-/* If error, return value is -1 and unitstat is set to CE+DE+UC */ >-/* */ >-/* Note that for ASCII text files, the previous block position is */ >-/* known only if the previous CCW was a read or a write, so any */ >-/* attempt to issue more than one consecutive backspace block on */ >-/* an ASCII text file will fail with unit check status. */ >-/*-------------------------------------------------------------------*/ >-static int bsb_omatape (DEVBLK *dev, BYTE *unitstat,BYTE code) >-{ >-int rc; /* Return code */ >-OMATAPE_DESC *omadesc; /* -> OMA descriptor entry */ >-long blkpos; /* Offset of block header */ >-S32 curblkl; /* Length of current block */ >-S32 prvhdro; /* Offset of previous header */ >-S32 nxthdro; /* Offset of next header */ >- >- /* Point to the current file entry in the OMA descriptor table */ >- omadesc = (OMATAPE_DESC*)(dev->omadesc); >- omadesc += (dev->curfilen-1); >- >- /* Backspace file if current position is at start of file */ >- if (!dev->nxtblkpos) >+ else > { >- /* Unit check if already at start of tape */ >- if (dev->curfilen <= 1) >- { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >- return -1; >- } >- >- /* Perform backspace file operation */ >- rc = bsf_omatape (dev, unitstat,code); >- if (rc < 0) return -1; >+ // NO TAPE is loaded yet... > >- dev->blockid--; >+ // mount request and 1st byte of msg1 non-blank, *OR*, >+ // unmountmount request and 1st byte of msg2 non-blank? > >- /* Return zero to indicate tapemark detected */ >- return 0; >+ if ( >+ (1 >+ && TAPEDISPTYP_MOUNT == dev->tapedisptype >+ && ' ' != *(tapemsg = dev->tapemsg1) >+ ) >+ || >+ (1 >+ && TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype >+ && ' ' != *(tapemsg = dev->tapemsg2) >+ )) >+ mountreq = TRUE; > } > >- /* Unit check if previous block position is unknown */ >- if (dev->prvblkpos < 0) >- { >- build_senseX(TAPE_BSENSE_LOADPTERR,dev,unitstat,code); >- return -1; >- } >+ /* Extract volser from message */ >+ strncpy( volser, tapemsg+1, 6 ); volser[6]=0; > >- /* Backspace to previous block position */ >- blkpos = dev->prvblkpos; >+ /* Set some boolean flags */ >+ autoload = ( dev->tapedispflags & TAPEDISPFLG_AUTOLOADER ) ? TRUE : FALSE; >+ stdlbled = ( 'S' == tapemsg[7] ) ? TRUE : FALSE; >+ ascii = ( 'A' == tapemsg[7] ) ? TRUE : FALSE; >+ scratch = ( 'S' == tapemsg[0] ) ? TRUE : FALSE; > >- /* Determine new previous block position */ >- switch (omadesc->format) >- { >- case 'H': >- /* For OMA headers files, read the previous block header to >- extract the block length and new previous block offset */ >- rc = readhdr_omaheaders (dev, omadesc, blkpos, &curblkl, >- &prvhdro, &nxthdro, unitstat,code); >- if (rc < 0) return -1; >- break; >- case 'F': >- /* For OMA fixed block files, calculate the new previous >- block offset by subtracting the fixed block length */ >- if (blkpos >= omadesc->blklen) >- prvhdro = blkpos - omadesc->blklen; >- else >- prvhdro = -1; >- break; >- case 'T': >- /* For OMA ASCII text files, new previous block is unknown */ >- prvhdro = -1; >- break; >- } /* end switch(omadesc->format) */ >+ lbltype = stdlbled ? "SL" : "UL"; > >- /* Update the offsets of the next and previous blocks */ >- dev->nxtblkpos = blkpos; >- dev->prvblkpos = prvhdro; >+#if defined(OPTION_SCSI_TAPE) >+#if 1 >+ // **************************************************************** >+ // ZZ FIXME: ZZ TODO: *** Programming Note *** > >- dev->blockid--; >+ // Since we currently don't have any way of activating a SCSI tape >+ // drive's REAL autoloader mechanism whenever we receive an auto- >+ // mount message [from the guest o/s via the Load Display CCW], we >+ // issue a normal operator mount request message instead (in order >+ // to ask the [Hercules] operator (a real human being) to please >+ // perform the automount for us instead since we can't [currently] >+ // do it for them automatically since we don't currently have any >+ // way to send the real request on to the real SCSI device). > >- /* Return +1 to indicate backspace successful */ >- return +1; >+ // Once ASPI code eventually gets added to Herc (and/or something >+ // similar for the Linux world), then the following workaround can >+ // be safely removed. > >-} /* end function bsb_omatape */ >+ autoload = FALSE; // (temporarily forced; see above) > >+ // **************************************************************** >+#endif >+#endif /* defined(OPTION_SCSI_TAPE) */ > >-/*-------------------------------------------------------------------*/ >-/* Close an OMA tape file set */ >-/* */ >-/* All errors are ignored */ >-/*-------------------------------------------------------------------*/ >-static void close_omatape2(DEVBLK *dev) >-{ >- if (dev->fd >= 0) >- close (dev->fd); >- dev->fd=-1; >- if (dev->omadesc) >+ if ( autoload ) > { >- free (dev->omadesc); >- dev->omadesc = NULL; >- } >+ // ZZ TODO: Here is where we'd issue i/o (ASPI?) to the actual >+ // hardware autoloader facility (i.e. the SCSI medium changer) >+ // to unload and/or load the tape(s) if this were a SCSI auto- >+ // loading tape drive. > >- /* Reset the device dependent fields */ >- dev->nxtblkpos=0; >- dev->prvblkpos=-1; >- dev->curfilen=1; >- dev->blockid=0; >- dev->poserror = 0; >- dev->omafiles = 0; >- return; >-} >-/*-------------------------------------------------------------------*/ >-/* Close an OMA tape file set */ >-/* */ >-/* All errors are ignored */ >-/* Change the filename to '*' - unloaded */ >-/* TAPE REALLY UNLOADED */ >-/*-------------------------------------------------------------------*/ >-static void close_omatape(DEVBLK *dev) >-{ >- close_omatape2(dev); >- strcpy(dev->filename,TAPE_UNLOADED); >- dev->blockid = 0; >- dev->poserror = 0; >- return; >-} >-/*-------------------------------------------------------------------*/ >-/* Rewind an OMA tape file set */ >-/* */ >-/* All errors are ignored */ >-/*-------------------------------------------------------------------*/ >-static int rewind_omatape(DEVBLK *dev,BYTE *unitstat,BYTE code) >-{ >- UNREFERENCED(unitstat); >- UNREFERENCED(code); >- close_omatape2(dev); >- return 0; >-} >-/*-------------------------------------------------------------------*/ >-/* Get 3480/3490/3590 Display text in 'human' form */ >-/* If not a 3480/3490/3590, then just update status if a SCSI tape */ >-/*-------------------------------------------------------------------*/ >-static void GetDisplayMsg( DEVBLK *dev, char *msgbfr, size_t lenbfr ) >-{ >- msgbfr[0]=0; >- >- if ( !dev->tdparms.displayfeat ) >- { >- // (drive doesn't have a display) >-#if defined(OPTION_SCSI_TAPE) >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- update_status_scsitape( dev, 1 ); >-#endif >- return; >- } >- >- if ( !IS_TAPEDISPTYP_SYSMSG( dev ) ) >- { >- // ------------------------- >- // Display Host message >- // ------------------------- >- >- // "When bit 3 (alternate) is set to 1, then >- // bits 4 (blink) and 5 (low/high) are ignored." >- >- strlcpy( msgbfr, "\"", lenbfr ); >- >- if ( dev->tapedispflags & TAPEDISPFLG_ALTERNATE ) >- { >- char msg1[9]; >- char msg2[9]; >- >- strlcpy ( msg1, dev->tapemsg1, sizeof(msg1) ); >- strlcat ( msg1, " ", sizeof(msg1) ); >- strlcpy ( msg2, dev->tapemsg2, sizeof(msg2) ); >- strlcat ( msg2, " ", sizeof(msg2) ); >- >- strlcat ( msgbfr, msg1, lenbfr ); >- strlcat ( msgbfr, "\" / \"", lenbfr ); >- strlcat ( msgbfr, msg2, lenbfr ); >- strlcat ( msgbfr, "\"", lenbfr ); >- strlcat ( msgbfr, " (alternating)", lenbfr ); >- } >- else >+ if ( unmountreq ) > { >- if ( dev->tapedispflags & TAPEDISPFLG_MESSAGE2 ) >- strlcat( msgbfr, dev->tapemsg2, lenbfr ); >+ if ( scratch ) >+ logmsg(_("AutoMount: %s%s scratch tape being auto-unloaded on %4.4X = %s\n"), >+ ascii ? "ASCII " : "",lbltype, >+ dev->devnum, dev->filename); > else >- strlcat( msgbfr, dev->tapemsg1, lenbfr ); >- >- strlcat ( msgbfr, "\"", lenbfr ); >- >- if ( dev->tapedispflags & TAPEDISPFLG_BLINKING ) >- strlcat ( msgbfr, " (blinking)", lenbfr ); >- } >- >- if ( dev->tapedispflags & TAPEDISPFLG_AUTOLOADER ) >- strlcat( msgbfr, " (AUTOLOADER)", lenbfr ); >- >- return; >- } >- >- // ---------------------------------------------- >- // Display SYS message (Unit/Device message) >- // ---------------------------------------------- >- >- // First, build the system message, then move it into >- // the caller's buffer... >- >- strlcpy( dev->tapesysmsg, "\"", sizeof(dev->tapesysmsg) ); >- >- switch ( dev->tapedisptype ) >- { >- case TAPEDISPTYP_IDLE: >- case TAPEDISPTYP_WAITACT: >- default: >- // Blank display if no tape loaded... >- if ( !dev->tmh->tapeloaded( dev, NULL, 0 ) ) >- { >- strlcat( dev->tapesysmsg, " ", sizeof(dev->tapesysmsg) ); >- break; >- } >- >- // " NT RDY " if tape IS loaded, but not ready... >- // (IBM docs say " NT RDY " means "Loaded but not ready") >- >- ASSERT( dev->tmh->tapeloaded( dev, NULL, 0 ) ); >- >- if (0 >- || dev->fd < 0 >-#if defined(OPTION_SCSI_TAPE) >- || (1 >- && TAPEDEVT_SCSITAPE == dev->tapedevt >- && !STS_ONLINE( dev ) >- ) >-#endif >- ) >- { >- strlcat( dev->tapesysmsg, " NT RDY ", sizeof(dev->tapesysmsg) ); >- break; >+ logmsg(_("AutoMount: %s%s tape volume \"%s\" being auto-unloaded on %4.4X = %s\n"), >+ ascii ? "ASCII " : "",lbltype, >+ volser, dev->devnum, dev->filename); > } >- >- // Otherwise tape is loaded and ready --> "READY" >- >- ASSERT( dev->tmh->tapeloaded( dev, NULL, 0 ) ); >- >- strlcat ( dev->tapesysmsg, " READY ", sizeof(dev->tapesysmsg) ); >- strlcat( dev->tapesysmsg, "\"", sizeof(dev->tapesysmsg) ); >- >- if (0 >- || dev->readonly >-#if defined(OPTION_SCSI_TAPE) >- || (1 >- && TAPEDEVT_SCSITAPE == dev->tapedevt >- && STS_WR_PROT( dev ) >- ) >-#endif >- ) >- // (append "file protect" indicator) >- strlcat ( dev->tapesysmsg, " *FP*", sizeof(dev->tapesysmsg) ); >- >- // Copy system message to caller's buffer >- strlcpy( msgbfr, dev->tapesysmsg, lenbfr ); >- return; >- >- case TAPEDISPTYP_ERASING: >- strlcat ( dev->tapesysmsg, " ERASING", sizeof(dev->tapesysmsg) ); >- break; >- >- case TAPEDISPTYP_REWINDING: >- strlcat ( dev->tapesysmsg, "REWINDNG", sizeof(dev->tapesysmsg) ); >- break; >- >- case TAPEDISPTYP_UNLOADING: >- strlcat ( dev->tapesysmsg, "UNLOADNG", sizeof(dev->tapesysmsg) ); >- break; >- >- case TAPEDISPTYP_CLEAN: >- strlcat ( dev->tapesysmsg, "*CLEAN ", sizeof(dev->tapesysmsg) ); >- break; >- } >- >- strlcat( dev->tapesysmsg, "\"", sizeof(dev->tapesysmsg) ); >- >- // Copy system message to caller's buffer >- strlcpy( msgbfr, dev->tapesysmsg, lenbfr ); >-} >-/*-------------------------------------------------------------------*/ >-/* Issue a message on the console indicating the display status */ >-/*-------------------------------------------------------------------*/ >-static void UpdateDisplay( DEVBLK *dev ) >-{ >- if ( dev->tdparms.displayfeat ) >- { >- char msgbfr[256]; >- >- GetDisplayMsg( dev, msgbfr, sizeof(msgbfr) ); >- >- if ( dev->prev_tapemsg ) >- { >- if ( strcmp( msgbfr, dev->prev_tapemsg ) == 0 ) >- return; >- free( dev->prev_tapemsg ); >- dev->prev_tapemsg = NULL; >- } >- >- dev->prev_tapemsg = strdup( msgbfr ); >- >- logmsg(_("HHCTA100I %4.4X: Now Displays: %s\n"), >- dev->devnum, msgbfr ); >- } >-#if defined(OPTION_SCSI_TAPE) >- else >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- update_status_scsitape( dev, 1 ); >-#endif >-} >-/*-------------------------------------------------------------------*/ >-/* Issue Automatic Mount Requests as defined by the display */ >-/*-------------------------------------------------------------------*/ >-static void ReqAutoMount( DEVBLK *dev ) >-{ >- char volser[7]; >- BYTE tapeloaded, autoload, mountreq, unmountreq, stdlbled, ascii, scratch; >- char* lbltype; >- char* tapemsg = ""; >- char* eyecatcher = >-"*******************************************************************************"; >- >- /////////////////////////////////////////////////////////////////// >- >- // The Automatic Cartridge Loader or "ACL" (sometimes also referred >- // to as an "Automatic Cartridge Feeder" (ACF) too) automatically >- // loads the next cartridge [from the magazine] whenever a tape is >- // unloaded, BUT ONLY IF the 'Index Automatic Load' bit (bit 7) of >- // the FCB (Format Control Byte, byte 0) was on whenever the Load >- // Display ccw was sent to the drive. If the bit was not on when >- // the Load Display ccw was issued, then the requested message (if >- // any) is displayed until the next tape mount/dismount and the ACL >- // is NOT activated (i.e. the next tape is NOT automatically loaded). >- // If the bit was on however, then, as stated, the ACF component of >- // the drive will automatically load the next [specified] cartridge. >- >- // Whenever the ACL facility is activated (via bit 7 of byte 0 of >- // the Load Display ccw), then only bytes 1-8 of the "Display Until >- // Mounted" message (or bytes 9-17 of a "Display Until Dismounted >- // Then Mounted" message) are displayed to let the operator know >- // which tape is currently being processed by the autoloader and >- // thus is basically for informational purposes only (the operator >- // does NOT need to do anything since the auto-loader is handling >- // tape mounts for them automatically; i.e. the message is NOT an >- // operator mount/dismount request). >- >- // If the 'Index Automatic Load' bit was not set in the Load Display >- // CCW however, then the specified "Display Until Mounted", "Display >- // Until Unmounted" or "Display Until Unmounted Then Display Until >- // Mounted" message is meant as a mount, unmount, or unmount-then- >- // mount request for the actual [human being] operator, and thus >- // they DO need to take some sort of action (since the ACL automatic >- // loader facility is not active; i.e. the message is a request to >- // the operator to manually unload, load or unload then load a tape). >- >- // THUS... If the TAPEDISPFLG_AUTOLOADER flag is set (indicating >- // the autoloader is (or should be) active), then the message we >- // issue is simply for INFORMATIONAL purposes only (i.e. "FYI: the >- // following tape is being *automatically* loaded; you don't need >- // to actually do anything") >- >- // If the TAPEDISPFLG_AUTOLOADER is flag is NOT set however, then >- // we need to issue a message notifying the operator of what they >- // are *expected* to do (e.g. either unload, load or unload/load >- // the specified tape volume). >- >- // Also please note that while there are no formally established >- // standards regarding the format of the Load Display CCW message >- // text, there are however certain established conventions (estab- >- // lished by IBM naturally). If the first character is an 'M', it >- // means "Please MOUNT the indicated volume". An 'R' [apparently] >- // means "Retain", and, similarly, 'K' means "Keep" (same thing as >- // "Retain"). If the LAST character is an 'S', then it means that >- // a Standard Labeled volume is being requested, whereas an 'N' >- // (or really, anything OTHER than an 'S' (except 'A')) means an >- // unlabeled (or non-labeled) tape volume is being requested. An >- // 'A' as the last character means a Standard Labeled ASCII tape >- // is being requested. If the message is "SCRTCH" (or something >- // similar), then a either a standard labeled or unlabeled scratch >- // tape is obviously being requested (there doesn't seem to be any >- // convention/consensus regarding the format for requesting scratch >- // tapes; some shops for example use 'XXXSCR' to indicate that a >- // scratch tape from tape pool 'XXX' should be mounted). >- >- /////////////////////////////////////////////////////////////////// >- >- /* Open the file/drive if needed (kick off auto-mount if needed) */ >- if (dev->fd < 0) >- { >- BYTE unitstat = 0, code = 0; >- dev->tmh->open( dev, &unitstat, code ); >- // PROGRAMMING NOTE: it's important to do TWO refreshes here >- // to cause the auto-mount thread to get created. Doing only >- // one doesn't work and doing two shouldn't cause any harm. >- dev->tmh->passedeot( dev ); // (refresh potential stale status) >- dev->tmh->passedeot( dev ); // (force auto-mount thread creation) >- } >- >- /* Disabled when [non-SCSI] ACL in use */ >- if ( dev->als ) >- return; >- >- /* Do we actually have any work to do? */ >- if ( !( dev->tapedispflags & TAPEDISPFLG_REQAUTOMNT ) ) >- return; // (nothing to do!) >- >- /* Reset work flag */ >- dev->tapedispflags &= ~TAPEDISPFLG_REQAUTOMNT; >- >- /* If the drive doesn't have a display, >- then it can't have an auto-loader either */ >- if ( !dev->tdparms.displayfeat ) >- return; >- >- /* Determine if mount or unmount request >- and get pointer to correct message */ >- >- tapeloaded = dev->tmh->tapeloaded( dev, NULL, 0 ) ? TRUE : FALSE; >- >- mountreq = FALSE; // (default) >- unmountreq = FALSE; // (default) >- >- if (tapeloaded) >- { >- // A tape IS already loaded... >- >- // 1st byte of message1 non-blank, *AND*, >- // unmount request or, >- // unmountmount request and not message2-only flag? >- >- if (' ' != *(tapemsg = dev->tapemsg1) && >- (0 >- || TAPEDISPTYP_UNMOUNT == dev->tapedisptype >- || (1 >- && TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype >- && !(dev->tapedispflags & TAPEDISPFLG_MESSAGE2) >- ) >- ) >- ) >- unmountreq = TRUE; >- } >- else >- { >- // NO TAPE is loaded yet... >- >- // mount request and 1st byte of msg1 non-blank, *OR*, >- // unmountmount request and 1st byte of msg2 non-blank? >- >- if ( >- (1 >- && TAPEDISPTYP_MOUNT == dev->tapedisptype >- && ' ' != *(tapemsg = dev->tapemsg1) >- ) >- || >- (1 >- && TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype >- && ' ' != *(tapemsg = dev->tapemsg2) >- )) >- mountreq = TRUE; >- } >- >- /* Extract volser from message */ >- strncpy( volser, tapemsg+1, 6 ); volser[6]=0; >- >- /* Set some boolean flags */ >- autoload = ( dev->tapedispflags & TAPEDISPFLG_AUTOLOADER ) ? TRUE : FALSE; >- stdlbled = ( 'S' == tapemsg[7] ) ? TRUE : FALSE; >- ascii = ( 'A' == tapemsg[7] ) ? TRUE : FALSE; >- scratch = ( 'S' == tapemsg[0] ) ? TRUE : FALSE; >- >- lbltype = stdlbled ? "SL" : "UL"; >- >-#if defined(OPTION_SCSI_TAPE) >-#if 1 >- // **************************************************************** >- // ZZ FIXME: ZZ TODO: *** Programming Note *** >- >- // Since we currently don't have any way of activating a SCSI tape >- // drive's REAL autoloader mechanism whenever we receive an auto- >- // mount message [from the guest o/s via the Load Display CCW], we >- // issue a normal operator mount request message instead (in order >- // to ask the [Hercules] operator (a real human being) to please >- // perform the automount for us instead since we can't [currently] >- // do it for them automatically since we don't currently have any >- // way to send the real request on to the real SCSI device). >- >- // Once ASPI code eventually gets added to Herc (and/or something >- // similar for the Linux world), then the following workaround can >- // be safely removed. >- >- autoload = FALSE; // (temporarily forced; see above) >- >- // **************************************************************** >-#endif >-#endif /* defined(OPTION_SCSI_TAPE) */ >- >- if ( autoload ) >- { >- // ZZ TODO: Here is where we'd issue i/o (ASPI?) to the actual >- // hardware autoloader facility (i.e. the SCSI medium changer) >- // to unload and/or load the tape(s) if this were a SCSI auto- >- // loading tape drive. >- >- if ( unmountreq ) >- { >- if ( scratch ) >- logmsg(_("AutoMount: %s%s scratch tape being auto-unloaded on %4.4X = %s\n"), >- ascii ? "ASCII " : "",lbltype, >- dev->devnum, dev->filename); >- else >- logmsg(_("AutoMount: %s%s tape volume \"%s\" being auto-unloaded on %4.4X = %s\n"), >- ascii ? "ASCII " : "",lbltype, >- volser, dev->devnum, dev->filename); >- } >- if ( mountreq ) >+ if ( mountreq ) > { > if ( scratch ) > logmsg(_("AutoMount: %s%s scratch tape being auto-loaded on %4.4X = %s\n"), >@@ -3129,2528 +1957,174 @@ static void ReqAutoMount( DEVBLK *dev ) > dev->devnum, dev->filename); > else > logmsg(_("AutoMount: %s%s tape volume \"%s\" being auto-loaded on %4.4X = %s\n"), >- ascii ? "ASCII " : "",lbltype, >- volser, dev->devnum, dev->filename); >- } >- } >- else >- { >- // If this is a mount or unmount request, inform the >- // [Hercules] operator of the action they're expected to take... >- >- if ( unmountreq ) >- { >- char* keep_or_retain = ""; >- >- if ( 'K' == tapemsg[0] ) keep_or_retain = "and keep "; >- if ( 'R' == tapemsg[0] ) keep_or_retain = "and retain "; >- >- if ( scratch ) >- { >- logmsg(_("\n%s\nAUTOMOUNT: Unmount %sof %s%s scratch tape requested on %4.4X = %s\n%s\n\n"), >- eyecatcher, >- keep_or_retain, >- ascii ? "ASCII " : "",lbltype, >- dev->devnum, dev->filename, >- eyecatcher ); >- } >- else >- { >- logmsg(_("\n%s\nAUTOMOUNT: Unmount %sof %s%s tape volume \"%s\" requested on %4.4X = %s\n%s\n\n"), >- eyecatcher, >- keep_or_retain, >- ascii ? "ASCII " : "",lbltype, >- volser, >- dev->devnum, dev->filename, >- eyecatcher ); >- } >- } >- if ( mountreq ) >- { >- if ( scratch ) >- logmsg(_("\n%s\nAUTOMOUNT: Mount for %s%s scratch tape requested on %4.4X = %s\n%s\n\n"), >- eyecatcher, >- ascii ? "ASCII " : "",lbltype, >- dev->devnum, dev->filename, >- eyecatcher ); >- else >- logmsg(_("\n%s\nAUTOMOUNT: Mount for %s%s tape volume \"%s\" requested on %4.4X = %s\n%s\n\n"), >- eyecatcher, >- ascii ? "ASCII " : "",lbltype, >- volser, >- dev->devnum, dev->filename, >- eyecatcher ); >- } >- } >- >-} /* end function ReqAutoMount */ >- >-/*-------------------------------------------------------------------*/ >-/* Load Display channel command processing... */ >-/*-------------------------------------------------------------------*/ >-static void load_display (DEVBLK *dev, BYTE *buf, U16 count) >-{ >-U16 i; /* Array subscript */ >-char msg1[9], msg2[9]; /* Message areas (ASCIIZ) */ >-BYTE fcb; /* Format Control Byte */ >-BYTE tapeloaded; /* (boolean true/false) */ >-BYTE* msg; /* (work buf ptr) */ >- >- if ( !count ) >- return; >- >- /* Pick up format control byte */ >- fcb = *buf; >- >- /* Copy and translate messages... */ >- >- memset( msg1, 0, sizeof(msg1) ); >- memset( msg2, 0, sizeof(msg2) ); >- >- msg = buf+1; >- >- for (i=0; *msg && i < 8 && ((i+1)+0) < count; i++) >- msg1[i] = guest_to_host(*msg++); >- >- msg = buf+1+8; >- >- for (i=0; *msg && i < 8 && ((i+1)+8) < count; i++) >- msg2[i] = guest_to_host(*msg++); >- >- msg1[ sizeof(msg1) - 1 ] = 0; >- msg2[ sizeof(msg2) - 1 ] = 0; >- >- tapeloaded = dev->tmh->tapeloaded( dev, NULL, 0 ); >- >- switch ( fcb & FCB_FS ) // (high-order 3 bits) >- { >- case FCB_FS_READYGO: // 0x00 >- >- /* >- || 000b: "The message specified in bytes 1-8 and 9-16 is >- || maintained until the tape drive next starts tape >- || motion, or until the message is updated." >- */ >- >- dev->tapedispflags = 0; >- >- strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >- strlcpy( dev->tapemsg2, msg2, sizeof(dev->tapemsg2) ); >- >- dev->tapedisptype = TAPEDISPTYP_WAITACT; >- >- break; >- >- case FCB_FS_UNMOUNT: // 0x20 >- >- /* >- || 001b: "The message specified in bytes 1-8 is maintained >- || until the tape cartridge is physically removed from >- || the tape drive, or until the next unload/load cycle. >- || If the drive does not contain a cartridge when the >- || Load Display command is received, the display will >- || contain the message that existed prior to the receipt >- || of the command." >- */ >- >- dev->tapedispflags = 0; >- >- if ( tapeloaded ) >- { >- dev->tapedisptype = TAPEDISPTYP_UNMOUNT; >- dev->tapedispflags = TAPEDISPFLG_REQAUTOMNT; >- >- strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >- >- if ( dev->ccwtrace || dev->ccwstep ) >- logmsg(_("HHCTA099I %4.4X: Tape Display \"%s\" Until Unmounted\n"), >- dev->devnum, dev->tapemsg1 ); >- } >- >- break; >- >- case FCB_FS_MOUNT: // 0x40 >- >- /* >- || 010b: "The message specified in bytes 1-8 is maintained >- || until the drive is next loaded. If the drive is >- || loaded when the Load Display command is received, >- || the display will contain the message that existed >- || prior to the receipt of the command." >- */ >- >- dev->tapedispflags = 0; >- >- if ( !tapeloaded ) >- { >- dev->tapedisptype = TAPEDISPTYP_MOUNT; >- dev->tapedispflags = TAPEDISPFLG_REQAUTOMNT; >- >- strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >- >- if ( dev->ccwtrace || dev->ccwstep ) >- logmsg(_("HHCTA099I %4.4X: Tape Display \"%s\" Until Mounted\n"), >- dev->devnum, dev->tapemsg1 ); >- } >- >- break; >- >- case FCB_FS_NOP: // 0x60 >- default: >- >- /* >- || 011b: "This value is used to physically access a drive >- || without changing the message display. This option >- || can be used to test whether a control unit can >- || physically communicate with a drive." >- */ >- >- return; >- >- case FCB_FS_RESET_DISPLAY: // 0x80 >- >- /* >- || 100b: "The host message being displayed is cancelled and >- || a unit message is displayed instead." >- */ >- >- dev->tapedispflags = 0; >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- >- break; >- >- case FCB_FS_UMOUNTMOUNT: // 0xE0 >- >- /* >- || 111b: "The message in bytes 1-8 is displayed until a tape >- || cartridge is physically removed from the tape drive, >- || or until the drive is next loaded. The message in >- || bytes 9-16 is displayed until the drive is next loaded. >- || If no cartridge is present in the drive, the first >- || message is ignored and only the second message is >- || displayed until the drive is next loaded." >- */ >- >- dev->tapedispflags = 0; >- >- strlcpy( dev->tapemsg1, msg1, sizeof(dev->tapemsg1) ); >- strlcpy( dev->tapemsg2, msg2, sizeof(dev->tapemsg2) ); >- >- if ( tapeloaded ) >- { >- dev->tapedisptype = TAPEDISPTYP_UMOUNTMOUNT; >- dev->tapedispflags = TAPEDISPFLG_REQAUTOMNT; >- >- if ( dev->ccwtrace || dev->ccwstep ) >- logmsg(_("HHCTA099I %4.4X: Tape Display \"%s\" Until Unmounted, then \"%s\" Until Mounted\n"), >- dev->devnum, dev->tapemsg1, dev->tapemsg2 ); >- } >- else >- { >- dev->tapedisptype = TAPEDISPTYP_MOUNT; >- dev->tapedispflags = TAPEDISPFLG_MESSAGE2 | TAPEDISPFLG_REQAUTOMNT; >- >- if ( dev->ccwtrace || dev->ccwstep ) >- logmsg(_("HHCTA099I %4.4X: Tape \"%s\" Until Mounted\n"), >- dev->devnum, dev->tapemsg2 ); >- } >- >- break; >- } >- >- /* Set the flags... */ >- >- /* >- "When bit 7 (FCB_AL) is active and bits 0-2 (FCB_FS) specify >- a Mount Message, then only the first eight characters of the >- message are displayed and bits 3-5 (FCB_AM, FCB_BM, FCB_M2) >- are ignored." >- */ >- if (1 >- && ( fcb & FCB_AL ) >- && ( ( fcb & FCB_FS ) == FCB_FS_MOUNT ) >- ) >- { >- fcb &= ~( FCB_AM | FCB_BM | FCB_M2 ); >- dev->tapedispflags &= ~TAPEDISPFLG_MESSAGE2; >- } >- >- /* >- "When bit 7 (FCB_AL) is active and bits 0-2 (FCB_FS) specify >- a Demount/Mount message, then only the last eight characters >- of the message are displayed. Bits 3-5 (FCB_AM, FCB_BM, FCB_M2) >- are ignored." >- */ >- if (1 >- && ( fcb & FCB_AL ) >- && ( ( fcb & FCB_FS ) == FCB_FS_UMOUNTMOUNT ) >- ) >- { >- fcb &= ~( FCB_AM | FCB_BM | FCB_M2 ); >- dev->tapedispflags |= TAPEDISPFLG_MESSAGE2; >- } >- >- /* >- "When bit 3 (FCB_AM) is set to 1, then bits 4 (FCB_BM) and 5 >- (FCB_M2) are ignored." >- */ >- if ( fcb & FCB_AM ) >- fcb &= ~( FCB_BM | FCB_M2 ); >- >- dev->tapedispflags |= (((fcb & FCB_AM) ? TAPEDISPFLG_ALTERNATE : 0 ) | >- ( (fcb & FCB_BM) ? TAPEDISPFLG_BLINKING : 0 ) | >- ( (fcb & FCB_M2) ? TAPEDISPFLG_MESSAGE2 : 0 ) | >- ( (fcb & FCB_AL) ? TAPEDISPFLG_AUTOLOADER : 0 )); >- >- UpdateDisplay( dev ); >- ReqAutoMount( dev ); >- >-} /* end function load_display */ >- >-/*-------------------------------------------------------------------*/ >-/* ISW: START Of New SENSE handling */ >- >-/* ISW: Extracted from original build_sense routine */ >-int IsAtLoadPoint(DEVBLK *dev) >-{ >-int ldpt=0; >- if ( dev->fd >= 0 ) >- { >- /* Set load point indicator if tape is at load point */ >- switch (dev->tapedevt) >- { >- default: >- case TAPEDEVT_AWSTAPE: >- if (!dev->nxtblkpos) >- { >- ldpt=1; >- } >- break; >- >- case TAPEDEVT_HET: >- if (!dev->hetb->cblk) >- { >- ldpt=1; >- } >- break; >- >-#if defined(OPTION_SCSI_TAPE) >- case TAPEDEVT_SCSITAPE: >- update_status_scsitape( dev, 0 ); >- if ( STS_BOT( dev ) ) >- { >- ldpt=1; >- } >- break; >-#endif /* defined(OPTION_SCSI_TAPE) */ >- >- case TAPEDEVT_OMATAPE: >- if (!dev->nxtblkpos && 1 == dev->curfilen) >- { >- ldpt=1; >- } >- break; >- } /* end switch(dev->tapedevt) */ >- } >- else // ( dev->fd < 0 ) >- { >- if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >- ldpt=0; /* (tape cannot possibly be at loadpoint >- if the device cannot even be opened!) */ >- else if ( strcmp( dev->filename, TAPE_UNLOADED ) != 0 ) >- { >- /* If the tape has a filename but the tape is not yet */ >- /* opened, then we are at loadpoint */ >- ldpt=1; >- } >- } >- return ldpt; >-} >- >-/*-------------------------------------------------------------------*/ >- >-static void build_sense_3480(int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE ccwcode) >-{ >-int sns4mat; >- UNREFERENCED(ccwcode); >- sns4mat=0x20; >- switch(ERCode) >- { >- case TAPE_BSENSE_TAPEUNLOADED: >- switch(ccwcode) >- { >- case 0x01: // write >- case 0x02: // read >- case 0x0C: // read backward >- *unitstat=CSW_CE | CSW_UC; >- break; >- case 0x03: // nop >- *unitstat=CSW_UC; >- break; >- case 0x0f: // rewind unload >- *unitstat=CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >- break; >- default: >- *unitstat=CSW_CE | CSW_UC | CSW_DE; >- break; >- } // end switch(ccwcode) >- dev->sense[0]=SENSE_IR; >- dev->sense[3]=0x43; /* ERA 43 = Int Req */ >- break; >- case TAPE_BSENSE_TAPEUNLOADED2: /* Not an error */ >- *unitstat=CSW_CE|CSW_DE; >- dev->sense[0]=SENSE_IR; >- dev->sense[3]=0x2B; >- sns4mat=0x21; >- break; >- case TAPE_BSENSE_TAPELOADFAIL: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_IR|0x02; >- dev->sense[3]=0x33; /* ERA 33 = Load Failed */ >- break; >- case TAPE_BSENSE_READFAIL: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0x23; >- break; >- case TAPE_BSENSE_WRITEFAIL: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0x25; >- break; >- case TAPE_BSENSE_BADCOMMAND: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_CR; >- dev->sense[3]=0x27; >- break; >- case TAPE_BSENSE_INCOMPAT: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_CR; >- dev->sense[3]=0x29; >- break; >- case TAPE_BSENSE_WRITEPROTECT: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_CR; >- dev->sense[3]=0x30; >- break; >- case TAPE_BSENSE_EMPTYTAPE: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0x31; >- break; >- case TAPE_BSENSE_ENDOFTAPE: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x38; >- break; >- case TAPE_BSENSE_LOADPTERR: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=0; >- dev->sense[3]=0x39; >- break; >- case TAPE_BSENSE_FENCED: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC|0x02; /* Deffered UC */ >- dev->sense[3]=0x47; >- break; >- case TAPE_BSENSE_BADALGORITHM: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- if(0x3490==dev->devtype) >- { >- dev->sense[3]=0x5E; >- } >- else >- { >- dev->sense[3]=0x47; >- } >- break; >- case TAPE_BSENSE_LOCATEERR: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x44; >- break; >- case TAPE_BSENSE_BLOCKSHORT: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x36; >- break; >- case TAPE_BSENSE_ITFERROR: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x22; >- break; >- case TAPE_BSENSE_REWINDFAILED: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x2C; /* Generic Equipment Malfunction ERP code */ >- break; >- case TAPE_BSENSE_READTM: >- *unitstat=CSW_CE|CSW_DE|CSW_UX; >- break; >- case TAPE_BSENSE_UNSOLICITED: >- *unitstat=CSW_CE|CSW_DE; >- dev->sense[3]=0x00; >- break; >- case TAPE_BSENSE_STATUSONLY: >- default: >- *unitstat=CSW_CE|CSW_DE; >- break; >- } // end switch(ERCode) >- /* Fill in the common information */ >- switch(sns4mat) >- { >- default: >- case 0x20: >- case 0x21: >- dev->sense[7]=sns4mat; >- memset(&dev->sense[8],0,31-8); >- break; >- } // end switch(sns4mat) >- if(strcmp(dev->filename,TAPE_UNLOADED)==0 || !dev->tmh->tapeloaded(dev,NULL,0)) >- { >- dev->sense[0]|=SENSE_IR; >- dev->sense[1]|=SENSE1_TAPE_FP; >- } >- else >- { >- dev->sense[0]&=~SENSE_IR; >- dev->sense[1]&=~(SENSE1_TAPE_LOADPT|SENSE1_TAPE_FP); >- dev->sense[1]|=IsAtLoadPoint(dev)?SENSE1_TAPE_LOADPT:0; >- dev->sense[1]|=dev->readonly?SENSE1_TAPE_FP:0; /* FP bit set when tape not ready too */ >- } >- dev->sense[1]|=SENSE1_TAPE_TUA; >-} >- >-/*-------------------------------------------------------------------*/ >-/* Build a sense code for streaming tapes */ >- >-static void build_sense_Streaming(int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE ccwcode) >-{ >- memset(dev->sense,0,sizeof(dev->sense)); >- switch(ERCode) >- { >- case TAPE_BSENSE_TAPEUNLOADED: >- switch(ccwcode) >- { >- case 0x01: // write >- case 0x02: // read >- case 0x0C: // read backward >- *unitstat=CSW_CE | CSW_UC | (dev->tdparms.deonirq?CSW_DE:0); >- break; >- case 0x03: // nop >- *unitstat=CSW_UC; >- break; >- case 0x0f: // rewind unload >- /* >- *unitstat=CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >- */ >- *unitstat=CSW_UC | CSW_DE | CSW_CUE; >- break; >- default: >- *unitstat=CSW_CE | CSW_UC | CSW_DE; >- break; >- } // end switch(ccwcode) >- dev->sense[0]=SENSE_IR; >- dev->sense[3]=6; /* Int Req ERAC */ >- break; >- case TAPE_BSENSE_TAPEUNLOADED2: /* RewUnld op */ >- *unitstat=CSW_UC | CSW_DE | CSW_CUE; >- /* >- *unitstat=CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >- */ >- dev->sense[0]=SENSE_IR; >- dev->sense[3]=6; /* Int Req ERAC */ >- break; >- case TAPE_BSENSE_REWINDFAILED: >- case TAPE_BSENSE_ITFERROR: >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x03; /* Perm Equip Check */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- case TAPE_BSENSE_TAPELOADFAIL: >- case TAPE_BSENSE_LOCATEERR: >- case TAPE_BSENSE_ENDOFTAPE: >- case TAPE_BSENSE_EMPTYTAPE: >- case TAPE_BSENSE_FENCED: >- case TAPE_BSENSE_BLOCKSHORT: >- case TAPE_BSENSE_INCOMPAT: >- dev->sense[0]=SENSE_EC; >- dev->sense[3]=0x10; /* PE-ID Burst Check */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- >- case TAPE_BSENSE_BADALGORITHM: >- case TAPE_BSENSE_READFAIL: >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0x09; /* Read Data Check */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- case TAPE_BSENSE_WRITEFAIL: >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0x07; /* Write Data Check (Media Error) */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- case TAPE_BSENSE_BADCOMMAND: >- dev->sense[0]=SENSE_CR; >- dev->sense[3]=0x0C; /* Bad Command */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- case TAPE_BSENSE_WRITEPROTECT: >- dev->sense[0]=SENSE_CR; >- dev->sense[3]=0x0B; /* File Protect */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- case TAPE_BSENSE_LOADPTERR: >- dev->sense[0]=SENSE_CR; >- dev->sense[3]=0x0D; /* Backspace at Load Point */ >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- break; >- case TAPE_BSENSE_READTM: >- *unitstat=CSW_CE|CSW_DE|CSW_UX; >- break; >- case TAPE_BSENSE_UNSOLICITED: >- *unitstat=CSW_CE|CSW_DE; >- break; >- case TAPE_BSENSE_STATUSONLY: >- *unitstat=CSW_CE|CSW_DE; >- break; >- } // end switch(ERCode) >- if(strcmp(dev->filename,TAPE_UNLOADED)==0 || !dev->tmh->tapeloaded(dev,NULL,0)) >- { >- dev->sense[0]|=SENSE_IR; >- dev->sense[1]|=SENSE1_TAPE_FP; >- dev->sense[1]&=~SENSE1_TAPE_TUA; >- dev->sense[1]|=SENSE1_TAPE_TUB; >- } >- else >- { >- dev->sense[0]&=~SENSE_IR; >- dev->sense[1]|=IsAtLoadPoint(dev)?SENSE1_TAPE_LOADPT:0; >- dev->sense[1]|=dev->readonly?SENSE1_TAPE_FP:0; /* FP bit set when tape not ready too */ >- dev->sense[1]|=SENSE1_TAPE_TUA; >- dev->sense[1]&=~SENSE1_TAPE_TUB; >- } >- if(dev->tmh->passedeot(dev)) >- { >- dev->sense[4]|=0x40; >- } >-} >- >-/*-------------------------------------------------------------------*/ >-/* Common routine for 3410/3420 magtape devices */ >- >-static void build_sense_3410_3420(int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE ccwcode) >-{ >- memset(dev->sense,0,sizeof(dev->sense)); >- switch(ERCode) >- { >- case TAPE_BSENSE_TAPEUNLOADED: >- switch(ccwcode) >- { >- case 0x01: // write >- case 0x02: // read >- case 0x0C: // read backward >- *unitstat=CSW_CE | CSW_UC | (dev->tdparms.deonirq?CSW_DE:0); >- break; >- case 0x03: // nop >- *unitstat=CSW_UC; >- break; >- case 0x0f: // rewind unload >- /* >- *unitstat=CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >- */ >- *unitstat=CSW_UC | CSW_DE | CSW_CUE; >- break; >- default: >- *unitstat=CSW_CE | CSW_UC | CSW_DE; >- break; >- } // end switch(ccwcode) >- dev->sense[0]=SENSE_IR; >- dev->sense[1]=SENSE1_TAPE_TUB; >- break; >- case TAPE_BSENSE_TAPEUNLOADED2: /* RewUnld op */ >- *unitstat=CSW_UC | CSW_DE | CSW_CUE; >- /* >- *unitstat=CSW_CE | CSW_UC | CSW_DE | CSW_CUE; >- */ >- dev->sense[0]=SENSE_IR; >- dev->sense[1]=SENSE1_TAPE_TUB; >- break; >- case TAPE_BSENSE_REWINDFAILED: >- case TAPE_BSENSE_FENCED: >- case TAPE_BSENSE_EMPTYTAPE: >- case TAPE_BSENSE_ENDOFTAPE: >- case TAPE_BSENSE_BLOCKSHORT: >- /* On 3411/3420 the tape runs off the reel in that case */ >- /* this will cause pressure loss in both columns */ >- case TAPE_BSENSE_LOCATEERR: >- /* Locate error: This is more like improperly formatted tape */ >- /* i.e. the tape broke inside the drive */ >- /* So EC instead of DC */ >- case TAPE_BSENSE_TAPELOADFAIL: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[1]=SENSE1_TAPE_TUB; >- dev->sense[7]=0x60; >- break; >- case TAPE_BSENSE_ITFERROR: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- dev->sense[1]=SENSE1_TAPE_TUB; >- dev->sense[4]=0x80; /* Tape Unit Reject */ >- break; >- case TAPE_BSENSE_READFAIL: >- case TAPE_BSENSE_BADALGORITHM: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0xC0; /* Vertical CRC check & Multitrack error */ >- break; >- case TAPE_BSENSE_WRITEFAIL: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_DC; >- dev->sense[3]=0x60; /* Longitudinal CRC check & Multitrack error */ >- break; >- case TAPE_BSENSE_BADCOMMAND: >- case TAPE_BSENSE_INCOMPAT: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_CR; >- dev->sense[4]=0x01; >- break; >- case TAPE_BSENSE_WRITEPROTECT: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_CR; >- break; >- case TAPE_BSENSE_LOADPTERR: >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=0; >- break; >- case TAPE_BSENSE_READTM: >- *unitstat=CSW_CE|CSW_DE|CSW_UX; >- break; >- case TAPE_BSENSE_UNSOLICITED: >- *unitstat=CSW_CE|CSW_DE; >- break; >- case TAPE_BSENSE_STATUSONLY: >- *unitstat=CSW_CE|CSW_DE; >- break; >- } // end switch(ERCode) >- if(strcmp(dev->filename,TAPE_UNLOADED)==0 || !dev->tmh->tapeloaded(dev,NULL,0)) >- { >- dev->sense[0]|=SENSE_IR; >- dev->sense[1]|=SENSE1_TAPE_FP; >- } >- else >- { >- dev->sense[0]&=~SENSE_IR; >- dev->sense[1]|=IsAtLoadPoint(dev)?SENSE1_TAPE_LOADPT:0; >- dev->sense[1]|=dev->readonly?SENSE1_TAPE_FP:0; /* FP bit set when tape not ready too */ >- } >- if(dev->tmh->passedeot(dev)) >- { >- dev->sense[4]|=0x40; >- } >-} >- >-/*-------------------------------------------------------------------*/ >- >-static void build_sense_3410(int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE ccwcode) >-{ >- build_sense_3410_3420(ERCode,dev,unitstat,ccwcode); >- dev->sense[5]&=0x80; >- dev->sense[5]|=0x40; >- dev->sense[6]=0x22; /* Dual Dens - 3410/3411 Model 2 */ >- dev->numsense=9; >-} >- >-/*-------------------------------------------------------------------*/ >- >-static void build_sense_3420(int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE ccwcode) >-{ >- build_sense_3410_3420(ERCode,dev,unitstat,ccwcode); >- /* Following stripped from original 'build_sense' */ >- dev->sense[5] |= 0xC0; >- dev->sense[6] |= 0x03; >- dev->sense[13] = 0x80; >- dev->sense[14] = 0x01; >- dev->sense[15] = 0x00; >- dev->sense[16] = 0x01; >- dev->sense[19] = 0xFF; >- dev->sense[20] = 0xFF; >- dev->numsense=24; >-} >-/*-------------------------------------------------------------------*/ >-/* Construct sense bytes and unit status */ >-/* note name changed because semantic changed */ >-/* ERCode is the internal Error Recovery code */ >-/*-------------------------------------------------------------------*/ >-void build_senseX (int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE code) >-{ >-int i; >-BYTE usr; >-int sense_built; >- sense_built=0; >- if(!unitstat) >- { >- unitstat=&usr; >- } >- for(i=0;TapeDevtypeList[i]!=0;i+=TAPEDEVTYPELISTENTRYSIZE) >- { >- if(TapeDevtypeList[i]==dev->devtype) >- { >- TapeSenseTable[TapeDevtypeList[i+4]](ERCode,dev,unitstat,code); >- sense_built=1; >- /* Set FP & LOADPOINT bit */ >- if(dev->tmh->passedeot(dev)) >- { >- if (TAPE_BSENSE_STATUSONLY==ERCode && >- ( code==0x01 || // write >- code==0x17 || // erase gap >- code==0x1F // write tapemark >- ) >- ) >- { >- *unitstat|=CSW_UX; >- } >- } >- break; >- } >- } >- if(!sense_built) >- { >- *unitstat=CSW_CE|CSW_DE|CSW_UC; >- dev->sense[0]=SENSE_EC; >- } >- if(*unitstat & CSW_UC) >- { >- dev->sns_pending=1; >- } >- return; >-} /* end function build_sense */ >- >-/*-------------------------------------------------------------------*/ >-/* Tape format determination REGEXPS */ >- >-struct tape_format_entry { >- char *fmtreg; /* A regular expression */ >- int fmtcode; /* the device code */ >- TAPEMEDIA_HANDLER *tmh; /* The media dispatcher */ >- char *descr; /* readable description */ >- char *short_descr; /* (same but shorter) */ >-}; >-static struct tape_format_entry fmttab[]={ >- /* This entry matches a filename ending with .tdf */ >- {"\\.tdf$", TAPEDEVT_OMATAPE, &tmh_oma, "Optical Media Attachment (OMA) tape", "OMA tape" }, >-#if defined(OPTION_SCSI_TAPE) >- /* This entry matches a filename starting with /dev/ */ >- {"^/dev/", TAPEDEVT_SCSITAPE, &tmh_scsi, "SCSI attached tape drive", "SCSI tape" }, >-#if defined(_MSVC_) >- {"^\\\\\\\\\\.\\\\Tape[0-9]", TAPEDEVT_SCSITAPE, &tmh_scsi, "SCSI attached tape drive", "SCSI tape" }, >-#endif // _MSVC_ >-#endif >- /* This entry matches a filename ending with .het */ >- {"\\.het$", TAPEDEVT_HET, &tmh_het, "Hercules Emulated Tape file", "HET tape" }, >- /* This entry matches any other entry */ >- {NULL, TAPEDEVT_AWSTAPE, &tmh_aws, "AWS Format tape file", "AWS tape" } /* Anything goes */ >-}; >- >-/*-------------------------------------------------------------------*/ >-/* mountnewtape: mount a tape in the drive */ >-/* Syntax: */ >-/* filename [parms] */ >-/* where parms are: */ >-/* awstape: */ >-/* set the HET parms */ >-/* be compatible with the*/ >-/* R|P/390|IS tape file */ >-/* Format (HET files) */ >-/* idrc|compress = 0|1: */ >-/* Write tape blocks */ >-/* with compression */ >-/* (std deviation: Read backwrd */ >-/* allowed on compressed HET */ >-/* tapes while it is not on IDRC */ >-/* formated 3480 tapes) */ >-/* --no-erg: for SCSI tape only, means to */ >-/* ignore Erase Gap i/o's and to */ >-/* return 'success' instead. */ >-/* --blkid-32: for SCSI tape only, means */ >-/* the hardware only supports */ >-/* full 32-bit block-ids. */ >-static int mountnewtape(DEVBLK *dev,int argc,char **argv) >-{ >-#if defined(HAVE_REGEX_H) || defined(HAVE_PCRE) >-regex_t regwrk; /* REGEXP work area */ >-regmatch_t regwrk2; /* REGEXP match area */ >-char errbfr[1024]; /* Working storage */ >-#endif // HAVE_REGEX_H >-char* descr; /* Device descr from fmttab */ >-char* short_descr; /* Short descr from fmttab */ >-int i; /* Loop control */ >-int rc; /* various rtns return codes */ >-union >-{ >- U32 num; >- BYTE str[ 80 ]; >-} res; /* Parser results */ >- /* Release the previous OMA descriptor array if allocated */ >- if (dev->omadesc) >- { >- free (dev->omadesc); >- dev->omadesc = NULL; >- } >- >- /* The first argument is the file name */ >- if (!argc || strlen(argv[0]) > sizeof(dev->filename)-1) >- strcpy (dev->filename, TAPE_UNLOADED); >- else >- /* Save the file name in the device block */ >- strcpy (dev->filename, argv[0]); >- >- /* Use the file name to determine the device type */ >- for(i=0;;i++) >- { >- dev->tapedevt=fmttab[i].fmtcode; >- dev->tmh=fmttab[i].tmh; >- if(!fmttab[i].fmtreg) >- { >- break; >- } >-#if defined(HAVE_REGEX_H) || defined(HAVE_PCRE) >- rc=regcomp(®wrk,fmttab[i].fmtreg,REG_ICASE); >- if(rc<0) >- { >- regerror(rc,®wrk,errbfr,1024); >- logmsg (_("HHCTA999E Device %4.4X: Unable to determine tape format type for %s: Internal error: Regcomp error %s on index %d\n"),dev->devnum,dev->filename,errbfr,i); >- return -1; >- } >- rc=regexec(®wrk,dev->filename,1,®wrk2,0); >- if(REG_NOMATCH==rc) >- { >- regfree(®wrk); >- continue; >- } >- if(!rc) >- { >- regfree(®wrk); >- break; >- } >- regerror(rc,®wrk,errbfr,1024); >- logmsg (_("HHCTA999E Device %4.4X: Unable to determine tape format type for %s: Internal error: Regexec error %s on index %d\n"),dev->devnum,dev->filename,errbfr,i); >- regfree(®wrk); >- return -1; >-#else // !HAVE_REGEX_H >- switch ( dev->tapedevt ) >- { >- case TAPEDEVT_OMATAPE: // filename ends with ".tdf" >- if ( (rc = strlen(dev->filename)) <= 4 ) >- rc = -1; >- else >- rc = strcasecmp( &dev->filename[rc-4], ".tdf" ); >- break; >-#if defined(OPTION_SCSI_TAPE) >- case TAPEDEVT_SCSITAPE: // filename starts with "\\.\Tape" or "/dev/" >-#if defined(_MSVC_) >- if (1 >- && strncasecmp(dev->filename, "\\\\.\\Tape", 8) == 0 >- && isdigit(*(dev->filename+8)) >- && 0 == *(dev->filename+9) >- ) >- rc = 0; >- else >-#endif // _MSVC_ >- { >- if ( (rc = strlen(dev->filename)) <= 5 ) >- rc = -1; >- else >- rc = strncasecmp( dev->filename, "/dev/", 5 ); >- if (0 == rc) >- { >- if (strncasecmp( dev->filename+5, "st", 2 ) == 0) >- dev->stape_close_rewinds = 1; // (rewind at close) >- else >- dev->stape_close_rewinds = 0; // (otherwise don't) >- } >- } >- break; >-#endif // OPTION_SCSI_TAPE >- case TAPEDEVT_HET: // filename ends with ".het" >- if ( (rc = strlen(dev->filename)) <= 4 ) >- rc = -1; >- else >- rc = strcasecmp( &dev->filename[rc-4], ".het" ); >- break; >- default: // (should not occur) >- ASSERT(0); >- logmsg (_("HHCTA999E Device %4.4X: Unable to determine tape format type for %s\n"),dev->devnum,dev->filename); >- return -1; >- } >- if (!rc) break; >-#endif // HAVE_REGEX_H >- } >- descr = fmttab[i].descr; // (save device description) >- short_descr = fmttab[i].short_descr; // (save device description) >- if (strcmp (dev->filename, TAPE_UNLOADED)!=0) >- { >- logmsg (_("HHCTA998I Device %4.4X: %s is a %s\n"),dev->devnum,dev->filename,descr); >- } >- >- /* Initialize device dependent fields */ >- dev->fd = -1; >-#if defined(OPTION_SCSI_TAPE) >- dev->sstat = GMT_DR_OPEN(-1); >- dev->stape_getstat_sstat = GMT_DR_OPEN(-1); >-#endif >- dev->omadesc = NULL; >- dev->omafiles = 0; >- dev->curfilen = 1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- dev->curblkrem = 0; >- dev->curbufoff = 0; >- dev->readonly = 0; >- dev->hetb = NULL; >- dev->tdparms.compress = HETDFLT_COMPRESS; >- dev->tdparms.method = HETDFLT_METHOD; >- dev->tdparms.level = HETDFLT_LEVEL; >- dev->tdparms.chksize = HETDFLT_CHKSIZE; >- dev->tdparms.maxsize = 0; // no max size (default) >- dev->tdparms.eotmargin = 128*1024; // 128K EOT margin (default) >- >- /* Process remaining parameters */ >- rc = 0; >- for (i = 1; i < argc; i++) >- { >- logmsg (_("HHCTA066I %s device %4.4X parameter: '%s'\n"), short_descr, dev->devnum, argv[i]); >- switch (parser (&ptab[0], argv[i], &res)) >- { >- case TDPARM_NONE: >- logmsg (_("HHCTA067E Device %4.4X: %s - Unrecognized parameter: '%s'\n"), >- dev->devnum,dev->filename,argv[i]); >- rc = -1; >- break; >- >- case TDPARM_AWSTAPE: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.compress = FALSE; >- dev->tdparms.chksize = 4096; >- break; >- >- case TDPARM_IDRC: >- case TDPARM_COMPRESS: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.compress = (res.num ? TRUE : FALSE); >- break; >- >- case TDPARM_METHOD: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- if (res.num < HETMIN_METHOD || res.num > HETMAX_METHOD) >- { >- logmsg(_("HHCTA068E Method must be within %u-%u\n"), >- HETMIN_METHOD, HETMAX_METHOD); >- rc = -1; >- break; >- } >- dev->tdparms.method = res.num; >- break; >- >- case TDPARM_LEVEL: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- if (res.num < HETMIN_LEVEL || res.num > HETMAX_LEVEL) >- { >- logmsg(_("HHCTA069E Level must be within %u-%u\n"), >- HETMIN_LEVEL, HETMAX_LEVEL); >- rc = -1; >- break; >- } >- dev->tdparms.level = res.num; >- break; >- >- case TDPARM_CHKSIZE: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- if (res.num < HETMIN_CHUNKSIZE || res.num > HETMAX_CHUNKSIZE) >- { >- logmsg (_("HHCTA070E Chunksize must be within %u-%u\n"), >- HETMIN_CHUNKSIZE, HETMAX_CHUNKSIZE); >- rc = -1; >- break; >- } >- dev->tdparms.chksize = res.num; >- break; >- >- case TDPARM_MAXSIZE: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.maxsize=res.num; >- break; >- >- case TDPARM_MAXSIZEK: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.maxsize=res.num*1024; >- break; >- >- case TDPARM_MAXSIZEM: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.maxsize=res.num*1024*1024; >- break; >- >- case TDPARM_EOTMARGIN: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.eotmargin=res.num; >- break; >- >- case TDPARM_STRICTSIZE: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.strictsize=res.num; >- break; >- >- case TDPARM_READONLY: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.logical_readonly=(res.num ? 1 : 0 ); >- break; >- >- case TDPARM_RO: >- case TDPARM_NORING: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.logical_readonly=1; >- break; >- >- case TDPARM_RW: >- case TDPARM_RING: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.logical_readonly=0; >- break; >- >- case TDPARM_DEONIRQ: >- if (TAPEDEVT_SCSITAPE == dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for SCSI tape\n"), argv[i]); >- rc = -1; >- break; >- } >- dev->tdparms.deonirq=(res.num ? 1 : 0 ); >- break; >- >-#if defined(OPTION_SCSI_TAPE) >- case TDPARM_BLKID32: >- if (TAPEDEVT_SCSITAPE != dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for %s\n"), >- argv[i], short_descr ); >- rc = -1; >- break; >- } >- dev->stape_blkid_32 = 1; >- break; >- >- case TDPARM_NOERG: >- if (TAPEDEVT_SCSITAPE != dev->tapedevt) >- { >- logmsg (_("HHCTA078E Option '%s' not valid for %s\n"), >- argv[i], short_descr ); >- rc = -1; >- break; >- } >- dev->stape_no_erg = 1; >- break; >-#endif /* defined(OPTION_SCSI_TAPE) */ >- >- default: >- logmsg(_("HHCTA071E Error in '%s' parameter\n"), argv[i]); >- rc = -1; >- break; >- } // end switch (parser (&ptab[0], argv[i], &res)) >- } // end for (i = 1; i < argc; i++) >- >- if (0 != rc) >- return -1; >- >- /* Adjust the display if necessary */ >- if(dev->tdparms.displayfeat) >- { >- if(strcmp(dev->filename,TAPE_UNLOADED)==0) >- { >- /* NO tape is loaded */ >- if(TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype) >- { >- /* A new tape SHOULD be mounted */ >- dev->tapedisptype = TAPEDISPTYP_MOUNT; >- dev->tapedispflags |= TAPEDISPFLG_REQAUTOMNT; >- strlcpy( dev->tapemsg1, dev->tapemsg2, sizeof(dev->tapemsg1) ); >- } >- else if(TAPEDISPTYP_UNMOUNT == dev->tapedisptype) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- } >- } >- else >- { >- /* A tape IS already loaded */ >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- } >- } >- UpdateDisplay(dev); >- ReqAutoMount(dev); >- return 0; >- >-} /* end function mountnewtape */ >- >-/*-------------------------------------------------------------------*/ >-/* AUTOLOADER Feature */ >- >-/* autoload_global_parms: Appends a blank delimited word */ >-/* to the list of parameters that will be passed */ >-/* for every tape mounted by the autoloader */ >- >-static void autoload_global_parms(DEVBLK *dev,char *par) >-{ >- logmsg(_("TAPE Autoloader - Adding global parm %s\n"),par); >- if(!dev->al_argv) >- { >- dev->al_argv=malloc(sizeof(char *)*256); >- dev->al_argc=0; >- } >- dev->al_argv[dev->al_argc]=(char *)malloc(strlen(par)+sizeof(char)); >- strcpy(dev->al_argv[dev->al_argc],par); >- dev->al_argc++; >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_clean_entry: release storage allocated */ >-/* for an autoloader slot (except the slot itself */ >- >-static void autoload_clean_entry(DEVBLK *dev,int ix) >-{ >- int i; >- for(i=0;i<dev->als[ix].argc;i++) >- { >- free(dev->als[ix].argv[i]); >- dev->als[ix].argv[i]=NULL; >- } >- dev->als[ix].argc=0; >- if(dev->als[ix].filename) >- { >- free(dev->als[ix].filename); >- dev->als[ix].filename=NULL; >- } >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_close: terminate autoloader operations */ >-/* release all storage allocated by the autoloader */ >-/* facility */ >-static void autoload_close(DEVBLK *dev) >-{ >- int i; >- if(dev->al_argv) >- { >- for(i=0;i<dev->al_argc;i++) >- { >- free(dev->al_argv[i]); >- dev->al_argv[i]=NULL; >- } >- free(dev->al_argv); >- dev->al_argv=NULL; >- dev->al_argc=0; >- } >- dev->al_argc=0; >- if(dev->als) >- { >- for(i=0;i<dev->alss;i++) >- { >- autoload_clean_entry(dev,i); >- } >- free(dev->als); >- dev->als=NULL; >- dev->alss=0; >- } >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_tape_entry: populate an autoloader slot */ >-/* also expands the size of the autoloader */ >- >-static void autoload_tape_entry(DEVBLK *dev,char *fn,char **strtokw) >-{ >- char *p; >- TAPEAUTOLOADENTRY tae; >- logmsg(_("TAPE Autoloader: Adding tape entry %s\n"),fn); >- memset(&tae,0,sizeof(tae)); >- tae.filename=malloc(strlen(fn)+sizeof(char)+1); >- strcpy(tae.filename,fn); >- while((p=strtok_r(NULL," \t",strtokw))) >- { >- if(!tae.argv) >- { >- tae.argv=malloc(sizeof(char *)*256); >- } >- tae.argv[tae.argc]=malloc(strlen(p)+sizeof(char)+1); >- strcpy(tae.argv[tae.argc],p); >- tae.argc++; >- } >- if(!dev->als) >- { >- dev->als=malloc(sizeof(tae)); >- dev->alss=0; >- } >- else >- { >- dev->als=realloc(dev->als,sizeof(tae)*(dev->alss+1)); >- } >- memcpy(&dev->als[dev->alss],&tae,sizeof(tae)); >- dev->alss++; >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_init: initialise the Autoloader feature */ >- >-static void autoload_init(DEVBLK *dev,int ac,char **av) >-{ >- char bfr[4096]; >- char *rec; >- FILE *aldf; >- char *verb; >- int i; >- char *strtokw; >- char pathname[MAX_PATH]; >- >- autoload_close(dev); >- if(ac<1) >- { >- return; >- } >- if(av[0][0]!='@') >- { >- return; >- } >- logmsg(_("TAPE: Autoloader file request fn=%s\n"),&av[0][1]); >- hostpath(pathname, &av[0][1], sizeof(pathname)); >- if(!(aldf=fopen(pathname,"r"))) >- { >- return; >- } >- for(i=1;i<ac;i++) >- { >- autoload_global_parms(dev,av[i]); >- } >- while((rec=fgets(bfr,4096,aldf))) >- { >- for(i=(strlen(rec)-1);isspace(rec[i]) && i>=0;i--) >- { >- rec[i]=0; >- } >- if(!strlen(rec)) >- { >- continue; >- } >- verb=strtok_r(rec," \t",&strtokw); >- if(!verb) >- { >- continue; >- } >- if(!verb[0]) >- { >- continue; >- } >- if('#'==verb[0]) >- { >- continue; >- } >- if(strcmp(verb,"*")==0) >- { >- while((verb=strtok_r(NULL," \t",&strtokw))) >- { >- autoload_global_parms(dev,verb); >- } >- continue; >- } >- autoload_tape_entry(dev,verb,&strtokw); >- } // end while((rec=fgets(bfr,4096,aldf))) >- fclose(aldf); >- return; >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_mount_tape: mount in the drive the tape */ >-/* positionned in the autoloader slot #alix */ >- >-static int autoload_mount_tape(DEVBLK *dev,int alix) >-{ >- char **pars; >- int pcount=1; >- int i; >- int rc; >- if(alix>=dev->alss) >- { >- return -1; >- } >- pars=malloc(sizeof(BYTE *)*256); >- pars[0]=dev->als[alix].filename; >- for(i=0;i<dev->al_argc;i++,pcount++) >- { >- pars[pcount]=malloc(strlen(dev->al_argv[i])+10); >- strcpy(pars[pcount],dev->al_argv[i]); >- if(pcount>255) >- { >- break; >- } >- } >- for(i=0;i<dev->als[alix].argc;i++,pcount++) >- { >- pars[pcount]=malloc(strlen(dev->als[alix].argv[i])+10); >- strcpy(pars[pcount],dev->als[alix].argv[i]); >- if(pcount>255) >- { >- break; >- } >- } >- rc=mountnewtape(dev,pcount,pars); >- for(i=1;i<pcount;i++) >- { >- free(pars[i]); >- } >- free(pars); >- return(rc); >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_mount_first: mount in the drive the tape */ >-/* positionned in the 1st autoloader slot */ >- >-static int autoload_mount_first(DEVBLK *dev) >-{ >- dev->alsix=0; >- return(autoload_mount_tape(dev,0)); >-} >- >-/*-------------------------------------------------------------------*/ >-/* autoload_mount_next: mount in the drive the tape */ >-/* positionned in the slot after the currently */ >-/* mounted tape. if this is the last tape, */ >-/* close the autoloader */ >-static int autoload_mount_next(DEVBLK *dev) >-{ >- if(dev->alsix>=dev->alss) >- { >- autoload_close(dev); >- return -1; >- } >- dev->alsix++; >- return(autoload_mount_tape(dev,dev->alsix)); >-} >- >-/*-------------------------------------------------------------------*/ >- >-static void *autoload_wait_for_tapemount_thread(void *db) >-{ >-int rc = -1; >-DEVBLK *dev = (DEVBLK*) db; >- >- obtain_lock(&dev->lock); >- { >- while >- ( >- dev->als >- && >- (rc = autoload_mount_next( dev )) != 0 >- ) >- { >- release_lock( &dev->lock ); >- SLEEP(AUTOLOAD_WAIT_FOR_TAPEMOUNT_INTERVAL_SECS); >- obtain_lock( &dev->lock ); >- } >- } >- release_lock(&dev->lock); >- if ( !rc ) >- device_attention(dev,CSW_DE); >- return NULL; >-} >-/*-------------------------------------------------------------------*/ >-/* Initialize the device handler */ >-/*-------------------------------------------------------------------*/ >-static int tapedev_init_handler (DEVBLK *dev, int argc, char *argv[]) >-{ >-U16 cutype; /* Control unit type */ >-BYTE cumodel; /* Control unit model number */ >-BYTE devmodel; /* Device model number */ >-BYTE devclass; /* Device class */ >-BYTE devtcode; /* Device type code */ >-U32 sctlfeat; /* Storage control features */ >-int haverdc; /* RDC Supported */ >-int rc; >- >- /* Determine the control unit type and model number */ >- /* Support for 3490/3422/3430/8809/9347, etc.. */ >- /* Close current tape */ >- if(dev->fd>=0) >- { >- dev->tmh->close(dev); >- dev->fd=-1; >- } >- autoload_close(dev); >- haverdc=0; >- dev->tdparms.displayfeat=0; >- >- if(!sscanf(dev->typname,"%hx",&(dev->devtype))) >- dev->devtype = 0x3420; >- >- switch(dev->devtype) >- { >- case 0x3480: >- cutype = 0x3480; >- cumodel = 0x31; >- devmodel = 0x31; /* Model D31 */ >- devclass = 0x80; >- devtcode = 0x80; >- sctlfeat = 0x000002C0; /* Support Logical Write Protect */ >- /* Autoloader installed */ >- /* IDRC Supported */ >- dev->numdevid = 7; >- dev->numsense = 24; >- haverdc=1; >- dev->tdparms.displayfeat=1; >- break; >- case 0x3490: >- cutype = 0x3490; >- cumodel = 0x50; /* Model C10 */ >- devmodel = 0x50; >- devclass = 0x80; >- devtcode = 0x80; /* Valid for 3490 too */ >- sctlfeat = 0x000002C0; /* Support Logical Write Protect */ >- /* Autoloader installed */ >- /* IDRC Supported */ >- dev->numdevid = 7; >- dev->numsense = 32; >- haverdc=1; >- dev->tdparms.displayfeat=1; >- break; >- case 0x3590: >- cutype = 0x3590; >- cumodel = 0x50; /* Model C10 ?? */ >- devmodel = 0x50; >- devclass = 0x80; >- devtcode = 0x80; /* Valid for 3590 too */ >- sctlfeat = 0x000002C0; /* Support Logical Write Protect */ >- /* Autoloader installed */ >- /* IDRC Supported */ >- dev->numdevid = 7; >- dev->numsense = 32; >- haverdc=1; >- dev->tdparms.displayfeat=1; >- break; >- case 0x3420: >- cutype = 0x3803; >- cumodel = 0x02; >- devmodel = 0x06; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 0; /* Actually, doesn't support 0xE4 */ >- dev->numsense = 24; >- break; >- case 0x9347: >- cutype = 0x9347; >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 7; >- dev->numsense = 32; >- break; >- case 0x9348: >- cutype = 0x9348; >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 7; >- dev->numsense = 32; >- break; >- case 0x8809: >- cutype = 0x8809; >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 7; >- dev->numsense = 32; >- break; >- case 0x3410: >- case 0x3411: >- dev->devtype = 0x3411; /* a 3410 is a 3411 */ >- cutype = 0x3115; /* Model 115 IFA */ >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid=0; >- dev->numsense = 9; >- break; >- case 0x3422: >- cutype = 0x3422; >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 7; >- dev->numsense = 32; >- break; >- case 0x3430: >- cutype = 0x3422; >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 7; >- dev->numsense = 32; >- break; >- default: >- logmsg(_("Unsupported device type specified %4.4x\n"),dev->devtype); >- cutype = dev->devtype; /* don't know what to do really */ >- cumodel = 0x01; >- devmodel = 0x01; >- devclass = 0x80; >- devtcode = 0x20; >- sctlfeat = 0x00000000; >- dev->numdevid = 0; /* We don't know */ >- dev->numsense = 1; >- break; >- } // end switch(dev->devtype) >- >- /* Initialize the device identifier bytes */ >- dev->devid[0] = 0xFF; >- dev->devid[1] = cutype >> 8; >- dev->devid[2] = cutype & 0xFF; >- dev->devid[3] = cumodel; >- dev->devid[4] = dev->devtype >> 8; >- dev->devid[5] = dev->devtype & 0xFF; >- dev->devid[6] = devmodel; >- >- /* Initialize the device characteristics bytes */ >- if (haverdc) >- { >- memset (dev->devchar, 0, sizeof(dev->devchar)); >- memcpy (dev->devchar, dev->devid+1, 6); >- dev->devchar[6] = (sctlfeat >> 24) & 0xFF; >- dev->devchar[7] = (sctlfeat >> 16) & 0xFF; >- dev->devchar[8] = (sctlfeat >> 8) & 0xFF; >- dev->devchar[9] = sctlfeat & 0xFF; >- dev->devchar[10] = devclass; >- dev->devchar[11] = devtcode; >- dev->devchar[40] = 0x41; >- dev->devchar[41] = 0x80; >- dev->numdevchar = 64; >- } >- >- /* Initialize SCSI tape control fields */ >-#if defined(OPTION_SCSI_TAPE) >- dev->sstat = GMT_DR_OPEN(-1); >- dev->stape_getstat_sstat = GMT_DR_OPEN(-1); >-#endif >- >- /* Clear the DPA */ >- memset(dev->pgid, 0, sizeof(dev->pgid)); >- /* Clear Drive password - Adrian */ >- memset(dev->drvpwd, 0, sizeof(dev->drvpwd)); >- >- >- /* Request the channel to merge data chained write CCWs into >- a single buffer before passing data to the device handler */ >- dev->cdwmerge = 1; >- >- /* Tape is a syncio type 2 device */ >- dev->syncio = 2; >- >- /* ISW */ >- /* Build a 'clear' sense */ >- memset(dev->sense,0,sizeof(dev->sense)); >- dev->sns_pending=0; >- >- // Initialize the [non-SCSI] auto-loader... >- >- // Programming Note: we don't [yet] know at this early stage >- // what type of tape device we're dealing with (SCSI or non- >- // SCSI) since 'mountnewtape' hasn't been called yet (which >- // is the function that determines which media handler should >- // be used and is the one that initializes dev->tapedevt) >- >- // The only thing we know (or WILL know once 'autoload_init' >- // is called) is whether or not there was a [non-SCSI] auto- >- // loader defined for the device. That's it and nothing more. >- >- autoload_init(dev,argc,argv); >- >- // Was an auto-loader defined for this device? >- if ( !dev->als ) >- { >- // No. Just mount whatever tape there is (if any)... >- rc = mountnewtape( dev, argc, argv ); >- } >- else >- { >- // Yes. Try mounting the FIRST auto-loader slot... >- if ( (rc = autoload_mount_first( dev )) != 0 ) >- { >- // If that doesn't work, try subsequent slots... >- while >- ( >- dev->als >- && >- (rc = autoload_mount_next( dev )) != 0 >- ) >- { >- ; // (nop; just go on to next slot) >- } >- rc = dev->als ? rc : -1; >- } >- } >- return rc; >-} /* end function tapedev_init_handler */ >- >-/*-------------------------------------------------------------------*/ >-/* Query the device definition */ >-/*-------------------------------------------------------------------*/ >-static void tapedev_query_device ( DEVBLK *dev, char **class, >- int buflen, char *buffer ) >-{ >- char dispmsg[256]; dispmsg[0]=0; >- >- if (!dev || !class || !buffer || !buflen) >- return; >- >- *class = "TAPE"; >- *buffer = 0; >- >- GetDisplayMsg( dev, dispmsg, sizeof(dispmsg) ); >- >- if ( !strcmp( dev->filename, TAPE_UNLOADED ) ) >- { >- snprintf(buffer, buflen, "%s%s%s", >- TAPE_UNLOADED, >- dev->tdparms.displayfeat ? ", Display: " : "", >- dev->tdparms.displayfeat ? dispmsg : ""); >- } >- else >- { >- char tapepos[32]; tapepos[0]=0; >- >- if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >- { >- snprintf( tapepos, sizeof(tapepos), "[%d:%8.8lX] ", >- dev->curfilen, (unsigned long int)dev->nxtblkpos ); >- tapepos[sizeof(tapepos)-1] = 0; >- } >-#if defined(OPTION_SCSI_TAPE) >- else >- { >- if (STS_BOT( dev )) strlcat(tapepos,"*BOT* ",sizeof(tapepos)); >- // If tape has a display, then GetDisplayMsg already >- // appended *FP* for us. Otherwise we need to do it. >- if ( !dev->tdparms.displayfeat ) >- if (STS_WR_PROT( dev )) >- strlcat(tapepos,"*FP* ",sizeof(tapepos)); >- } >-#endif >- >- if ( TAPEDEVT_SCSITAPE != dev->tapedevt >-#if defined(OPTION_SCSI_TAPE) >- || !STS_NOT_MOUNTED(dev) >-#endif >- ) >- { >- // Not a SCSI tape, -or- mounted SCSI tape... >- >- snprintf (buffer, buflen, "%s%s %s%s%s", >- >- dev->filename, (dev->readonly ? " ro" : ""), >- >- tapepos, >- dev->tdparms.displayfeat ? "Display: " : "", >- dev->tdparms.displayfeat ? dispmsg : ""); >- } >- else /* ( TAPEDEVT_SCSITAPE == dev->tapedevt && STS_NOT_MOUNTED(dev) ) */ >- { >- // UNmounted SCSI tape... >- >- snprintf (buffer, buflen, "%s%s (%sNOTAPE)%s%s", >- >- dev->filename, (dev->readonly ? " ro" : ""), >- >- dev->fd < 0 ? "closed; " : "", >- dev->tdparms.displayfeat ? ", Display: " : "", >- dev->tdparms.displayfeat ? dispmsg : "" ); >- } >- } >- >- buffer[buflen-1] = 0; >-} /* end function tapedev_query_device */ >- >-/*-------------------------------------------------------------------*/ >-/* Close the device */ >-/*-------------------------------------------------------------------*/ >-static int tapedev_close_device ( DEVBLK *dev ) >-{ >- autoload_close(dev); >- dev->tmh->close(dev); >- ASSERT( dev->fd < 0 ); >- dev->curfilen = 1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- dev->curblkrem = 0; >- dev->curbufoff = 0; >- dev->blockid = 0; >- dev->poserror = 0; >- return 0; >-} /* end function tapedev_close_device */ >- >-/* START PRELIM_CCW_CHECK */ >-/*-------------------------------------------------------------------*/ >-/* Ivan Warren 20030224 */ >-/* Determine if a CCW code is valid for the Device */ >-/* rc = 0: Command is NOT valid */ >-/* rc = 1: Command is Valid, tape MUST be loaded */ >-/* rc = 2: Command is Valid, tape NEED NOT be loaded */ >-/* rc = 3: Command is Valid, But is a NO-OP (Return CE+DE now) */ >-/* rc = 4: Command is Valid, But is a NO-OP for virtual tapes */ >-/* rc = 5: Command is Valid, Tape Must be loaded - Add DE to status */ >-/* rc = 6: Command is Valid, Tape load attempted - but not an error */ >-/* (used for sense and no contingency allegiance exists) */ >-/*-------------------------------------------------------------------*/ >- >-static int TapeCommandIsValid(BYTE code,U16 devtype,BYTE *rustat) >-{ >-int i; >-int tix=0; >-int rc; >-int devtfound=0; >- >- /* Find the D/T in the table - if not found, treat as invalid CCW code */ >- >- *rustat=0; >- for(i=0;TapeDevtypeList[i]!=0;i+=TAPEDEVTYPELISTENTRYSIZE) >- { >- if(TapeDevtypeList[i]==devtype) >- { >- tix=TapeDevtypeList[i+1]; >- devtfound=1; >- if(TapeDevtypeList[i+2]) >- { >- *rustat|=CSW_UC; >- } >- if(TapeDevtypeList[i+3]) >- { >- *rustat|=CSW_CUE; >- } >- break; >- } >- } >- if(!devtfound) >- { >- return 0; >- } >- >- rc=TapeCommandTable[tix][code]; >- return rc; >-} >-/* END PRELIM_CCW_CHECK */ >- >-/*-------------------------------------------------------------------*/ >-/* PROGRAMMING NOTE: for the 32-bit to 22-bit (and vice versa) */ >-/* conversion, we're relying on (hoping really!) that an actual */ >-/* 32-bit block-id value will never actually exceed 30 bits (1-bit */ >-/* wrap + 7-bit segment# + 22-bit block-id) since we perform the */ >-/* conversion by simply splitting the low-order 30 bits of a 32-bit */ >-/* block-id into separate 8-bit (wrap and segment#) and 22-bit */ >-/* (block-id) fields, and then shifting them into their appropriate */ >-/* position (and of course combining/appending them for the opposite */ >-/* conversion). */ >-/* */ >-/* As such, this of course implies that we are thus treating the */ >-/* wrap bit and 7-bit segment number values of a "22-bit format" */ >-/* blockid as simply the high-order 8 bits of an actual 30-bit */ >-/* physical blockid (which may or may not work properly on actual */ >-/* SCSI hardware depdending on how[*] it handles inaccurate blockid */ >-/* values). */ >-/* */ >-/* ----------------- */ >-/* [*] Most(?) [SCSI] devices treat the blockid value used in a */ >-/* Locate CCW as simply an "approximate location" of where the */ >-/* block in question actually resides on the physical tape, and */ >-/* will, after positioning itself to the *approximate* physical */ >-/* location of where the block in question is *believed* to reside */ >-/* (as indicated by the supplied Locate blockid), perform the */ >-/* *actual* positioning in low-speed mode based on its reading of */ >-/* its actual internally recorded blockid values. Thus, even when/if */ >-/* the supplied Locate block-id value is wrong, the Locate should */ >-/* still succeed, albeit less efficiently (as it may be starting */ >-/* its locate at a physical position quite distant from where the */ >-/* actual block is physically located on the media). */ >-/*-------------------------------------------------------------------*/ >- >-/*-------------------------------------------------------------------*/ >-/* Convert a 3590 32-bit blockid into 3480 "22-bit format" blockid */ >-/* Both i/p and o/p are presumed to be in big-endian guest format */ >-/*-------------------------------------------------------------------*/ >-void blockid_32_to_22 ( BYTE *in_32blkid, BYTE *out_22blkid ) >-{ >- out_22blkid[0] = ((in_32blkid[0] << 2) & 0xFC) | ((in_32blkid[1] >> 6) & 0x03); >- out_22blkid[1] = in_32blkid[1] & 0x3F; >- out_22blkid[2] = in_32blkid[2]; >- out_22blkid[3] = in_32blkid[3]; >-} >- >-/*-------------------------------------------------------------------*/ >-/* Convert a 3480 "22-bit format" blockid into a 3590 32-bit blockid */ >-/* Both i/p and o/p are presumed to be in big-endian guest format */ >-/*-------------------------------------------------------------------*/ >-void blockid_22_to_32 ( BYTE *in_22blkid, BYTE *out_32blkid ) >-{ >- out_32blkid[0] = (in_22blkid[0] >> 2) & 0x3F; >- out_32blkid[1] = ((in_22blkid[0] << 6) & 0xC0) | (in_22blkid[1] & 0x3F); >- out_32blkid[2] = in_22blkid[2]; >- out_32blkid[3] = in_22blkid[3]; >-} >- >-/*-------------------------------------------------------------------*/ >-/* Locate CCW helper: convert guest-supplied 3480 or 3590 blockid */ >-/* to the actual SCSI hardware blockid format */ >-/* Both i/p and o/p are presumed to be in big-endian guest format */ >-/*-------------------------------------------------------------------*/ >-void blockid_emulated_to_actual >-( >- DEVBLK *dev, // ptr to Hercules device >- BYTE *emu_blkid, // ptr to i/p 4-byte block-id in guest storage >- BYTE *act_blkid // ptr to o/p 4-byte block-id for actual SCSI i/o >-) >-{ >- if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >- { >- memcpy( act_blkid, emu_blkid, 4 ); >- return; >- } >- >-#if defined(OPTION_SCSI_TAPE) >- if (0x3590 == dev->devtype) >- { >- // 3590 being emulated; guest block-id is full 32-bits... >- >- if (dev->stape_blkid_32) >- { >- // SCSI using full 32-bit block-ids too. Just copy as-is... >- >- memcpy( act_blkid, emu_blkid, 4 ); >- } >- else >- { >- // SCSI using 22-bit block-ids. Use low-order 30 bits >- // of 32-bit guest-supplied blockid and convert it >- // into a "22-bit format" blockid value for SCSI... >- >- blockid_32_to_22 ( emu_blkid, act_blkid ); >- } >- } >- else // 3480 being emulated; guest block-id is 22-bits... >- { >- if (dev->stape_blkid_32) >- { >- // SCSI using full 32-bit block-ids. Extract the wrap, >- // segment# and 22-bit blockid bits from the "22-bit >- // format" guest-supplied blockid value and combine >- // (append) them into a contiguous low-order 30 bits >- // of a 32-bit blockid value for SCSI to use... >- >- blockid_22_to_32 ( emu_blkid, act_blkid ); >- } >- else >- { >- // SCSI using 22-bit block-ids too. Just copy as-is... >- >- memcpy( act_blkid, emu_blkid, 4 ); >- } >- } >-#endif /* defined(OPTION_SCSI_TAPE) */ >-} >- >-/*-------------------------------------------------------------------*/ >-/* Read Block Id CCW helper: convert an actual SCSI block-id */ >-/* to guest emulated 3480/3590 format */ >-/* Both i/p and o/p are presumed to be in big-endian guest format */ >-/*-------------------------------------------------------------------*/ >-void blockid_actual_to_emulated >-( >- DEVBLK *dev, // ptr to Hercules device (for 'devtype') >- BYTE *act_blkid, // ptr to i/p 4-byte block-id from actual SCSI i/o >- BYTE *emu_blkid // ptr to o/p 4-byte block-id in guest storage >-) >-{ >- if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >- { >- memcpy( emu_blkid, act_blkid, 4 ); >- return; >- } >- >-#if defined(OPTION_SCSI_TAPE) >- if (dev->stape_blkid_32) >- { >- // SCSI using full 32-bit block-ids... >- if (0x3590 == dev->devtype) >- { >- // Emulated device is a 3590 too. Just copy as-is... >- memcpy( emu_blkid, act_blkid, 4 ); >- } >- else >- { >- // Emulated device using 22-bit format. Convert... >- blockid_32_to_22 ( act_blkid, emu_blkid ); >- } >- } >- else >- { >- // SCSI using 22-bit format block-ids... >- if (0x3590 == dev->devtype) >- { >- // Emulated device using full 32-bit format. Convert... >- blockid_22_to_32 ( act_blkid, emu_blkid ); >- } >- else >- { >- // Emulated device using 22-bit format too. Just copy as-is... >- memcpy( emu_blkid, act_blkid, 4 ); >- } >- } >-#endif /* defined(OPTION_SCSI_TAPE) */ >-} >- >-/*-------------------------------------------------------------------*/ >-/* Execute a Channel Command Word */ >-/*-------------------------------------------------------------------*/ >-static void tapedev_execute_ccw (DEVBLK *dev, BYTE code, BYTE flags, >- BYTE chained, U16 count, BYTE prevcode, int ccwseq, >- BYTE *iobuf, BYTE *more, BYTE *unitstat, U16 *residual) >-{ >-int rc; /* Return code */ >-int len; /* Length of data block */ >-long num; /* Number of bytes to read */ >-U32 locblock; /* Block Id for Locate Block */ >-int drc; /* code disposition */ >-BYTE rustat; /* Addl CSW stat on Rewind Unload */ >- >- UNREFERENCED(prevcode); >- UNREFERENCED(ccwseq); >- >- /* If this is a data-chained READ, then return any data remaining >- in the buffer which was not used by the previous CCW */ >- if (chained & CCW_FLAGS_CD) >- { >- if(IS_CCW_RDBACK(code)) >- { >- /* We don't need to move anything in this case - just set length */ >- } >- else >- { >- memmove (iobuf, iobuf + dev->curbufoff, dev->curblkrem); >- } >- num = (count < dev->curblkrem) ? count : dev->curblkrem; >- *residual = count - num; >- if (count < dev->curblkrem) *more = 1; >- dev->curblkrem -= num; >- dev->curbufoff = num; >- *unitstat = CSW_CE | CSW_DE; >- return; >- } >- >- /* Command reject if data chaining and command is not READ */ >- if (1 >- && (flags & CCW_FLAGS_CD) // data chaining >- && code != 0x02 // read >- && code != 0x0C // read backwards >- ) >- { >- logmsg(_("HHCTA072E Data chaining not supported for CCW %2.2X\n"), >- code); >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- return; >- } >- >- /* Open the device file if necessary */ >- /* Ivan Warren 2003-02-24: Change logic in early determination >- * of CCW handling - use a determination table >- */ >- drc=TapeCommandIsValid(code,dev->devtype,&rustat); >- switch(drc) >- { >- case 0: /* Unsupported CCW code for D/T */ >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- return; >- case 1: /* Valid - Tape MUST be loaded */ >- case 5: /* Valid - Tape MUST be loaded (add DE to status) */ >- case 2: /* Valid - Tape NEED NOT be loaded */ >- break; >- case 3: /* Valid - But is a NO-OP (return CE+DE now) */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- return; >- case 4: /* Valid, But is a NO-OP (for virtual tapes) */ >- if(dev->tapedevt!=TAPEDEVT_SCSITAPE) >- { >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- return; >- } >- break; >- default: /* Should NOT occur! */ >- ASSERT(0); >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } // end switch(drc) >- >- if ((1==drc || 5==drc) && (dev->fd < 0 || TAPEDEVT_SCSITAPE == dev->tapedevt)) >- { >- *residual=count; >- if (!strcmp (dev->filename, TAPE_UNLOADED)) >- { >- build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >- return; >- } >- if (dev->fd < 0) >- { >- rc=dev->tmh->open(dev,unitstat,code); >- /* Exit with unit status if open was unsuccessful */ >- if (rc < 0) { >- return; >- } >- } >- if(!dev->tmh->tapeloaded(dev,unitstat,code)) >- { >- build_senseX(TAPE_BSENSE_TAPEUNLOADED,dev,unitstat,code); >- return; >- } >- } >- >- /* Process depending on CCW opcode */ >- switch (code) { >- >- /*---------------------------------------------------------------*/ >- /* WRITE */ >- /*---------------------------------------------------------------*/ >- case 0x01: >- /* Unit check if tape is write-protected */ >- if (dev->readonly) >- { >- build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >- break; >- } >- >- /* Write a block from the tape according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- rc=dev->tmh->write(dev,iobuf,count,unitstat,code); >- if (rc < 0) >- { >- break; >- } >- /* Set normal status */ >- *residual = 0; >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* READ FORWARD (3590 only) */ >- /*---------------------------------------------------------------*/ >- case 0x06: >- >- /* From: SG24-2506-01 "IBM 3590 Tape Subsystem Technical Guide" >- >- http://publibz.boulder.ibm.com/cgi-bin/bookmgr/FRAMESET/EZ309601/CCONTENTS?DT=19961211181910 >- >- 5.2.1 Separate Channel Commands for IPL Read and Normal Read >- >- On IBM 3480/3490 tape devices there is only one Read Forward >- CCW, the X'02' command code. This CCW is used to perform not >- only normal read operations but also an IPL Read from tape, >- for example, DFSMSdss Stand-Alone Restore. When the CCW is >- used as an IPL Read, it is not subject to resetting event >- notification, by definition. Because there is only one Read >- Forward CCW, it cannot be subject to resetting event notification >- on IBM 3480 and 3490 devices. >- >- To differentiate between an IPL Read and a normal read forward >- operation, the X'02' command code has been redefined to be the >- IPL Read CCW, and a new X'06' command code has been defined to >- be the Read Forward CCW. The new Read Forward CCW, X'06', is >- subject to resetting event notification, as should be the case >- for normal read CCWs issued by applications or other host software. >- */ >- >- // PROGRAMMING NOTE: I'm not sure what they mean by "resetting >- // event notification" above, but for now we'll just FALL THROUGH >- // to the below IPL READ logic... >- >- // (purposely FALL THROUGH to below IPL READ logic for now) >- >- /*---------------------------------------------------------------*/ >- /* IPL READ (non-3590) */ >- /*---------------------------------------------------------------*/ >- case 0x02: >- /* Read a block from the tape according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- len=dev->tmh->read(dev,iobuf,unitstat,code); >- /* Exit with unit check status if read error condition */ >- if (len < 0) >- { >- break; >- } >- >- /* Calculate number of bytes to read and residual byte count */ >- num = (count < len) ? count : len; >- *residual = count - num; >- if(count < len) *more = 1; >- >- /* Save size and offset of data not used by this CCW */ >- dev->curblkrem = len - num; >- dev->curbufoff = num; >- >- /* Exit with unit exception status if tapemark was read */ >- if (!len) >- { >- build_senseX(TAPE_BSENSE_READTM,dev,unitstat,code); >- } >- else >- { >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- } >- >- break; >- >- /*---------------------------------------------------------------*/ >- /* CONTROL NO-OPERATION */ >- /*---------------------------------------------------------------*/ >- case 0x03: >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* REWIND */ >- /*---------------------------------------------------------------*/ >- case 0x07: >- if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >- TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_REWINDING; >- UpdateDisplay( dev ); >- } >- >- rc = dev->tmh->rewind(dev,unitstat,code); >- >- if ( TAPEDISPTYP_REWINDING == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- >- if ( rc < 0 ) >- { >- break; >- } >- /* Reset position counters to start of file */ >- >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* READ PREVIOUS (3590) */ >- /*---------------------------------------------------------------*/ >- case 0x0A: >- >- /* From: SG24-2506-01 "IBM 3590 Tape Subsystem Technical Guide" >- >- http://publibz.boulder.ibm.com/cgi-bin/bookmgr/FRAMESET/EZ309601/CCONTENTS?DT=19961211181910 >- >- 5.2.2 Read Previous to Replace Read Backward: >- >- The ESCON-attached Magstar tape drive does not support the >- Read Backward CCW (command code, X'0C'). It supports a new >- Read Previous CCW that allows processing of an IBM 3590 High >- Performance Tape Cartridge in the backward direction without >- the performance penalties that exist with the Read Backward >- CCW. IBM 3480 and 3490 devices had to reread the physical >- block from the medium for each request of a logical block. >- The Magstar tape drive retains the physical block in the >- device buffer and satisfies any subsequent Read Previous from >- the buffer, similar to how Read Forward operates. The Read >- Previous CCW operates somewhat like the Read Backward CCW >- in that it can be used to process the volumes in the backward >- direction. It is different from the Read Backward, however, >- because the data is transferred to the host in the same order >- in which it was written, rather than in reverse order like >- Read Backward. >- */ >- >- // PROGRAMMING NOTE: until we can add support to Hercules >- // allowing direct SCSI i/o (so that we can issue the 'Read >- // Reverse' command directly to the SCSI device), we will >- // simply FALL THROUGH to our existing "Read Backward" logic. >- >- // (purposely FALL THROUGH to the 'READ BACKWARD' logic below) >- >- /*---------------------------------------------------------------*/ >- /* READ BACKWARD */ >- /*---------------------------------------------------------------*/ >- case 0x0C: >- /* Backspace to previous block according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- rc=dev->tmh->bsb(dev,unitstat,code); >- if (rc < 0) >- { >- break; >+ ascii ? "ASCII " : "",lbltype, >+ volser, dev->devnum, dev->filename); > } >+ } >+ else >+ { >+ // If this is a mount or unmount request, inform the >+ // [Hercules] operator of the action they're expected to take... > >- /* Exit with unit exception status if tapemark was sensed */ >- if (!rc) >+ if ( unmountreq ) > { >- *residual = 0; >- build_senseX(TAPE_BSENSE_READTM,dev,unitstat,code); >- break; >- } >+ char* keep_or_retain = ""; > >- /* Now read in a forward direction the actual data block >- we just backspaced over */ >- len=dev->tmh->read(dev,iobuf,unitstat,code); >+ if ( 'K' == tapemsg[0] ) keep_or_retain = "and keep "; >+ if ( 'R' == tapemsg[0] ) keep_or_retain = "and retain "; > >- /* Exit with unit check status if read error condition */ >- if (len < 0) >- { >- break; >+ if ( scratch ) >+ { >+ logmsg(_("\n%s\nAUTOMOUNT: Unmount %sof %s%s scratch tape requested on %4.4X = %s\n%s\n\n"), >+ eyecatcher, >+ keep_or_retain, >+ ascii ? "ASCII " : "",lbltype, >+ dev->devnum, dev->filename, >+ eyecatcher ); >+ } >+ else >+ { >+ logmsg(_("\n%s\nAUTOMOUNT: Unmount %sof %s%s tape volume \"%s\" requested on %4.4X = %s\n%s\n\n"), >+ eyecatcher, >+ keep_or_retain, >+ ascii ? "ASCII " : "",lbltype, >+ volser, >+ dev->devnum, dev->filename, >+ eyecatcher ); >+ } > } >- >- /* Calculate number of bytes to read and residual byte count */ >- num = (count < len) ? count : len; >- *residual = count - num; >- if (count < len) *more = 1; >- >- /* Save size and offset of data not used by this CCW */ >- dev->curblkrem = len - num; >- dev->curbufoff = num; >- >- /* Backspace to previous block according to device type */ >- rc=dev->tmh->bsb(dev,unitstat,code); >- >- /* Exit with unit check status if error condition */ >- if (rc < 0) >+ if ( mountreq ) > { >- break; >+ if ( scratch ) >+ logmsg(_("\n%s\nAUTOMOUNT: Mount for %s%s scratch tape requested on %4.4X = %s\n%s\n\n"), >+ eyecatcher, >+ ascii ? "ASCII " : "",lbltype, >+ dev->devnum, dev->filename, >+ eyecatcher ); >+ else >+ logmsg(_("\n%s\nAUTOMOUNT: Mount for %s%s tape volume \"%s\" requested on %4.4X = %s\n%s\n\n"), >+ eyecatcher, >+ ascii ? "ASCII " : "",lbltype, >+ volser, >+ dev->devnum, dev->filename, >+ eyecatcher ); > } >+ } > >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* READ MEDIA CHARACTERISTICS (3590) */ >- /*---------------------------------------------------------------*/ >- case 0x62: >+} /* end function ReqAutoMount */ > >- /* From: SG24-2506-01 "IBM 3590 Tape Subsystem Technical Guide" > >- http://publibz.boulder.ibm.com/cgi-bin/bookmgr/FRAMESET/EZ309601/CCONTENTS?DT=19961211181910 >+/*-------------------------------------------------------------------*/ >+/* Get 3480/3490/3590 Display text in 'human' form */ >+/* If not a 3480/3490/3590, then just update status if a SCSI tape */ >+/*-------------------------------------------------------------------*/ >+void GetDisplayMsg( DEVBLK *dev, char *msgbfr, size_t lenbfr ) >+{ >+ msgbfr[0]=0; > >- 5.2.3 New Read Media Characteristics >+ if ( !dev->tdparms.displayfeat ) >+ { >+ // (drive doesn't have a display) >+#if defined(OPTION_SCSI_TAPE) >+ if (TAPEDEVT_SCSITAPE == dev->tapedevt) >+ int_scsi_status_update( dev, 1 ); >+#endif >+ return; >+ } > >- The new Read Media Characteristics CCW (command code x'62') >- provides up to 256 bytes of information about the media and >- formats supported by the Magstar tape drive. >- */ >+ if ( !IS_TAPEDISPTYP_SYSMSG( dev ) ) >+ { >+ // ------------------------- >+ // Display Host message >+ // ------------------------- > >- // ZZ FIXME: not coded yet. >+ // "When bit 3 (alternate) is set to 1, then >+ // bits 4 (blink) and 5 (low/high) are ignored." > >- /* Set command reject sense byte, and unit check status */ >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ strlcpy( msgbfr, "\"", lenbfr ); > >- /*---------------------------------------------------------------*/ >- /* REWIND UNLOAD */ >- /*---------------------------------------------------------------*/ >- case 0x0F: >- if ( dev->tdparms.displayfeat ) >+ if ( dev->tapedispflags & TAPEDISPFLG_ALTERNATE ) > { >- if ( TAPEDISPTYP_UMOUNTMOUNT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_MOUNT; >- dev->tapedispflags |= TAPEDISPFLG_REQAUTOMNT; >- strlcpy( dev->tapemsg1, dev->tapemsg2, sizeof(dev->tapemsg1) ); >- } >- else if ( TAPEDISPTYP_UNMOUNT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- } >- } >+ char msg1[9]; >+ char msg2[9]; > >- if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >- TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_UNLOADING; >- UpdateDisplay( dev ); >- } >+ strlcpy ( msg1, dev->tapemsg1, sizeof(msg1) ); >+ strlcat ( msg1, " ", sizeof(msg1) ); >+ strlcpy ( msg2, dev->tapemsg2, sizeof(msg2) ); >+ strlcat ( msg2, " ", sizeof(msg2) ); > >-#if defined(OPTION_SCSI_TAPE) >- if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >- rewind_unload_scsitape( dev, unitstat, code ); >+ strlcat ( msgbfr, msg1, lenbfr ); >+ strlcat ( msgbfr, "\" / \"", lenbfr ); >+ strlcat ( msgbfr, msg2, lenbfr ); >+ strlcat ( msgbfr, "\"", lenbfr ); >+ strlcat ( msgbfr, " (alternating)", lenbfr ); >+ } > else >-#endif >- dev->tmh->close(dev); >- >- if ( TAPEDISPTYP_UNLOADING == dev->tapedisptype ) > { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >+ if ( dev->tapedispflags & TAPEDISPFLG_MESSAGE2 ) >+ strlcat( msgbfr, dev->tapemsg2, lenbfr ); >+ else >+ strlcat( msgbfr, dev->tapemsg1, lenbfr ); >+ >+ strlcat ( msgbfr, "\"", lenbfr ); >+ >+ if ( dev->tapedispflags & TAPEDISPFLG_BLINKING ) >+ strlcat ( msgbfr, " (blinking)", lenbfr ); > } > >- dev->curfilen = 1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >+ if ( dev->tapedispflags & TAPEDISPFLG_AUTOLOADER ) >+ strlcat( msgbfr, " (AUTOLOADER)", lenbfr ); >+ >+ return; >+ } > >- UpdateDisplay( dev ); >+ // ---------------------------------------------- >+ // Display SYS message (Unit/Device message) >+ // ---------------------------------------------- > >- /* Status may require tweaking according to D/T */ >- /* this is what TAPEUNLOADED2 does */ >+ // First, build the system message, then move it into >+ // the caller's buffer... > >- rc=1; >- build_senseX(TAPE_BSENSE_TAPEUNLOADED2,dev,unitstat,code); >+ strlcpy( dev->tapesysmsg, "\"", sizeof(dev->tapesysmsg) ); > >- if ( dev->als ) >+ switch ( dev->tapedisptype ) >+ { >+ case TAPEDISPTYP_IDLE: >+ case TAPEDISPTYP_WAITACT: >+ default: >+ // Blank display if no tape loaded... >+ if ( !dev->tmh->tapeloaded( dev, NULL, 0 ) ) > { >- TID dummy_tid; >- char thread_name[64]; >- snprintf(thread_name,sizeof(thread_name), >- "autoload wait for %4.4X tapemount thread", >- dev->devnum); >- thread_name[sizeof(thread_name)-1]=0; >- create_thread( &dummy_tid, &sysblk.detattr, >- autoload_wait_for_tapemount_thread, >- dev, thread_name ); >+ strlcat( dev->tapesysmsg, " ", sizeof(dev->tapesysmsg) ); >+ break; > } > >- ReqAutoMount(dev); >- break; >+ // " NT RDY " if tape IS loaded, but not ready... >+ // (IBM docs say " NT RDY " means "Loaded but not ready") >+ >+ ASSERT( dev->tmh->tapeloaded( dev, NULL, 0 ) ); > >- /*---------------------------------------------------------------*/ >- /* ERASE GAP */ >- /*---------------------------------------------------------------*/ >- case 0x17: >- /* Unit check if tape is write-protected */ > if (0 >- || dev->readonly >+ || dev->fd < 0 > #if defined(OPTION_SCSI_TAPE) > || (1 >- && TAPEDEVT_SCSITAPE == dev->tapedevt >- && STS_WR_PROT( dev ) >+ && TAPEDEVT_SCSITAPE == dev->tapedevt >+ && !STS_ONLINE( dev ) > ) > #endif > ) > { >- build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >+ strlcat( dev->tapesysmsg, " NT RDY ", sizeof(dev->tapesysmsg) ); > break; > } > >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- >- if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >- dev->tmh->erg(dev,unitstat,code); >+ // Otherwise tape is loaded and ready --> "READY" > >- if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ ASSERT( dev->tmh->tapeloaded( dev, NULL, 0 ) ); > >- break; >+ strlcat ( dev->tapesysmsg, " READY ", sizeof(dev->tapesysmsg) ); >+ strlcat( dev->tapesysmsg, "\"", sizeof(dev->tapesysmsg) ); > >- /*---------------------------------------------------------------*/ >- /* DATA SECURITY ERASE */ >- /*---------------------------------------------------------------*/ >- case 0x97: >- /* Unit check if tape is write-protected */ > if (0 > || dev->readonly > #if defined(OPTION_SCSI_TAPE) >@@ -5660,980 +2134,443 @@ BYTE rustat; > ) > #endif > ) >- { >- build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >- break; >- } >- >- if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >- TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_ERASING; >- UpdateDisplay( dev ); >- } >- >- if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >- dev->tmh->dse(dev,unitstat,code); >- >- if ( TAPEDISPTYP_ERASING == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- >- if ( TAPEDEVT_SCSITAPE != dev->tapedevt ) >- /* Not yet implemented */ >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- >- break; >- >- /*---------------------------------------------------------------*/ >- /* WRITE TAPE MARK */ >- /*---------------------------------------------------------------*/ >- case 0x1F: >- /* Unit check if tape is write-protected */ >- if (dev->readonly) >- { >- build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); >- break; >- } >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- rc=dev->tmh->wtm(dev,unitstat,code); >- if(rc<0) >- { >- break; >- } >- >- dev->curfilen++; >- >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* READ BLOCK ID */ >- /*---------------------------------------------------------------*/ >- case 0x22: >- { >- BYTE blockid[8]; // (temp work) >- >- /* Calculate number of bytes and residual byte count */ >- len = 2*sizeof(dev->blockid); >- num = (count < len) ? count : len; >- *residual = count - num; >- if (count < len) *more = 1; >- >- /* Copy Block Id to channel I/O buffer... */ >- { >-#if defined(OPTION_SCSI_TAPE) >- struct mtpos mtpos; >- >- if (TAPEDEVT_SCSITAPE != dev->tapedevt >- // ZZ FIXME: The two blockid fields that READ BLOCK ID >- // are returning are the "Channel block ID" and "Device >- // block ID" fields (which correspond directly to the >- // SCSI "First block location" and "Last block location" >- // fields as returned by a READ POSITION scsi command), >- // so we really SHOULD be doing direct scsi i/o for our- >- // selves here (in order to retrieve BOTH of those values >- // for ourselves (since MTIOCPOS only returns one value >- // and not the other))... >- || ioctl_tape( dev->fd, MTIOCPOS, (char*) &mtpos ) < 0 ) >- { >-#endif >- // Either this is not a scsi tape, or else the MTIOCPOS >- // call failed; use our emulated blockid value... >- >- if (dev->poserror) >- { >- // ZZ FIXME: I hope this is right: if the current position >- // is unknown (invalid) due to a previous positioning error, >- // then return a known-to-be-invalid position value... >- >- memset( blockid, 0xFF, 4 ); >- } >- else >- { >- if (0x3590 == dev->devtype) >- { >- blockid[0] = (dev->blockid >> 24) & 0xFF; >- blockid[1] = (dev->blockid >> 16) & 0xFF; >- blockid[2] = (dev->blockid >> 8 ) & 0xFF; >- blockid[3] = (dev->blockid ) & 0xFF; >- } >- else // (3480 et. al) >- { >- blockid[0] = 0x01; >- blockid[1] = (dev->blockid >> 16) & 0x3F; >- blockid[2] = (dev->blockid >> 8 ) & 0xFF; >- blockid[3] = (dev->blockid ) & 0xFF; >- } >- } >-#if defined(OPTION_SCSI_TAPE) >- } >- else >- { >- // This IS a scsi tape *and* the MTIOCPOS call succeeded; >- // use the actual hardware blockid value as returned by >- // MTIOCPOS... >- >- // ZZ FIXME: Even though the two blockid fields that the >- // READ BLOCK ID ccw opcode returns ("Channel block ID" and >- // "Device block ID") happen to correspond directly to the >- // SCSI "First block location" and "Last block location" >- // fields (as returned by a READ POSITION scsi command), >- // MTIOCPOS unfortunately only returns one value and not the >- // other. Thus, until we can add code to Herc to do scsi i/o >- // directly for ourselves, we really have no choice but to >- // return the same value for both here... >- >- mtpos.mt_blkno = CSWAP32( mtpos.mt_blkno ); // (convert to guest format) >- blockid_actual_to_emulated( dev, (BYTE*)&mtpos.mt_blkno, blockid ); >- } >-#endif >- // We return the same values for both the "Channel block ID" >- // and "Device block ID"... >- >- memcpy( &blockid[4], &blockid[0], 4 ); >- } >- >- /* Copy Block Id value to channel I/O buffer... */ >- memcpy( iobuf, blockid, num ); >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- } >- >- /*---------------------------------------------------------------*/ >- /* BACKSPACE BLOCK */ >- /*---------------------------------------------------------------*/ >- case 0x27: >- /* Backspace to previous block according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- rc=dev->tmh->bsb(dev,unitstat,code); >- /* Exit with unit check status if error condition */ >- if (rc < 0) >- { >- break; >- } >- >- /* Exit with unit exception status if tapemark was sensed */ >- if (!rc) >- { >- build_senseX(TAPE_BSENSE_READTM,dev,unitstat,code); >- break; >- } >- >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* BACKSPACE FILE */ >- /*---------------------------------------------------------------*/ >- case 0x2F: >- /* Backspace to previous file according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- >- rc=dev->tmh->bsf(dev,unitstat,code); >- >- /* Exit with unit check status if error condition */ >- if (rc < 0) >- { >- break; >- } >- >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* FORWARD SPACE BLOCK */ >- /*---------------------------------------------------------------*/ >- case 0x37: >- /* Forward to next block according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- rc=dev->tmh->fsb(dev,unitstat,code); >- /* Exit with unit check status if error condition */ >- if (rc < 0) >- { >- break; >- } >- >- /* Exit with unit exception status if tapemark was sensed */ >- if (!rc) >- { >- build_senseX(TAPE_BSENSE_READTM,dev,unitstat,code); >- break; >- } >- >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* FORWARD SPACE FILE */ >- /*---------------------------------------------------------------*/ >- case 0x3F: >- /* Forward to next file according to device type */ >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >+ // (append "file protect" indicator) >+ strlcat ( dev->tapesysmsg, " *FP*", sizeof(dev->tapesysmsg) ); > >- rc=dev->tmh->fsf(dev,unitstat,code); >+ // Copy system message to caller's buffer >+ strlcpy( msgbfr, dev->tapesysmsg, lenbfr ); >+ return; > >- /* Exit with unit check status if error condition */ >- if (rc < 0) >- { >- break; >- } >+ case TAPEDISPTYP_ERASING: >+ strlcat ( dev->tapesysmsg, " ERASING", sizeof(dev->tapesysmsg) ); >+ break; > >- /* Set normal status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ case TAPEDISPTYP_REWINDING: >+ strlcat ( dev->tapesysmsg, "REWINDNG", sizeof(dev->tapesysmsg) ); > break; > >- /*---------------------------------------------------------------*/ >- /* SYNCHRONIZE */ >- /*---------------------------------------------------------------*/ >- case 0x43: >- if ( TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >+ case TAPEDISPTYP_UNLOADING: >+ strlcat ( dev->tapesysmsg, "UNLOADNG", sizeof(dev->tapesysmsg) ); > break; > >- /*---------------------------------------------------------------*/ >- /* LOCATE BLOCK */ >- /*---------------------------------------------------------------*/ >- case 0x4F: >- /* Check for minimum count field */ >- if (count < sizeof(dev->blockid)) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >+ case TAPEDISPTYP_CLEAN: >+ strlcat ( dev->tapesysmsg, "*CLEAN ", sizeof(dev->tapesysmsg) ); >+ break; >+ } > >- /* Block to seek */ >- ASSERT( count >= sizeof(locblock) ); >- FETCH_FW(locblock, iobuf); >- >- /* Check for invalid/reserved Format Mode bits */ >- if (0x3590 != dev->devtype && >- 0x00C00000 == (locblock & 0x00C00000)) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >+ strlcat( dev->tapesysmsg, "\"", sizeof(dev->tapesysmsg) ); > >- if (0x3590 != dev->devtype) /* Added by Fish */ >-// locblock &= 0x003FFFFF; /* Re-applied by Adrian */ >- locblock &= 0xFF3FFFFF; /* Changed by Fish */ >- >- /* Calculate residual byte count */ >- len = sizeof(locblock); >- num = (count < len) ? count : len; >- *residual = count - num; >- >- /* Informative message if tracing */ >- if ( dev->ccwtrace || dev->ccwstep ) >- logmsg(_("HHCTA081I Locate block 0x%8.8"I32_FMT"X on %s%s%4.4X\n") >- ,locblock >- ,TAPEDEVT_SCSITAPE == dev->tapedevt ? (char*)dev->filename : "" >- ,TAPEDEVT_SCSITAPE == dev->tapedevt ? " = " : "" >- ,dev->devnum >- ); >- >- /* Update display if needed */ >- if ( TAPEDISPTYP_IDLE == dev->tapedisptype || >- TAPEDISPTYP_WAITACT == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_LOCATING; >- UpdateDisplay( dev ); >- } >+ // Copy system message to caller's buffer >+ strlcpy( msgbfr, dev->tapesysmsg, lenbfr ); > >- /* Start of block locate code */ >- { >-#if defined(OPTION_SCSI_TAPE) >- struct mtop mtop; >+} /* end function GetDisplayMsg */ > >- mtop.mt_op = MTSEEK; > >- locblock = CSWAP32( locblock ); // (convert to guest format) >- blockid_emulated_to_actual( dev, (BYTE*)&locblock, (BYTE*)&mtop.mt_count ); >- mtop.mt_count = CSWAP32( mtop.mt_count ); // (convert back to host format) >- >- /* Let the hardware do the locate if this is a SCSI drive; >- Else do it the hard way if it's not (or an error occurs) */ >- if (TAPEDEVT_SCSITAPE != dev->tapedevt >- || (rc = ioctl_tape( dev->fd, MTIOCTOP, (char*) &mtop )) < 0 ) >-#endif >+/*-------------------------------------------------------------------*/ >+/* IsAtLoadPoint */ >+/*-------------------------------------------------------------------*/ >+/* Called by the device-type-specific 'build_sense_xxxx' functions */ >+/* (indirectly via the 'build_senseX' function) when building sense */ >+/* for any i/o error (non-"TAPE_BSENSE_STATUSONLY" type call) */ >+/*-------------------------------------------------------------------*/ >+int IsAtLoadPoint (DEVBLK *dev) >+{ >+int ldpt=0; >+ if ( dev->fd >= 0 ) >+ { >+ /* Set load point indicator if tape is at load point */ >+ switch (dev->tapedevt) >+ { >+ default: >+ case TAPEDEVT_AWSTAPE: >+ if (dev->nxtblkpos==0) > { >- rc=dev->tmh->rewind(dev,unitstat,code); >- if(rc<0) >- { >- // ZZ FIXME: shouldn't we be returning >- // some type of unit-check here?? >- // SENSE1_TAPE_RSE?? >- dev->poserror = 1; // (because the rewind failed) >- } >- else >- { >- /* Reset position counters to start of file */ >- dev->curfilen = 1; >- dev->nxtblkpos = 0; >- dev->prvblkpos = -1; >- dev->blockid = 0; >- dev->poserror = 0; >- >- /* Do it the hard way */ >- while(dev->blockid < locblock && ( rc >= 0 )) >- { >- rc=dev->tmh->fsb(dev,unitstat,code); >- } >- } >+ ldpt=1; > } >- } >- >- /* Update display if needed */ >- if ( TAPEDISPTYP_LOCATING == dev->tapedisptype ) >- { >- dev->tapedisptype = TAPEDISPTYP_IDLE; >- UpdateDisplay( dev ); >- } >- >- if (rc < 0) >- { >- // ZZ FIXME: shouldn't we be returning >- // some type of unit-check here?? >- // SENSE1_TAPE_RSE?? >- dev->poserror = 1; // (because the locate failed) > break; >- } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* PERFORM SUBSYSTEM FUNCTION */ >- /*---------------------------------------------------------------*/ >- case 0x77: >- /* By Adrian Trenkwalder */ > >- /* Byte 0 is the PSF order */ >- switch(iobuf[0]) >- { >- /*-----------------------------------------------------------*/ >- /* Activate/Deactivate Forced Error Logging */ >- /* 0x8000nn / 0x8100nn */ >- /*-----------------------------------------------------------*/ >- case PSF_ORDER_AFEL: >- case PSF_ORDER_DFEL: >- /* Calculate residual byte count */ >- num = (count < 3) ? count : 3; >- *residual = count - num; >- >- /* Control information length must be at least 3 bytes */ >- /* and the flag byte must be zero for all orders */ >- if ( (count < 3) >- || (iobuf[1] != PSF_FLAG_ZERO) >- || ((iobuf[2] != PSF_ACTION_FEL_IMPLICIT) >- && (iobuf[2] != PSF_ACTION_FEL_EXPLICIT)) >- ) >+ case TAPEDEVT_HETTAPE: >+ if (dev->hetb->cblk == 0) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ ldpt=1; > } >- >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); > break; > >- /*-----------------------------------------------------------*/ >- /* Activate/Deactivate Access Control */ >- /* 0x8200nn / 0x8300nn */ >- /*-----------------------------------------------------------*/ >- case PSF_ORDER_AAC: >- case PSF_ORDER_DAC: >- /* Calculate residual byte count */ >- num = (count < 4) ? count : 4; >- *residual = count - num; >- >- /* Control information length must be at least 4 bytes */ >- /* and the flag byte must be zero for all orders */ >- if ( (count < 3) >- || (iobuf[1] != PSF_FLAG_ZERO) >- || ((iobuf[2] != PSF_ACTION_AC_LWP) >- && (iobuf[2] != PSF_ACTION_AC_DCD) >- && (iobuf[2] != PSF_ACTION_AC_DCR) >- && (iobuf[2] != PSF_ACTION_AC_ER)) >- ) >+#if defined(OPTION_SCSI_TAPE) >+ case TAPEDEVT_SCSITAPE: >+ int_scsi_status_update( dev, 0 ); // (internal call) >+ if ( STS_BOT( dev ) ) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ dev->eotwarning = 0; >+ ldpt=1; > } >+ break; >+#endif /* defined(OPTION_SCSI_TAPE) */ > >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*-----------------------------------------------------------*/ >- /* Reset Volume Fenced */ >- /* 0x9000 */ >- /*-----------------------------------------------------------*/ >- case PSF_ORDER_RVF: >- /* Calculate residual byte count */ >- num = (count < 2) ? count : 2; >- *residual = count - num; >- >- /* Control information length must be at least 2 bytes */ >- /* and the flag byte must be zero for all orders */ >- if ( (count < 2) >- || (iobuf[1] != PSF_FLAG_ZERO) >- ) >+ case TAPEDEVT_OMATAPE: >+ if (dev->nxtblkpos == 0 && dev->curfilen == 1) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ ldpt=1; > } >+ break; >+ } /* end switch(dev->tapedevt) */ >+ } >+ else // ( dev->fd < 0 ) >+ { >+ if ( TAPEDEVT_SCSITAPE == dev->tapedevt ) >+ ldpt=0; /* (tape cannot possibly be at loadpoint >+ if the device cannot even be opened!) */ >+ else if ( strcmp( dev->filename, TAPE_UNLOADED ) != 0 ) >+ { >+ /* If the tape has a filename but the tape is not yet */ >+ /* opened, then we are at loadpoint */ >+ ldpt=1; >+ } >+ } >+ return ldpt; > >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*-----------------------------------------------------------*/ >- /* Pin Device */ >- /* 0xA100nn */ >- /*-----------------------------------------------------------*/ >- case PSF_ORDER_PIN_DEV: >- /* Calculate residual byte count */ >- num = (count < 3) ? count : 3; >- *residual = count - num; >- >- /* Control information length must be at least 3 bytes */ >- /* and the flag byte must be zero for all orders */ >- if ( (count < 3) >- || (iobuf[1] != PSF_FLAG_ZERO) >- || ((iobuf[2] != PSF_ACTION_PIN_CU0) >- && (iobuf[2] != PSF_ACTION_PIN_CU1)) >- ) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >+} /* end function IsAtLoadPoint */ > >- /*-----------------------------------------------------------*/ >- /* Unpin Device */ >- /* 0xA200 */ >- /*-----------------------------------------------------------*/ >- case PSF_ORDER_UNPIN_DEV: >- /* Calculate residual byte count */ >- num = (count < 2) ? count : 2; >- *residual = count - num; >- >- /* Control information length must be at least 2 bytes */ >- /* and the flag byte must be zero for all orders */ >- if ( (count < 2) >- || (iobuf[1] != PSF_FLAG_ZERO) >- ) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; > >- /*-----------------------------------------------------------*/ >- /* Not yet supported */ >- /* 0x180000000000mm00iiiiii Prepare for Read Subsystem Data */ >- /* 0x1B00 Set Special Intercept Condition */ >- /* 0x1C00xxccnnnn0000iiiiii..Message Not Supported */ >- /*-----------------------------------------------------------*/ >- case PSF_ORDER_PRSD: >- case PSF_ORDER_SSIC: >- case PSF_ORDER_MNS: >- // Fall through >- default: >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } /* End switch iobuf */ >- break; >+/*********************************************************************/ >+/*********************************************************************/ >+/** **/ >+/** AUTOLOADER FUNCTIONS **/ >+/** **/ >+/*********************************************************************/ >+/*********************************************************************/ > >- /*---------------------------------------------------------------*/ >- /* Control Access */ >- /*---------------------------------------------------------------*/ >- case 0xE3: >- /* By Adrian Trenkwalder */ >- >- /* Calculate residual byte count */ >- num = (count < 12) ? count : 12; >- *residual = count - num; >+/*-------------------------------------------------------------------*/ >+/* autoload_init */ >+/*-------------------------------------------------------------------*/ >+/* initialise the Autoloader feature */ >+/*-------------------------------------------------------------------*/ >+void autoload_init(DEVBLK *dev,int ac,char **av) >+{ >+ char bfr[4096]; >+ char *rec; >+ FILE *aldf; >+ char *verb; >+ int i; >+ char *strtokw; >+ char pathname[MAX_PATH]; > >- /* Control information length must be at least 12 bytes */ >- if (count < 12) >+ autoload_close(dev); >+ if(ac<1) >+ { >+ return; >+ } >+ if(av[0][0]!='@') >+ { >+ return; >+ } >+ logmsg(_("TAPE: Autoloader file request fn=%s\n"),&av[0][1]); >+ hostpath(pathname, &av[0][1], sizeof(pathname)); >+ if(!(aldf=fopen(pathname,"r"))) >+ { >+ return; >+ } >+ for(i=1;i<ac;i++) >+ { >+ autoload_global_parms(dev,av[i]); >+ } >+ while((rec=fgets(bfr,4096,aldf))) >+ { >+ for(i=(strlen(rec)-1);isspace(rec[i]) && i>=0;i--) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ rec[i]=0; > } >- >- /* Byte 0 is the CAC mode-of-use */ >- switch(iobuf[0]) >+ if(strlen(rec)==0) > { >- /*-----------------------------------------------------------*/ >- /* Set Password */ >- /* 0x00nnnnnnnnnnnnnnnnnnnnnn */ >- /*-----------------------------------------------------------*/ >- case CAC_SET_PASSWORD: >- /* Password must not be zero */ >- /* and the device path must be Explicitly Enabled */ >- if (( memcmp(iobuf+1,"\00\00\00\00\00\00\00\00\00\00\00",11)==0) >- ||((dev->pgstat & SPG_PARTSTAT_XENABLED) == 0) ) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >- /* Set Password if none set yet */ >- if (memcmp(dev->drvpwd,"\00\00\00\00\00\00\00\00\00\00\00",11)==0) >- { >- memcpy(dev->drvpwd,iobuf+1,11); >- } >- /* Password already set - they must match */ >- else >- { >- if (memcmp(dev->drvpwd,iobuf+1,11)!=0) >+ continue; >+ } >+ verb=strtok_r(rec," \t",&strtokw); >+ if(verb==NULL) >+ { >+ continue; >+ } >+ if(verb[0]==0) >+ { >+ continue; >+ } >+ if(verb[0]=='#') >+ { >+ continue; >+ } >+ if(strcmp(verb,"*")==0) >+ { >+ while((verb=strtok_r(NULL," \t",&strtokw))) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >+ autoload_global_parms(dev,verb); > } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*-----------------------------------------------------------*/ >- /* Conditional Enable */ >- /* 0x80nnnnnnnnnnnnnnnnnnnnnn */ >- /*-----------------------------------------------------------*/ >- case CAC_COND_ENABLE: >- /* A drive password must be set and it must match the one given as input */ >- if ( (memcmp(dev->drvpwd,"\00\00\00\00\00\00\00\00\00\00\00",11)==0) >- ||(memcmp(dev->drvpwd,iobuf+1,11)!=0) >- ) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*-----------------------------------------------------------*/ >- /* Conditional Disable */ >- /* 0x40nnnnnnnnnnnnnnnnnnnnnn */ >- /*-----------------------------------------------------------*/ >- case CAC_COND_DISABLE: >- /* A drive password is set, it must match the one given as input */ >- if ( (memcmp(dev->drvpwd,"\00\00\00\00\00\00\00\00\00\00\00",11)!=0) >- &&(memcmp(dev->drvpwd,iobuf+1,11)!=0) >- ) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ continue; > } >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- default: >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } /* End switch iobuf */ >- break; >- >- /*---------------------------------------------------------------*/ >- /* READ SUBSYSTEM DATA (3590) */ >- /*---------------------------------------------------------------*/ >- case 0x3E: >- >- // ZZ FIXME: not coded yet. >- >- /* Set command reject sense byte, and unit check status */ >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* MODE SET (non-cartidge drives?) */ >- /*---------------------------------------------------------------*/ >- case 0xCB: /* 9-track 800 bpi */ >- case 0xC3: /* 9-track 1600 bpi */ >- case 0xD3: /* 9-track 6250 bpi */ >- /* Patch to no-op modeset 1 (7-track) commands - */ >- /* causes VM problems */ >- /* */ >- /* Andy Norrie 2002/10/06 */ >- case 0x13: >- case 0x33: >- case 0x3B: >- case 0x23: >- case 0x53: >- case 0x73: >- case 0x7B: >- case 0x63: >- case 0x6B: >- case 0x93: >- case 0xB3: >- case 0xBB: >- case 0xA3: >- case 0xAB: >- case 0xEB: /* invalid mode set issued by DOS/VS */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* MODE SENSE (3590) */ >- /*---------------------------------------------------------------*/ >- case 0xCF: >- >- // ZZ FIXME: not written yet. >- >- // For now, just treat identically to above MODE SET. >+ autoload_tape_entry(dev,verb,&strtokw); >+ } // end while((rec=fgets(bfr,4096,aldf))) >+ fclose(aldf); >+ return; > >- // NOTE: Might possibly be able to be moved/combined into >- // the previous 'MODE SET' logic?? >+} /* end function autoload_init */ > >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; > >- /*---------------------------------------------------------------*/ >- /* MODE SET (3480/3490/3590 cartidge drives only?) */ >- /*---------------------------------------------------------------*/ >- case 0xDB: /* 3480 mode set */ >- /* Check for count field at least 1 */ >- if (count < 1) >+/*-------------------------------------------------------------------*/ >+/* autoload_close */ >+/*-------------------------------------------------------------------*/ >+/* terminate autoloader operations: release all storage that */ >+/* was allocated by the autoloader facility */ >+/*-------------------------------------------------------------------*/ >+void autoload_close(DEVBLK *dev) >+{ >+ int i; >+ if(dev->al_argv!=NULL) >+ { >+ for(i=0;i<dev->al_argc;i++) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ free(dev->al_argv[i]); >+ dev->al_argv[i]=NULL; > } >- *residual = count - 1; >- /* FIXME: Handle Supervisor Inhibit and IDRC bits */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* Read and Reset Buffered Log (9347) */ >- /*---------------------------------------------------------------*/ >- case 0xA4: >- /* Calculate residual byte count */ >- num = (count < dev->numsense) ? count : dev->numsense; >- *residual = count - num; >- if (count < dev->numsense) *more = 1; >- >- /* Reset SENSE Data */ >- memset (dev->sense, 0, sizeof(dev->sense)); >- *unitstat=CSW_CE|CSW_DE; >- >- /* Copy device Buffered log data (Bunch of 0s for now) */ >- memcpy (iobuf, dev->sense, num); >- >- /* Indicate Contengency Allegiance has been cleared */ >- dev->sns_pending=0; >- break; >- >- /*---------------------------------------------------------------*/ >- /* MEDIUM SENSE (3590) */ >- /*---------------------------------------------------------------*/ >- case 0xC2: >- >- // Similar to (if not identical to) SCSI "Test Unit Ready" >- // command. Basically just used to determine whether there >- // is a tape mounted on the drive or not. >- >- // (purposely FALL THROUGH to the normal 'SENSE' logic below) >- >- /*---------------------------------------------------------------*/ >- /* SENSE */ >- /*---------------------------------------------------------------*/ >- case 0x04: >- /* Calculate residual byte count */ >- num = (count < dev->numsense) ? count : dev->numsense; >- *residual = count - num; >- if (count < dev->numsense) *more = 1; >- >- /* If a sense is pending, use it. */ >- /* Otherwise, build a STATUS sense */ >- >- if(!dev->sns_pending) >+ free(dev->al_argv); >+ dev->al_argv=NULL; >+ dev->al_argc=0; >+ } >+ dev->al_argc=0; >+ if(dev->als!=NULL) >+ { >+ for(i=0;i<dev->alss;i++) > { >- build_senseX(TAPE_BSENSE_UNSOLICITED,dev,unitstat,code); >+ autoload_clean_entry(dev,i); > } >- *unitstat=CSW_CE|CSW_DE; /* Need to do that ourselves because */ >- /* we might not have gone through */ >- /* build_senseX */ >- >- /* Copy device sense bytes to channel I/O buffer */ >- memcpy (iobuf, dev->sense, num); >- >- /* Clear the device sense bytes */ >- memset (dev->sense, 0, sizeof(dev->sense)); >- >- /* Indicate Contengency Allegiance has been cleared */ >- dev->sns_pending=0; >- break; >- >- /*---------------------------------------------------------------*/ >- /* READ BUFFERED LOG */ >- /*---------------------------------------------------------------*/ >- case 0x24: >- /* Calculate residual byte count */ >- num = (count < 64) ? count : 64; >- *residual = count - num; >- if (count < 64) *more = 1; >- >- /* Clear the device sense bytes */ >- memset (iobuf, 0, num); >- >- /* Copy device sense bytes to channel I/O buffer */ >- memcpy (iobuf, dev->sense, >- dev->numsense < (U32)num ? dev->numsense : (U32)num); >+ free(dev->als); >+ dev->als=NULL; >+ dev->alss=0; >+ } >+} /* end function autoload_close */ > >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; > >- /*---------------------------------------------------------------*/ >- /* SENSE ID */ >- /*---------------------------------------------------------------*/ >- case 0xE4: >- /* SENSE ID did not exist on the 3803 */ >- /* Changed logic: numdevid is 0 if 0xE4 not supported */ >- if (!dev->numdevid) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >+/*-------------------------------------------------------------------*/ >+/* autoload_clean_entry */ >+/*-------------------------------------------------------------------*/ >+/* release storage allocated for an autoloader slot */ >+/* (except the slot itself) */ >+/*-------------------------------------------------------------------*/ >+void autoload_clean_entry(DEVBLK *dev,int ix) >+{ >+ int i; >+ for(i=0;i<dev->als[ix].argc;i++) >+ { >+ free(dev->als[ix].argv[i]); >+ dev->als[ix].argv[i]=NULL; >+ } >+ dev->als[ix].argc=0; >+ if(dev->als[ix].filename!=NULL) >+ { >+ free(dev->als[ix].filename); >+ dev->als[ix].filename=NULL; >+ } >+} /* end function autoload_clean_entry */ > >- /* Calculate residual byte count */ >- num = (count < dev->numdevid) ? count : dev->numdevid; >- *residual = count - num; >- if (count < dev->numdevid) *more = 1; > >- /* Copy device identifier bytes to channel I/O buffer */ >- memcpy (iobuf, dev->devid, num); >+/*-------------------------------------------------------------------*/ >+/* autoload_global_parms */ >+/*-------------------------------------------------------------------*/ >+/* Appends a blank delimited word to the list of parameters */ >+/* that will be passed for every tape mounted by the autoloader */ >+/*-------------------------------------------------------------------*/ >+void autoload_global_parms(DEVBLK *dev,char *par) >+{ >+ logmsg(_("TAPE Autoloader - Adding global parm %s\n"),par); >+ if(dev->al_argv==NULL) >+ { >+ dev->al_argv=malloc(sizeof(char *)*256); >+ dev->al_argc=0; >+ } >+ dev->al_argv[dev->al_argc]=(char *)malloc(strlen(par)+sizeof(char)); >+ strcpy(dev->al_argv[dev->al_argc],par); >+ dev->al_argc++; > >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >+} /* end function autoload_global_parms */ > >- /*---------------------------------------------------------------*/ >- /* SENSE PATH GROUP ID */ >- /*---------------------------------------------------------------*/ >- case 0x34: >- /* Calculate residual byte count */ >- num = (count < 12) ? count : 12; >- *residual = count - num; >- if (count < 12) *more = 1; >- >- /* Byte 0 is the path group state byte */ >- /* >- iobuf[0] = SPG_PATHSTAT_RESET >- | SPG_PARTSTAT_IENABLED >- | SPG_PATHMODE_SINGLE; >- */ >- iobuf[0]=dev->pgstat; > >- /* Bytes 1-11 contain the path group identifier */ >- if(num>1) >+/*-------------------------------------------------------------------*/ >+/* autoload_tape_entry */ >+/*-------------------------------------------------------------------*/ >+/* populate an autoloader slot (creates new slot if needed) */ >+/*-------------------------------------------------------------------*/ >+void autoload_tape_entry(DEVBLK *dev,char *fn,char **strtokw) >+{ >+ char *p; >+ TAPEAUTOLOADENTRY tae; >+ logmsg(_("TAPE Autoloader: Adding tape entry %s\n"),fn); >+ memset(&tae,0,sizeof(tae)); >+ tae.filename=malloc(strlen(fn)+sizeof(char)+1); >+ strcpy(tae.filename,fn); >+ while((p=strtok_r(NULL," \t",strtokw))) >+ { >+ if(tae.argv==NULL) > { >- memcpy (iobuf+1, dev->pgid, num-1); >+ tae.argv=malloc(sizeof(char *)*256); > } >+ tae.argv[tae.argc]=malloc(strlen(p)+sizeof(char)+1); >+ strcpy(tae.argv[tae.argc],p); >+ tae.argc++; >+ } >+ if(dev->als==NULL) >+ { >+ dev->als=malloc(sizeof(tae)); >+ dev->alss=0; >+ } >+ else >+ { >+ dev->als=realloc(dev->als,sizeof(tae)*(dev->alss+1)); >+ } >+ memcpy(&dev->als[dev->alss],&tae,sizeof(tae)); >+ dev->alss++; > >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* SET PATH GROUP ID */ >- /*---------------------------------------------------------------*/ >- case 0xAF: >- >- /* Calculate residual byte count */ >- num = (count < 12) ? count : 12; >- *residual = count - num; >+} /* end function autoload_tape_entry */ > >- /* Control information length must be at least 12 bytes */ >- if (count < 12) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } > >- /* Byte 0 is the path group state byte */ >- switch((iobuf[0] & SPG_SET_COMMAND)) >- { >- case SPG_SET_ESTABLISH: >- /* Only accept the new pathgroup id when >- 1) it has not yet been set (ie contains zeros) or >- 2) It is set, but we are setting the same value */ >- if(memcmp(dev->pgid, >- "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 11) >- && memcmp(dev->pgid, iobuf+1, 11)) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >- /* Bytes 1-11 contain the path group identifier */ >- memcpy (dev->pgid, iobuf+1, 11); >- dev->pgstat=SPG_PATHSTAT_GROUPED|SPG_PARTSTAT_IENABLED; >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- case SPG_SET_RESIGN: >- default: >- dev->pgstat=0; >- memset(dev->pgid,0,11); >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- case SPG_SET_DISBAND: >- dev->pgstat=0; >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- } // end switch((iobuf[0] & SPG_SET_COMMAND)) >- break; >+/*-------------------------------------------------------------------*/ >+/* autoload_wait_for_tapemount_thread */ >+/*-------------------------------------------------------------------*/ >+void *autoload_wait_for_tapemount_thread(void *db) >+{ >+int rc = -1; >+DEVBLK *dev = (DEVBLK*) db; > >- /*---------------------------------------------------------------*/ >- /* READ DEVICE CHARACTERISTICS */ >- /*---------------------------------------------------------------*/ >- case 0x64: >- /* Command reject if device characteristics not available */ >- if (!dev->numdevchar) >+ obtain_lock(&dev->lock); >+ { >+ while >+ ( >+ dev->als >+ && >+ (rc = autoload_mount_next( dev )) != 0 >+ ) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >+ release_lock( &dev->lock ); >+ SLEEP(AUTOLOAD_WAIT_FOR_TAPEMOUNT_INTERVAL_SECS); >+ obtain_lock( &dev->lock ); > } >+ } >+ release_lock(&dev->lock); >+ if ( rc == 0 ) >+ device_attention(dev,CSW_DE); >+ return NULL; > >- /* Calculate residual byte count */ >- num = (count < dev->numdevchar) ? count : dev->numdevchar; >- *residual = count - num; >- if (count < dev->numdevchar) *more = 1; >- >- /* Copy device characteristics bytes to channel buffer */ >- memcpy (iobuf, dev->devchar, num); >+} /* end function autoload_wait_for_tapemount_thread */ > >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; > >- /*---------------------------------------------------------------*/ >- /* LOAD DISPLAY */ >- /*---------------------------------------------------------------*/ >- case 0x9F: >- /* Calculate residual byte count */ >- num = (count < 17) ? count : 17; >- *residual = count - num; >+/*-------------------------------------------------------------------*/ >+/* autoload_mount_first */ >+/*-------------------------------------------------------------------*/ >+/* mount in the drive the tape which is */ >+/* positionned in the 1st autoloader slot */ >+/*-------------------------------------------------------------------*/ >+int autoload_mount_first(DEVBLK *dev) >+{ >+ dev->alsix=0; >+ return(autoload_mount_tape(dev,0)); >+} > >- /* Issue message on 3480 matrix display */ >- load_display (dev, iobuf, count); > >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >+/*-------------------------------------------------------------------*/ >+/* autoload_mount_next */ >+/*-------------------------------------------------------------------*/ >+/* mount in the drive the tape whch is */ >+/* positionned in the slot after the currently mounted tape. */ >+/* if this is the last tape, close the autoloader */ >+/*-------------------------------------------------------------------*/ >+int autoload_mount_next(DEVBLK *dev) >+{ >+ if(dev->alsix>=dev->alss) >+ { >+ autoload_close(dev); >+ return -1; >+ } >+ dev->alsix++; >+ return(autoload_mount_tape(dev,dev->alsix)); >+} > >- /*---------------------------------------------------------------*/ >- /* ASSIGN */ >- /*---------------------------------------------------------------*/ >- case 0xB7: >- /* Calculate residual byte count */ >- num = (count < 11) ? count : 11; >- *residual = count - num; > >- /* Control information length must be at least 11 bytes */ >- if (count < 11) >- { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- break; >- } >- if((memcmp(iobuf,"\00\00\00\00\00\00\00\00\00\00",11)==0) >- || (memcmp(iobuf,dev->pgid,11)==0)) >- { >- dev->pgstat|=SPG_PARTSTAT_XENABLED; /* Set Explicit Partition Enabled */ >- } >- else >+/*-------------------------------------------------------------------*/ >+/* autoload_mount_tape */ >+/*-------------------------------------------------------------------*/ >+/* mount in the drive the tape which is */ >+/* positionned in the autoloader slot #alix */ >+/*-------------------------------------------------------------------*/ >+int autoload_mount_tape(DEVBLK *dev,int alix) >+{ >+ char **pars; >+ int pcount=1; >+ int i; >+ int rc; >+ if(alix>=dev->alss) >+ { >+ return -1; >+ } >+ pars=malloc(sizeof(BYTE *)*256); >+ pars[0]=dev->als[alix].filename; >+ for(i=0;i<dev->al_argc;i++,pcount++) >+ { >+ pars[pcount]=malloc(strlen(dev->al_argv[i])+10); >+ strcpy(pars[pcount],dev->al_argv[i]); >+ if(pcount>255) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); > break; > } >- >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* UNASSIGN */ >- /*---------------------------------------------------------------*/ >- case 0xC7: >- /* Calculate residual byte count */ >- num = (count < 11) ? count : 11; >- *residual = count - num; >- >- /* Control information length must be at least 11 bytes */ >- if (count < 11) >+ } >+ for(i=0;i<dev->als[alix].argc;i++,pcount++) >+ { >+ pars[pcount]=malloc(strlen(dev->als[alix].argv[i])+10); >+ strcpy(pars[pcount],dev->als[alix].argv[i]); >+ if(pcount>255) > { >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); > break; > } >+ } >+ rc=mountnewtape(dev,pcount,pars); >+ for(i=1;i<pcount;i++) >+ { >+ free(pars[i]); >+ } >+ free(pars); >+ return(rc); > >- dev->pgstat=0; /* Reset to All Implicitly enabled */ >- memset(dev->pgid,0,11); /* Reset Path group ID password */ >- /* Drive Password - Adrian */ >- memset(dev->drvpwd,0,sizeof(dev->drvpwd)); /* Reset drive password */ >- >- >- /* Return unit status */ >- build_senseX(TAPE_BSENSE_STATUSONLY,dev,unitstat,code); >- break; >- >- /*---------------------------------------------------------------*/ >- /* INVALID OPERATION */ >- /*---------------------------------------------------------------*/ >- default: >- /* Set command reject sense byte, and unit check status */ >- build_senseX(TAPE_BSENSE_BADCOMMAND,dev,unitstat,code); >- >- } /* end switch(code) */ >+} /* end function autoload_mount_tape */ > >-} /* end function tapedev_execute_ccw */ > > /*-------------------------------------------------------------------*/ >- >-static int is_tapeloaded_filename(DEVBLK *dev,BYTE *unitstat,BYTE code) >+/* is_tapeloaded_filename */ >+/*-------------------------------------------------------------------*/ >+int is_tapeloaded_filename ( DEVBLK *dev, BYTE *unitstat, BYTE code ) > { > UNREFERENCED(unitstat); > UNREFERENCED(code); > // true 1 == tape loaded, false 0 == tape not loaded > return strcmp( dev->filename, TAPE_UNLOADED ) != 0 ? 1 : 0; > } >-static int return_false1(DEVBLK *dev) >+ >+/*-------------------------------------------------------------------*/ >+/* return_false1 */ >+/*-------------------------------------------------------------------*/ >+int return_false1 ( DEVBLK *dev ) > { > UNREFERENCED(dev); > return 0; > } >-static int write_READONLY(DEVBLK *dev,BYTE *unitstat,BYTE code) >+ >+/*-------------------------------------------------------------------*/ >+/* write_READONLY */ >+/*-------------------------------------------------------------------*/ >+int write_READONLY ( DEVBLK *dev, BYTE *unitstat, BYTE code ) > { > build_senseX(TAPE_BSENSE_WRITEPROTECT,dev,unitstat,code); > return -1; > } >-static int write_READONLY5(DEVBLK *dev,BYTE *bfr,U16 blklen,BYTE *unitstat,BYTE code) >+ >+/*-------------------------------------------------------------------*/ >+/* write_READONLY5 */ >+/*-------------------------------------------------------------------*/ >+int write_READONLY5 ( DEVBLK *dev, BYTE *bfr, U16 blklen, BYTE *unitstat, BYTE code ) > { > UNREFERENCED(bfr); > UNREFERENCED(blklen); >@@ -6642,166 +2579,108 @@ static int write_READONLY5(DEVBLK *dev,B > } > > /*-------------------------------------------------------------------*/ >-/* (see 'tapedev.h' for layout of TAPEMEDIA_HANDLER structure) */ >+/* no_operation */ > /*-------------------------------------------------------------------*/ >+int no_operation ( DEVBLK *dev, BYTE *unitstat, BYTE code ) >+{ >+ build_senseX( TAPE_BSENSE_STATUSONLY, dev, unitstat, code ); >+ return 0; >+} > >-static TAPEMEDIA_HANDLER tmh_aws = { >- &open_awstape, >- &close_awstape, >- &read_awstape, >- &write_awstape, >- &rewind_awstape, >- &bsb_awstape, >- &fsb_awstape, >- &bsf_awstape, >- &fsf_awstape, >- &write_awsmark, >- NULL, /* DSE */ >- NULL, /* ERG */ >- &is_tapeloaded_filename, >- passedeot_awstape >-}; >+/*-------------------------------------------------------------------*/ >+/* readblkid_virtual */ >+/*-------------------------------------------------------------------*/ >+int readblkid_virtual ( DEVBLK* dev, BYTE* logical, BYTE* physical ) >+{ >+ // NOTE: returned value is always in guest BIG-ENDIAN format... > >-static TAPEMEDIA_HANDLER tmh_het = { >- &open_het, >- &close_het, >- &read_het, >- &write_het, >- &rewind_het, >- &bsb_het, >- &fsb_het, >- &bsf_het, >- &fsf_het, >- &write_hetmark, >- NULL, /* DSE */ >- NULL, /* ERG */ >- &is_tapeloaded_filename, >- passedeot_het >-}; >+ BYTE blockid[4]; > >-#if defined(OPTION_SCSI_TAPE) >+ if (0x3590 == dev->devtype) >+ { >+ // Full 32-bit block-id... > >-static TAPEMEDIA_HANDLER tmh_scsi = { >- &open_scsitape, >- &close_scsitape, >- &read_scsitape, >- &write_scsitape, >- &rewind_scsitape, >- &bsb_scsitape, >- &fsb_scsitape, >- &bsf_scsitape, >- &fsf_scsitape, >- &write_scsimark, >- &dse_scsitape, >- &erg_scsitape, >- &is_tape_mounted_scsitape, >+ blockid[0] = (dev->blockid >> 24) & 0xFF; >+ blockid[1] = (dev->blockid >> 16) & 0xFF; >+ blockid[2] = (dev->blockid >> 8 ) & 0xFF; >+ blockid[3] = (dev->blockid ) & 0xFF; >+ } >+ else // (3480 et. al) >+ { >+ // "22-bit" block-id... > >- // PROGRAMMING NOTE: the following vector is actually assigned >- // to the 'passedeot' entry-point, but since SCSI tapes aren't >- // emulated devices but rather real hardware devices instead >- // (who's status already includes whether EOT has been passed >- // or not), this particular media-handler entry-point is not >- // currently needed for its original intended purpose. Thus we >- // can safely use it for our own custom purposes, which in our >- // case is to force a manual refreshing/updating of the actual >- // drive status information on behalf of the caller. >- >- // ** IMPORTANT! ** >- >- // Please read the WARNING comments in the force_status_update >- // function itself! It's important to NOT call this entry-point >- // indiscriminately as doing so could cause improper functioning >- // of the guest o/s! >+ blockid[0] = 0x01; // ("wrap" value) >+ blockid[1] = (dev->blockid >> 16) & 0x3F; >+ blockid[2] = (dev->blockid >> 8 ) & 0xFF; >+ blockid[3] = (dev->blockid ) & 0xFF; >+ } > >- &force_status_update >-}; >-#endif /* defined(OPTION_SCSI_TAPE) */ >+ // NOTE: For virtual tape devices, we return the same value >+ // for both the logical "Channel block ID" value as well as >+ // the physical "Device block ID" value... > >-static TAPEMEDIA_HANDLER tmh_oma = { >- &open_omatape, >- &close_omatape, >- &read_omatape, >- &write_READONLY5, /* WRITE */ >- &rewind_omatape, >- &bsb_omatape, >- &fsb_omatape, >- &bsf_omatape, >- &fsf_omatape, >- &write_READONLY, /* WTM */ >- &write_READONLY, /* DSE */ >- &write_READONLY, /* ERG */ >- &is_tapeloaded_filename, >- &return_false1 /* passedeot */ >-}; >+ if (logical) memcpy( logical, &blockid[0], 4 ); >+ if (physical) memcpy( physical, &blockid[0], 4 ); >+ >+ return 0; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* locateblk_virtual */ > /*-------------------------------------------------------------------*/ >+int locateblk_virtual ( DEVBLK* dev, U32 blockid, BYTE *unitstat, BYTE code ) >+{ >+ // NOTE: 'blockid' passed in host (little-endian) format... > >-#if defined(OPTION_DYNAMIC_LOAD) >-static >-#endif >+ int rc; > >-DEVHND tapedev_device_hndinfo = { >- &tapedev_init_handler, /* Device Initialisation */ >- &tapedev_execute_ccw, /* Device CCW execute */ >- &tapedev_close_device, /* Device Close */ >- &tapedev_query_device, /* Device Query */ >- NULL, /* Device Start channel pgm */ >- NULL, /* Device End channel pgm */ >- NULL, /* Device Resume channel pgm */ >- NULL, /* Device Suspend channel pgm */ >- NULL, /* Device Read */ >- NULL, /* Device Write */ >- NULL, /* Device Query used */ >- NULL, /* Device Reserve */ >- NULL, /* Device Release */ >- NULL, /* Device Attention */ >- TapeImmedCommands, /* Immediate CCW Codes */ >- NULL, /* Signal Adapter Input */ >- NULL, /* Signal Adapter Output */ >- NULL, /* Hercules suspend */ >- NULL /* Hercules resume */ >-}; >+ /* Do it the hard way: rewind to load-point and then >+ keep doing fsb, fsb, fsb... until we find our block >+ */ >+ if ((rc = dev->tmh->rewind( dev, unitstat, code)) >= 0) >+ { >+ /* Reset position counters to start of file */ > >-/* Libtool static name colision resolution */ >-/* note: lt_dlopen will look for symbol & modulename_LTX_symbol */ >-#if !defined(HDL_BUILD_SHARED) && defined(HDL_USE_LIBTOOL) >-#define hdl_ddev hdt3420_LTX_hdl_ddev >-#define hdl_depc hdt3420_LTX_hdl_depc >-#define hdl_reso hdt3420_LTX_hdl_reso >-#define hdl_init hdt3420_LTX_hdl_init >-#define hdl_fini hdt3420_LTX_hdl_fini >-#endif // !defined(HDL_BUILD_SHARED) && defined(HDL_USE_LIBTOOL) >+ dev->curfilen = 1; >+ dev->nxtblkpos = 0; >+ dev->prvblkpos = -1; >+ dev->blockid = 0; > >-#if defined(OPTION_DYNAMIC_LOAD) >-HDL_DEPENDENCY_SECTION; >-{ >- HDL_DEPENDENCY(HERCULES); >- HDL_DEPENDENCY(DEVBLK); >- HDL_DEPENDENCY(SYSBLK); >-} >-END_DEPENDENCY_SECTION >+ /* Do it the hard way */ > >-#if defined(WIN32) && !defined(HDL_USE_LIBTOOL) && !defined(_MSVC_) >- #undef sysblk >- HDL_RESOLVER_SECTION; >- { >- HDL_RESOLVE_PTRVAR( psysblk, sysblk ); >- } >- END_RESOLVER_SECTION >-#endif >+ while ( dev->blockid < blockid && ( rc >= 0 ) ) >+ rc = dev->tmh->fsb( dev, unitstat, code ); >+ } > >-HDL_DEVICE_SECTION; >+ return rc; >+} >+ >+/*-------------------------------------------------------------------*/ >+/* generic_tmhcall generic media-type-handler call... */ >+/*-------------------------------------------------------------------*/ >+int generic_tmhcall ( GENTMH_PARMS* pGenParms ) > { >- HDL_DEVICE(3410, tapedev_device_hndinfo ); >- HDL_DEVICE(3411, tapedev_device_hndinfo ); >- HDL_DEVICE(3420, tapedev_device_hndinfo ); >- HDL_DEVICE(3480, tapedev_device_hndinfo ); >- HDL_DEVICE(3490, tapedev_device_hndinfo ); >- HDL_DEVICE(3590, tapedev_device_hndinfo ); >- HDL_DEVICE(9347, tapedev_device_hndinfo ); >- HDL_DEVICE(9348, tapedev_device_hndinfo ); >- HDL_DEVICE(8809, tapedev_device_hndinfo ); >- HDL_DEVICE(3422, tapedev_device_hndinfo ); >- HDL_DEVICE(3430, tapedev_device_hndinfo ); >+ if (!pGenParms) >+ { >+ errno = EINVAL; // (invalid arguments) >+ return -1; // (return failure) >+ } >+ >+ switch (pGenParms->action) >+ { >+#if defined(OPTION_SCSI_TAPE) >+ case GENTMH_SCSI_ACTION_UPDATE_STATUS: >+ { >+ return update_status_scsitape( pGenParms->dev ); >+ } >+#endif /* defined(OPTION_SCSI_TAPE) */ >+ >+ default: >+ { >+ errno = EINVAL; // (invalid arguments) >+ return -1; // (return failure) >+ } >+ } >+ >+ return -1; // (never reached) > } >-END_DEVICE_SECTION >-#endif // defined(OPTION_DYNAMIC_LOAD) >diff -Naupr hercules-3.05/tapedev.h hercules-20070717/tapedev.h >--- hercules-3.05/tapedev.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/tapedev.h 2008-09-03 13:07:48.000000000 +0200 >@@ -3,9 +3,40 @@ > /* This module contains tape related structures and defines */ > /* for the Hercules ESA/390 emulator. */ > >-// $Id: tapedev.h,v 1.19 2007/06/23 00:04:18 ivan Exp $ >+// $Id: tapedev.h,v 1.26 2008/07/08 05:35:51 fish Exp $ > // > // $Log: tapedev.h,v $ >+// Revision 1.26 2008/07/08 05:35:51 fish >+// AUTOMOUNT redesign: support +allowed/-disallowed dirs >+// and create associated 'automount' panel command - Fish >+// >+// Revision 1.25 2008/05/22 21:17:30 fish >+// Tape file extension neutrality support >+// >+// Revision 1.24 2008/05/22 19:25:58 fish >+// Flex FakeTape support >+// >+// Revision 1.23 2008/03/28 02:09:42 fish >+// Add --blkid-24 option support, poserror flag renamed to fenced, >+// added 'generic', 'readblkid' and 'locateblk' tape media handler >+// call vectors. >+// >+// Revision 1.22 2008/03/27 07:14:17 fish >+// SCSI MODS: groundwork: part 3: final shuffling around. >+// Moved functions from one module to another and resequenced >+// functions within each. NO CODE WAS ACTUALLY CHANGED. >+// Next commit will begin the actual changes. >+// >+// Revision 1.21 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.20 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// > // Revision 1.19 2007/06/23 00:04:18 ivan > // Update copyright notices to include current year (2007) > // >@@ -22,12 +53,6 @@ > #include "parser.h" /* generic parameter string parser */ > > /*-------------------------------------------------------------------*/ >-/* Construct device-type appropriate sense information... */ >-/*-------------------------------------------------------------------*/ >- >-extern void build_senseX (int ERCode,DEVBLK *dev,BYTE *unitstat,BYTE code); >- >-/*-------------------------------------------------------------------*/ > /* Internal macro definitions */ > /*-------------------------------------------------------------------*/ > #define MAX_BLKLEN 65535 /* Maximum I/O buffer size */ >@@ -54,14 +79,14 @@ extern void build_senseX (int ERCode,DEV > #define SENSE7_TAPE_LOADFAIL 0x01 /* Load failure */ > > /*-------------------------------------------------------------------*/ >-/* ISW : Internal code to build Device Dependent Sense */ >+/* ISW : Internal error types used to build Device Dependent Sense */ > /*-------------------------------------------------------------------*/ > #define TAPE_BSENSE_TAPEUNLOADED 0 /* I/O Attempted but no tape loaded */ > #define TAPE_BSENSE_TAPELOADFAIL 1 /* I/O and load failed */ > #define TAPE_BSENSE_READFAIL 2 /* Error reading block */ > #define TAPE_BSENSE_WRITEFAIL 3 /* Error writing block */ > #define TAPE_BSENSE_BADCOMMAND 4 /* The CCW code is not known >- or sequence error */ >+ or sequence error */ > #define TAPE_BSENSE_INCOMPAT 5 /* The CCW code is known > but is not unsupported */ > #define TAPE_BSENSE_WRITEPROTECT 6 /* Write CCW code was issued >@@ -79,7 +104,7 @@ extern void build_senseX (int ERCode,DEV > #define TAPE_BSENSE_BADALGORITHM 11 /* Bad compression - HET > tape compressed with an > unsuported method */ >-#define TAPE_BSENSE_TAPEUNLOADED2 12 /* Rewind Unload success */ >+#define TAPE_BSENSE_RUN_SUCCESS 12 /* Rewind Unload success */ > #define TAPE_BSENSE_STATUSONLY 13 /* No exception occured */ > #define TAPE_BSENSE_LOCATEERR 14 /* Can't find block or TM */ > #define TAPE_BSENSE_READTM 15 /* A Tape Mark was read */ >@@ -91,7 +116,7 @@ extern void build_senseX (int ERCode,DEV > #define TAPE_BSENSE_UNSOLICITED 20 /* Sense without UC */ > > /*-------------------------------------------------------------------*/ >-/* Definitions for 3480 commands */ >+/* Definitions for 3480 and later commands */ > /*-------------------------------------------------------------------*/ > /* Format control byte for Load Display command */ > #define FCB_FS 0xE0 /* Function Select bits... */ >@@ -111,6 +136,10 @@ extern void build_senseX (int ERCode,DEV > #define FCB_RESV 0x02 /* (reserved) */ > #define FCB_AL 0x01 /* Activate AutoLoader on */ > /* mount/unmount messages */ >+/* Mode Set commands */ >+#define MSET_WRITE_IMMED 0x20 /* Tape-Write-Immediate mode */ >+#define MSET_SUPVR_INHIBIT 0x10 /* Supervisor Inhibit mode */ >+#define MSET_IDRC 0x08 /* IDRC mode */ > > /* Path state byte for Sense Path Group ID command */ > #define SPG_PATHSTAT 0xC0 /* Pathing status bits... */ >@@ -137,44 +166,43 @@ extern void build_senseX (int ERCode,DEV > #define SPG_SET_COMMAND_RESV 0x60 /* ...reserved bit setting */ > #define SPG_SET_RESV 0x1F /* Reserved bits, must be 0 */ > >-/* By Adrian Trenkwalder */ >-/* Perform Subsystem Function order byte for PSF command */ >-/* The first 3 orders are not supported yet (x'18', x'1B', x'1C') */ >-#define PSF_ORDER_PRSD 0x18 /* Prep. for Read Subsyst. Data*/ >-#define PSF_ORDER_SSIC 0x1B /* Set Special Intercept Cond*/ >-#define PSF_ORDER_MNS 0x1C /* Message Not Supported */ >-#define PSF_ORDER_AFEL 0x80 /* Activate Forced Error Log.*/ >-#define PSF_ORDER_DFEL 0x81 /* Deact. Forced Error Log. */ >-#define PSF_ACTION_FEL_IMPLICIT 0x01 /* ..Implicit (De)Activate */ >-#define PSF_ACTION_FEL_EXPLICIT 0x02 /* ..Explicit (De)Activate */ >-#define PSF_ORDER_AAC 0x82 /* Activate Access Control */ >-#define PSF_ORDER_DAC 0x83 /* Deact. Access Control */ >-#define PSF_ACTION_AC_LWP 0x80 /* ..Logical Write Protect */ >-#define PSF_ACTION_AC_DCD 0x10 /* ..Data Compaction Default */ >-#define PSF_ACTION_AC_DCR 0x02 /* ..Data Check Recovery */ >-#define PSF_ACTION_AC_ER 0x01 /* ..Extended Recovery */ >-#define PSF_ORDER_RVF 0x90 /* Reset Volume Fenced */ >-#define PSF_ORDER_PIN_DEV 0xA1 /* Pin Device */ >-#define PSF_ACTION_PIN_CU0 0x00 /* ..Control unit 0 */ >-#define PSF_ACTION_PIN_CU1 0x01 /* ..Control unit 1 */ >-#define PSF_ORDER_UNPIN_DEV 0xA2 /* Unpin Device */ >-#define PSF_FLAG_ZERO 0x00 /* Must be zero for all ord. */ >- >-/* By Adrian Trenkwalder */ >-/* Control Access Function Control */ >-#define CAC_FUNCTION 0xC0 /* Function control bits */ >-#define CAC_SET_PASSWORD 0x00 /* ..Set Password */ >-#define CAC_COND_ENABLE 0x80 /* ..Conditional Enable */ >-#define CAC_COND_DISABLE 0x40 /* ..Conditional Disable */ >- >- >+/* Perform Subsystem Function order byte for PSF command */ >+#define PSF_ORDER_PRSD 0x18 /* Prep for Read Subsys Data */ >+#define PSF_ACTION_SSD_ATNMSG 0x03 /* ..Attention Message */ >+#define PSF_ORDER_SSIC 0x1B /* Set Special Intercept Cond*/ >+#define PSF_ORDER_MNS 0x1C /* Message Not Supported */ >+#define PSF_ORDER_AFEL 0x80 /* Activate Forced Error Log.*/ >+#define PSF_ORDER_DFEL 0x81 /* Deact. Forced Error Log. */ >+#define PSF_ACTION_FEL_IMPLICIT 0x01 /* ..Implicit (De)Activate */ >+#define PSF_ACTION_FEL_EXPLICIT 0x02 /* ..Explicit (De)Activate */ >+#define PSF_ORDER_AAC 0x82 /* Activate Access Control */ >+#define PSF_ORDER_DAC 0x83 /* Deact. Access Control */ >+#define PSF_ACTION_AC_LWP 0x80 /* ..Logical Write Protect */ >+#define PSF_ACTION_AC_DCD 0x10 /* ..Data Compaction Default */ >+#define PSF_ACTION_AC_DCR 0x02 /* ..Data Check Recovery */ >+#define PSF_ACTION_AC_ER 0x01 /* ..Extended Recovery */ >+#define PSF_ORDER_RVF 0x90 /* Reset Volume Fenced */ >+#define PSF_ORDER_PIN_DEV 0xA1 /* Pin Device */ >+#define PSF_ACTION_PIN_CU0 0x00 /* ..Control unit 0 */ >+#define PSF_ACTION_PIN_CU1 0x01 /* ..Control unit 1 */ >+#define PSF_ORDER_UNPIN_DEV 0xA2 /* Unpin Device */ >+#define PSF_FLAG_ZERO 0x00 /* Must be zero for all ord. */ >+ >+/* Control Access Function Control */ >+#define CAC_FUNCTION 0xC0 /* Function control bits */ >+#define CAC_SET_PASSWORD 0x00 /* ..Set Password */ >+#define CAC_COND_ENABLE 0x80 /* ..Conditional Enable */ >+#define CAC_COND_DISABLE 0x40 /* ..Conditional Disable */ >+ > /*-------------------------------------------------------------------*/ > /* Definitions for tape device type field in device block */ > /*-------------------------------------------------------------------*/ >+#define TAPEDEVT_UNKNOWN 0 /* AWSTAPE format disk file */ > #define TAPEDEVT_AWSTAPE 1 /* AWSTAPE format disk file */ > #define TAPEDEVT_OMATAPE 2 /* OMATAPE format disk files */ > #define TAPEDEVT_SCSITAPE 3 /* Physical SCSI tape */ >-#define TAPEDEVT_HET 4 /* HET format disk file */ >+#define TAPEDEVT_HETTAPE 4 /* HET format disk file */ >+#define TAPEDEVT_FAKETAPE 5 /* Flex FakeTape disk format */ > > /*-------------------------------------------------------------------*/ > /* Fish - macros for checking SCSI tape device-independent status */ >@@ -220,7 +248,14 @@ extern void build_senseX (int ERCode,DEV > * > */ > typedef struct _AWSTAPE_BLKHDR >-{ >+{ /* >+ * PROGRAMMING NOTE: note that for AWS tape files, the "current >+ * chunk size" comes FIRST and the "previous chunk size" comes >+ * second. This is the complete opposite from the way it is for >+ * Flex FakeTape. Also note that for AWS the size fields are in >+ * LITTLE endian binary whereas for Flex FakeTape they're a BIG >+ * endian ASCII hex-string. >+ */ > HWORD curblkl; /* Length of this block */ > HWORD prvblkl; /* Length of previous block */ > BYTE flags1; /* Flags byte 1 (see below) */ >@@ -233,6 +268,9 @@ typedef struct _AWSTAPE_BLKHDR > } > AWSTAPE_BLKHDR; > >+/*-------------------------------------------------------------------*/ >+/* Structure definition for OMA block header */ >+/*-------------------------------------------------------------------*/ > typedef struct _OMATAPE_BLKHDR > { > FWORD curblkl; /* Length of this block */ >@@ -258,10 +296,85 @@ typedef struct _OMATAPE_DESC > OMATAPE_DESC; > > /*-------------------------------------------------------------------*/ >+/* Structure definition for Flex FakeTape block headers */ >+/*-------------------------------------------------------------------*/ >+/* >+ * The character length fields in a Flex FakeTape header are in BIG >+ * endian ASCII hex. That is to say, when the length field is ASCII >+ * "0123" (i.e. 0x30, 0x31, 0x32, 0x33), the length of the block is >+ * decimal 291 bytes (0x0123 == 291). >+ * >+ * The two block length fields are followed by an XOR "check" field >+ * calculated as the XOR of the two preceding length fields and is >+ * used to verify the integrity of the header. >+ * >+ * The Flex FakeTape tape format does not support any flag fields >+ * in its header and thus does not support any type of compression. >+ */ >+typedef struct _FAKETAPE_BLKHDR >+{ /* >+ * PROGRAMMING NOTE: note that for Flex FakeTapes, the "previous >+ * chunk size" comes FIRST, followed by the "current chunk size" >+ * second. This is the complete opposite from the way it is for >+ * AWS tape files. Also note that for Flex FakeTape the size fields >+ * are in BIG endian ASCII hex-string whereas for AWS tapes >+ * they're LITTLE endian binary. >+ */ >+ char sprvblkl[4]; /* length of previous block */ >+ char scurblkl[4]; /* length of this block */ >+ char sxorblkl[4]; /* XOR both lengths together */ >+} >+FAKETAPE_BLKHDR; >+ >+/*-------------------------------------------------------------------*/ >+/* Tape Auto-Loader table entry */ >+/*-------------------------------------------------------------------*/ >+struct TAPEAUTOLOADENTRY >+{ >+ char *filename; >+ int argc; >+ char **argv; >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* Tape AUTOMOUNT CCWS directory control */ >+/*-------------------------------------------------------------------*/ >+struct TAMDIR >+{ >+ TAMDIR *next; /* ptr to next entry or NULL */ >+ char *dir; /* resolved directory value */ >+ int len; /* strlen(dir) */ >+ int rej; /* 1 == reject, 0 == accept */ >+}; >+ >+/*-------------------------------------------------------------------*/ >+/* Generic media-handler-call parameters block */ >+/*-------------------------------------------------------------------*/ >+typedef struct _GENTMH_PARMS >+{ >+ int action; // action code (i.e. "what to do") >+ DEVBLK* dev; // -> device block >+ BYTE* unitstat; // -> unit status >+ BYTE code; // CCW opcode >+ // TODO: define whatever additional arguments may be needed... >+} >+GENTMH_PARMS; >+ >+/*-------------------------------------------------------------------*/ >+/* Generic media-handler-call action codes... */ >+/*-------------------------------------------------------------------*/ >+ >+#define GENTMH_SCSI_ACTION_UPDATE_STATUS (0) >+//efine GENTMH_AWS_ACTION_xxxxx... (x) >+//efine GENTMH_HET_ACTION_xxxxx... (x) >+//efine GENTMH_OMA_ACTION_xxxxx... (x) >+ >+/*-------------------------------------------------------------------*/ > /* Tape media I/O function vector table layout */ > /*-------------------------------------------------------------------*/ > struct TAPEMEDIA_HANDLER > { >+ int (*generic) (GENTMH_PARMS*); // (generic call) > int (*open) (DEVBLK*, BYTE *unitstat, BYTE code); > void (*close) (DEVBLK*); > int (*read) (DEVBLK*, BYTE *buf, BYTE *unitstat, BYTE code); >@@ -272,20 +385,201 @@ struct TAPEMEDIA_HANDLER > int (*bsf) (DEVBLK*, BYTE *unitstat, BYTE code); > int (*fsf) (DEVBLK*, BYTE *unitstat, BYTE code); > int (*wtm) (DEVBLK*, BYTE *unitstat, BYTE code); >+ int (*sync) (DEVBLK*, BYTE *unitstat, BYTE code); > int (*dse) (DEVBLK*, BYTE *unitstat, BYTE code); > int (*erg) (DEVBLK*, BYTE *unitstat, BYTE code); > int (*tapeloaded) (DEVBLK*, BYTE *unitstat, BYTE code); > int (*passedeot) (DEVBLK*); >+ >+ /* readblkid o/p values are returned in BIG-ENDIAN guest format */ >+ int (*readblkid) (DEVBLK*, BYTE* logical, BYTE* physical); >+ >+ /* locateblk i/p value is passed in little-endian host format */ >+ int (*locateblk) (DEVBLK*, U32 blockid, BYTE *unitstat, BYTE code); > }; > > /*-------------------------------------------------------------------*/ >-/* Tape Auto-Loader table entry */ >+/* Functions defined in TAPEDEV.C... */ > /*-------------------------------------------------------------------*/ >-struct TAPEAUTOLOADENTRY >-{ >- char *filename; >- int argc; >- char **argv; >-}; >+ >+extern int tapedev_init_handler (DEVBLK *dev, int argc, char *argv[]); >+extern int tapedev_close_device (DEVBLK *dev ); >+extern void tapedev_query_device (DEVBLK *dev, char **class, int buflen, char *buffer); >+ >+extern void autoload_init (DEVBLK *dev, int ac, char **av); >+extern int autoload_mount_first (DEVBLK *dev); >+extern int autoload_mount_next (DEVBLK *dev); >+extern void autoload_close (DEVBLK *dev); >+extern void autoload_global_parms (DEVBLK *dev, char *par); >+extern void autoload_clean_entry (DEVBLK *dev, int ix); >+extern void autoload_tape_entry (DEVBLK *dev, char *fn, char **strtokw); >+extern int autoload_mount_tape (DEVBLK *dev, int alix); >+ >+extern void* autoload_wait_for_tapemount_thread (void *db); >+ >+extern int gettapetype (DEVBLK *dev, char **short_descr); >+extern int gettapetype_byname (DEVBLK *dev); >+extern int gettapetype_bydata (DEVBLK *dev); >+ >+extern int mountnewtape (DEVBLK *dev, int argc, char **argv); >+extern void GetDisplayMsg (DEVBLK *dev, char *msgbfr, size_t lenbfr); >+extern int IsAtLoadPoint (DEVBLK *dev); >+extern void ReqAutoMount (DEVBLK *dev); >+extern void UpdateDisplay (DEVBLK *dev); >+extern int return_false1 (DEVBLK *dev); >+extern int write_READONLY5 (DEVBLK *dev, BYTE *bfr, U16 blklen, BYTE *unitstat, BYTE code); >+extern int is_tapeloaded_filename (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int write_READONLY (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int no_operation (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int readblkid_virtual (DEVBLK*, BYTE* logical, BYTE* physical); >+extern int locateblk_virtual (DEVBLK*, U32 blockid, BYTE *unitstat, BYTE code); >+extern int generic_tmhcall (GENTMH_PARMS*); >+ >+/*-------------------------------------------------------------------*/ >+/* Functions (and data areas) defined in TAPECCWS.C... */ >+/*-------------------------------------------------------------------*/ >+ >+typedef void TapeSenseFunc( int, DEVBLK*, BYTE*, BYTE ); // (sense handling function) >+ >+#define TAPEDEVTYPELIST_ENTRYSIZE (5) // #of int's per 'TapeDevtypeList' table entry >+ >+extern int TapeDevtypeList[]; >+extern BYTE* TapeCommandTable[]; >+extern TapeSenseFunc* TapeSenseTable[]; >+//tern BYTE TapeCommandsXXXX[256]... >+extern BYTE TapeImmedCommands[]; >+ >+extern int TapeCommandIsValid (BYTE code, U16 devtype, BYTE *rustat); >+extern void tapedev_execute_ccw (DEVBLK *dev, BYTE code, BYTE flags, >+ BYTE chained, U16 count, BYTE prevcode, int ccwseq, >+ BYTE *iobuf, BYTE *more, BYTE *unitstat, U16 *residual); >+extern void load_display (DEVBLK *dev, BYTE *buf, U16 count); >+ >+extern void build_senseX (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_3410 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_3420 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_3410_3420 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_3480_etal (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_3490 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_3590 (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+extern void build_sense_Streaming (int ERCode, DEVBLK *dev, BYTE *unitstat, BYTE ccwcode); >+ >+/*-------------------------------------------------------------------*/ >+/* Calculate I/O Residual... */ >+/*-------------------------------------------------------------------*/ >+ >+#define RESIDUAL_CALC(_data_len) \ >+ \ >+ len = (_data_len); \ >+ num = (count < len) ? count : len; \ >+ *residual = count - num; \ >+ if (count < len) *more = 1 >+ >+/*-------------------------------------------------------------------*/ >+/* Assign a unique Message Id for this asynchronous I/O if needed... */ >+/*-------------------------------------------------------------------*/ >+ >+#if defined(OPTION_SCSI_TAPE) >+ >+ #define INCREMENT_MESSAGEID(_dev) \ >+ \ >+ if ((_dev)->SIC_active) \ >+ (_dev)->msgid++ >+ >+#else >+ >+ #define INCREMENT_MESSAGEID(_dev) >+ >+#endif // defined(OPTION_SCSI_TAPE) >+ >+/*-------------------------------------------------------------------*/ >+/* Functions defined in AWSTAPE.C... */ >+/*-------------------------------------------------------------------*/ >+extern int open_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern void close_awstape (DEVBLK *dev); >+extern int passedeot_awstape (DEVBLK *dev); >+extern int rewind_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int write_awsmark (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int sync_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsb_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsb_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsf_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsf_awstape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int readhdr_awstape (DEVBLK *dev, off_t blkpos, AWSTAPE_BLKHDR *buf, >+ BYTE *unitstat, BYTE code); >+extern int read_awstape (DEVBLK *dev, BYTE *buf, >+ BYTE *unitstat, BYTE code); >+extern int write_awstape (DEVBLK *dev, BYTE *buf, U16 blklen, >+ BYTE *unitstat, BYTE code); >+ >+/*-------------------------------------------------------------------*/ >+/* Functions defined in FAKETAPE.C... */ >+/*-------------------------------------------------------------------*/ >+extern int open_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern void close_faketape (DEVBLK *dev); >+extern int passedeot_faketape (DEVBLK *dev); >+extern int rewind_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int write_fakemark (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int sync_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsb_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsb_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsf_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsf_faketape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int readhdr_faketape (DEVBLK *dev, off_t blkpos, >+ U16* pprvblkl, U16* pcurblkl, >+ BYTE *unitstat, BYTE code); >+extern int writehdr_faketape (DEVBLK *dev, off_t blkpos, >+ U16 prvblkl, U16 curblkl, >+ BYTE *unitstat, BYTE code); >+extern int read_faketape (DEVBLK *dev, BYTE *buf, >+ BYTE *unitstat, BYTE code); >+extern int write_faketape (DEVBLK *dev, BYTE *buf, U16 blklen, >+ BYTE *unitstat, BYTE code); >+ >+/*-------------------------------------------------------------------*/ >+/* Functions defined in HETTAPE.C... */ >+/*-------------------------------------------------------------------*/ >+extern int open_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern void close_het (DEVBLK *dev); >+extern int passedeot_het (DEVBLK *dev); >+extern int rewind_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int write_hetmark (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int sync_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsb_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsb_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsf_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsf_het (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int read_het (DEVBLK *dev, BYTE *buf, >+ BYTE *unitstat, BYTE code); >+extern int write_het (DEVBLK *dev, BYTE *buf, U16 blklen, >+ BYTE *unitstat, BYTE code); >+ >+/*-------------------------------------------------------------------*/ >+/* Functions defined in OMATAPE.C... */ >+/*-------------------------------------------------------------------*/ >+extern int open_omatape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern void close_omatape (DEVBLK *dev); >+extern void close_omatape2 (DEVBLK *dev); >+extern int rewind_omatape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsb_omatape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsb_omatape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int fsf_omatape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+extern int bsf_omatape (DEVBLK *dev, BYTE *unitstat, BYTE code); >+ >+extern int read_omadesc (DEVBLK *dev); >+extern int fsb_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, BYTE *unitstat, BYTE code); >+extern int fsb_omafixed (DEVBLK *dev, OMATAPE_DESC *omadesc, BYTE *unitstat, BYTE code); >+extern int read_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, BYTE *buf, BYTE *unitstat, BYTE code); >+extern int read_omafixed (DEVBLK *dev, OMATAPE_DESC *omadesc, BYTE *buf, BYTE *unitstat, BYTE code); >+extern int read_omatext (DEVBLK *dev, OMATAPE_DESC *omadesc, BYTE *buf, BYTE *unitstat, BYTE code); >+extern int read_omatape (DEVBLK *dev, BYTE *buf, BYTE *unitstat, BYTE code); >+extern int readhdr_omaheaders (DEVBLK *dev, OMATAPE_DESC *omadesc, >+ long blkpos, S32 *pcurblkl, >+ S32 *pprvhdro, S32 *pnxthdro, BYTE *unitstat, BYTE code); >+ >+/*-------------------------------------------------------------------*/ >+/* Functions defined in SCSITAPE.C... */ >+/*-------------------------------------------------------------------*/ >+// (see SCSITAPE.H) > > #endif // __TAPEDEV_H__ >diff -Naupr hercules-3.05/tests/a.core hercules-20070717/tests/a.core >--- hercules-3.05/tests/a.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/a.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+X6A Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Gðÿÿÿ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/alsi.txt hercules-20070717/tests/alsi.txt >--- hercules-3.05/tests/alsi.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/alsi.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,16 @@ >+* ALSI test $Id: alsi.txt,v 1.1 2008/03/29 00:20:47 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000000800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000080000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000001 # LA R0,1 Load R0 = 1 >+r 204=A7F40004 # BRC 15,*+8 Branch around test data >+r 208=00000000 # DATA DC F'0' Test data >+r 20C=C40FFFFFFFFE # STRL R0,*-2 Store R0 as test data >+r 212=EBF10208006E # ALSI DATA,X'F1' Add logical signed immediate >+r 218=C41DFFFFFFF8 # LRL R1,*-8 Load R1 with result data >+r 21E=B2B20270 # LPSWE WAITPSW Load enabled wait PSW >+r 270=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+ostailor null >+s+ >+restart >diff -Naupr hercules-3.05/tests/axtr.txt hercules-20070717/tests/axtr.txt >--- hercules-3.05/tests/axtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/axtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,22 @@ >+* AXTR test $Id: axtr.txt,v 1.1 2006/12/29 15:15:29 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000230 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=EB2502400004 # LMG R2,R5,PACKED Load R2,R3=PACKED1 R4,R5=PACKED2 >+r 20A=B3FB0042 # CXSTR R4,R2 Load FPR R4,R6 from PACKED1 R2,R3 >+r 20E=B3FB0014 # CXSTR R1,R4 Load FPR R1,R3 from PACKED2 R4,R5 >+r 212=B3DA1094 # AXTR R9,R4,R1 Add FPR R4,R6 + R1,R3 giving R9,R11 >+r 216=B3EB00A9 # CSXTR R10,R9,0 Convert FPR R9,R11 to PACKED R10,R11 >+r 21A=B3EB01C9 # CSXTR R12,R9,1 Convert FPR R9,R11 to PACKED R12,R13 >+r 21E=EBAD02600024 # STMG R10,R13,RESULTC R10,R11=>RESULTC R12,R13=>RESULTF >+r 224=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 230=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 240=0000000000000000000000000000001C # PACKED1 DC PL16'1' >+r 250=0000000000000000000000000000002C # PACKED2 DC PL16'2' >+r 260=FEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED # RESULTC should be PL16'3' (with sign C) >+r 270=FEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED # RESULTF should be PL16'3' (with sign F) >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/b.core hercules-20070717/tests/b.core >--- hercules-3.05/tests/b.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/b.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+Gð >\ No newline at end of file >diff -Naupr hercules-3.05/tests/bctr.core hercules-20070717/tests/bctr.core >--- hercules-3.05/tests/bctr.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/bctr.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+XA Gðÿÿÿ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/brc.txt hercules-20070717/tests/brc.txt >--- hercules-3.05/tests/brc.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/brc.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,15 @@ >+* BRC test $Id: brc.txt,v 1.1 2007/11/18 22:18:51 rbowler Exp $ >+sysclear >+archmode s/370 >+r 000=0008000000000200 # EC mode restart PSW >+r 068=000A00000000DEAD # EC mode pgm new PSW >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=98030240 # LM R0,R3,INITREG Load initial values into regs >+r 204=1200 # LTR R0,R0 Set condition code >+r 206=A7F4FFFD # BRC 15,*-6 Branch back >+r 20A=82000300 # LPSW WAITPSW Load enabled wait PSW >+r 240=EEEEEEEEDDDDDDDDCCCCCCCCBBBBBBBB # Initial values for regs 0-3 >+r 300=070A000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/cdfr.txt hercules-20070717/tests/cdfr.txt >--- hercules-3.05/tests/cdfr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cdfr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,102 @@ >+* CDFR/CEFR/CXFR test $Id: cdfr.txt,v 1.1 2008/04/22 17:41:54 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=00020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+* CDFR tests >+r 204=41000008 # LA R0,8 R0=Number of test data >+r 208=41100320 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=58201000 #A L R2,0(,R1) Load R2=TESTn >+r 214=B3B50042 # CDFR F4,R2 Convert to HFP in FPR4 >+r 218=6040F000 # STD F4,0(,R15) Store FPR4 in result table >+r 21C=41101004 # LA R1,4(,R1) R1=>next test data >+r 220=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 224=46000210 # BCT R0,A Loop to end of TEST table >+r 228=D53F04000380 # CLC RES1(64),EXP1 Compare with expected results >+r 22E=477002FC # BNE DIE Error if not equal >+* CEFR tests >+r 232=41000008 # LA R0,8 R0=Number of test data >+r 236=41100320 # LA R1,TEST1 R1=>Test data table >+r 23A=41F00500 # LA R15,RESS1 R15=>Result table >+r 23E=58201000 #B L R2,0(,R1) Load R2=TESTn >+r 242=B3B40042 # CEFR F4,R2 Convert to short HFP in FPR4 >+r 246=7040F000 # STE F4,0(,R15) Store FPR4 in result table >+r 24A=41101004 # LA R1,4(,R1) R1=>next test data >+r 24E=41F0F004 # LA R15,4(,R15) R15=>next result table >+r 252=4600023E # BCT R0,B Loop to end of TEST table >+r 256=D51F05000480 # CLC RESS1(32),EXPS1 Compare with expected results >+r 25C=477002FC # BNE DIE Error if not equal >+* CXFR tests >+r 260=41000008 # LA R0,8 R0=Number of test data >+r 264=41100320 # LA R1,TEST1 R1=>Test data table >+r 268=41F00600 # LA R15,RESX1 R15=>Result table >+r 26C=58201000 #C L R2,0(,R1) Load R2=TESTn >+r 270=B3B60042 # CXFR F4,R2 Convert to ext HFP in FPR4,FPR6 >+r 274=6040F000 # STD F4,0(,R15) Store FPR4 in result table >+r 278=6060F008 # STD F6,8(,R15) Store FPR6 in result table >+r 27C=41101004 # LA R1,4(,R1) R1=>next test data >+r 280=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 284=4600026C # BCT R0,C Loop to end of TEST table >+r 288=D57F06000580 # CLC RESX1(128),EXPX1 Compare with expected results >+r 28E=477002FC # BNE DIE Error if not equal >+r 292=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2FC=B2B201D0 #DIE LPSWE PGMNPSW Load disabled wait PSW >+r 300=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+* Test data >+r 320=14D44337 # TEST1 >+r 324=00000000 # TEST2 >+r 328=0000007B # TEST3 >+r 32C=FFFFFF85 # TEST4 >+r 330=0FFFFFFF # TEST5 >+r 334=7FFFFFFF # TEST6 >+r 338=80000000 # TEST7 >+r 33C=00000000 # TEST8 >+* Expected results (long HFP) >+r 380=4814D44337000000 # EXP1 >+r 388=0000000000000000 # EXP2 >+r 390=427B000000000000 # EXP3 >+r 398=C27B000000000000 # EXP4 >+r 3A0=47FFFFFFF0000000 # EXP5 >+r 3A8=487FFFFFFF000000 # EXP6 >+r 3B0=C880000000000000 # EXP7 >+r 3B8=0000000000000000 # EXP8 >+* Expected results (short HFP) >+r 480=4814D443 # EXPS1 >+r 484=00000000 # EXPS2 >+r 488=427B0000 # EXPS3 >+r 48C=C27B0000 # EXPS4 >+r 490=47FFFFFF # EXPS5 >+r 494=487FFFFF # EXPS6 >+r 498=C8800000 # EXPS7 >+r 49C=00000000 # EXPS8 >+* Expected results (extended HFP) >+r 580=4814D443370000003A00000000000000 # EXPX1 >+r 590=00000000000000000000000000000000 # EXPX2 >+r 5A0=427B0000000000003400000000000000 # EXPX3 >+r 5B0=C27B000000000000B400000000000000 # EXPX4 >+r 5C0=47FFFFFFF00000003900000000000000 # EXPX5 >+r 5D0=487FFFFFFF0000003A00000000000000 # EXPX6 >+r 5E0=C880000000000000BA00000000000000 # EXPX7 >+r 5F0=00000000000000000000000000000000 # EXPX8 >+ostailor null >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.20 >+* Display expected results (long HFP) >+r 380.40 >+* Display actual results (long HFP) >+r 400.40 >+* Display expected results (short HFP) >+r 480.20 >+* Display actual results (short HFP) >+r 500.20 >+* Display expected results (extended HFP) >+r 580.80 >+* Display actual results (extended HFP) >+r 600.80 >diff -Naupr hercules-3.05/tests/cdgr.txt hercules-20070717/tests/cdgr.txt >--- hercules-3.05/tests/cdgr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cdgr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,102 @@ >+* CDGR/CEGR/CXGR test $Id: cdgr.txt,v 1.4 2008/04/22 17:41:22 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=00020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+* CDGR tests >+r 204=41000008 # LA R0,8 R0=Number of test data >+r 208=41100320 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=E32010000004 #A LG R2,0(,R1) Load R2=TESTn >+r 216=B3C50042 # CDGR F4,R2 Convert to HFP in FPR4 >+r 21A=6040F000 # STD F4,0(,R15) Store FPR4 in result table >+r 21E=41101008 # LA R1,8(,R1) R1=>next test data >+r 222=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 226=46000210 # BCT R0,A Loop to end of TEST table >+r 22A=D53F04000380 # CLC RES1(64),EXP1 Compare with expected results >+r 230=477002FC # BNE DIE Error if not equal >+* CEGR tests >+r 234=41000008 # LA R0,8 R0=Number of test data >+r 238=41100320 # LA R1,TEST1 R1=>Test data table >+r 23C=41F00500 # LA R15,RESS1 R15=>Result table >+r 240=E32010000004 #B LG R2,0(,R1) Load R2=TESTn >+r 246=B3C40042 # CEGR F4,R2 Convert to short HFP in FPR4 >+r 24A=7040F000 # STE F4,0(,R15) Store FPR4 in result table >+r 24E=41101008 # LA R1,8(,R1) R1=>next test data >+r 252=41F0F004 # LA R15,4(,R15) R15=>next result table >+r 256=46000240 # BCT R0,B Loop to end of TEST table >+r 25A=D51F05000480 # CLC RESS1(32),EXPS1 Compare with expected results >+r 260=477002FC # BNE DIE Error if not equal >+* CXGR tests >+r 264=41000008 # LA R0,8 R0=Number of test data >+r 268=41100320 # LA R1,TEST1 R1=>Test data table >+r 26C=41F00600 # LA R15,RESX1 R15=>Result table >+r 270=E32010000004 #C LG R2,0(,R1) Load R2=TESTn >+r 276=B3C60042 # CXGR F4,R2 Convert to ext HFP in FPR4,FPR6 >+r 27A=6040F000 # STD F4,0(,R15) Store FPR4 in result table >+r 27E=6060F008 # STD F6,8(,R15) Store FPR6 in result table >+r 282=41101008 # LA R1,8(,R1) R1=>next test data >+r 286=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 28A=46000270 # BCT R0,C Loop to end of TEST table >+r 28E=D57F06000580 # CLC RESX1(128),EXPX1 Compare with expected results >+r 294=477002FC # BNE DIE Error if not equal >+r 298=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2FC=B2B201D0 #DIE LPSWE PGMNPSW Load disabled wait PSW >+r 300=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+* Test data >+r 320=14D4433700C0D650 # TEST1 >+r 328=0000000000000000 # TEST2 >+r 330=000000000000007B # TEST3 >+r 338=FFFFFFFFFFFFFF85 # TEST4 >+r 340=0FFFFFFFFFFFFFFF # TEST5 >+r 348=7FFFFFFFFFFFFFFF # TEST6 >+r 350=8000000000000000 # TEST7 >+r 358=0000000000000000 # TEST8 >+* Expected results (long HFP) >+r 380=5014D4433700C0D6 # EXP1 >+r 388=0000000000000000 # EXP2 >+r 390=427B000000000000 # EXP3 >+r 398=C27B000000000000 # EXP4 >+r 3A0=4FFFFFFFFFFFFFFF # EXP5 >+r 3A8=507FFFFFFFFFFFFF # EXP6 >+r 3B0=D080000000000000 # EXP7 >+r 3B8=0000000000000000 # EXP8 >+* Expected results (short HFP) >+r 480=5014D443 # EXPS1 >+r 484=00000000 # EXPS2 >+r 488=427B0000 # EXPS3 >+r 48C=C27B0000 # EXPS4 >+r 490=4FFFFFFF # EXPS5 >+r 494=507FFFFF # EXPS6 >+r 498=D0800000 # EXPS7 >+r 49C=00000000 # EXPS8 >+* Expected results (extended HFP) >+r 580=5014D4433700C0D64250000000000000 # EXPX1 >+r 590=00000000000000000000000000000000 # EXPX2 >+r 5A0=427B0000000000003400000000000000 # EXPX3 >+r 5B0=C27B000000000000B400000000000000 # EXPX4 >+r 5C0=4FFFFFFFFFFFFFFF41F0000000000000 # EXPX5 >+r 5D0=507FFFFFFFFFFFFF42FF000000000000 # EXPX6 >+r 5E0=D080000000000000C200000000000000 # EXPX7 >+r 5F0=00000000000000000000000000000000 # EXPX8 >+ostailor null >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.40 >+* Display expected results (long HFP) >+r 380.40 >+* Display actual results (long HFP) >+r 400.40 >+* Display expected results (short HFP) >+r 480.20 >+* Display actual results (short HFP) >+r 500.20 >+* Display expected results (extended HFP) >+r 580.80 >+* Display actual results (extended HFP) >+r 600.80 >diff -Naupr hercules-3.05/tests/cgdr.txt hercules-20070717/tests/cgdr.txt >--- hercules-3.05/tests/cgdr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cgdr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,124 @@ >+* CGDR test $Id: cgdr.txt,v 1.2 2008/05/04 09:53:49 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=00020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 200=B7000330 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B29D0334 # LFPC FPCREG Load FPC register >+r 208=41000008 # LA R0,8 R0=Number of test data >+r 20C=41100800 # LA R1,TEST1 R1=>Test data table >+r 210=41F00900 # LA R15,RES1 R15=>Result table >+r 214=68401000 #A LD F4,0(,R1) Load FPR4=TESTn >+r 218=41200000 # LA R2,X'00' R2=Rounding mode >+r 21C=42200222 #B STC R2,I+2 Store rounding mode into instr >+r 220=B3C90074 #I CGDR R7,0,F4 Convert FPR4 into R7 >+r 224=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 228=5890008C # L R9,PGMINTC R9=PGM check interrupt code >+r 22C=E370F0000024 # STG R7,0(,R15) Store R7 in result table >+r 232=9089F008 # STM R8,R9,8(R15) Store CC and PIC in table >+r 236=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 23A=EC270005107F # CLIJNE R2,X'10',*+10 Skip if not rounding mode 1 >+r 240=41202020 # LA R2,X'20'(R2) Bypass rounding modes 2 and 3 >+r 244=41202010 # LA R2,X'10'(R2) R2=Next rounding mode >+r 248=EC24021C80FF # CLIBL R2,X'80',B Loop if rounding mode less than 8 >+r 24E=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 252=46000214 # BCT R0,A Loop to end of TEST table >+r 256=41000900 # LA R0,RES1 R0->Actual results >+r 25A=41100300 # LA R1,48*16 R1=Length of results table >+r 25E=41200C00 # LA R2,EXP1 R2->Expected results >+r 262=41300300 # LA R3,48*16 R3=Length of results table >+r 266=0F02 # CLCL R0,R2 Compare with expected results >+r 268=477002FC # BNE DIE Error if not equal >+r 26C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2FC=B2B20310 # LPSWE DISWAIT Load disabled wait PSW >+r 300=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW >+r 310=00020001800000000000000000BADBAD # DISWAIT Disabled wait state PSW >+r 320=00000001800000000000000000000340 # NEWPSWI New PSW for PGMFLIH >+r 330=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 334=00000000 # FPCREG Floating point control register >+r 340=B2B20150 #PGMFLIH LPSWE PGMOPSW Program check interrupt handler >+r 800=D080000000000000 # TEST1 DC DH'-9223372036854775808' >+r 808=D07FFFFFFFFFFFFF # TEST2 DC DH'-9223372036854775652' >+r 810=C27B800000000000 # TEST3 DC DH'-123.5' >+r 818=8000000000000000 # TEST4 DC DH'-0' >+r 820=427A800000000000 # TEST5 DC DH'122.5' >+r 828=487FFFFFFF800000 # TEST6 DC DH'2147483648.5' >+r 830=507FFFFFFFFFFFFF # TEST7 DC DH'9223372036854775652' >+r 838=5080000000000000 # TEST8 DC DH'9223372036854775808' >+* Expected results - TEST1 >+r C00=80000000000000001000000000000000 >+r C10=80000000000000001000000000000000 >+r C20=80000000000000001000000000000000 >+r C30=80000000000000001000000000000000 >+r C40=80000000000000001000000000000000 >+r C50=80000000000000001000000000000000 >+* Expected results - TEST2 >+r C60=80000000000001001000000000000000 >+r C70=80000000000001001000000000000000 >+r C80=80000000000001001000000000000000 >+r C90=80000000000001001000000000000000 >+r CA0=80000000000001001000000000000000 >+r CB0=80000000000001001000000000000000 >+* Expected results - TEST3 >+r CC0=FFFFFFFFFFFFFF851000000000000000 >+r CD0=FFFFFFFFFFFFFF841000000000000000 >+r CE0=FFFFFFFFFFFFFF841000000000000000 >+r CF0=FFFFFFFFFFFFFF851000000000000000 >+r D00=FFFFFFFFFFFFFF851000000000000000 >+r D10=FFFFFFFFFFFFFF841000000000000000 >+* Expected results - TEST4 >+r D20=00000000000000000000000000000000 >+r D30=00000000000000000000000000000000 >+r D40=00000000000000000000000000000000 >+r D50=00000000000000000000000000000000 >+r D60=00000000000000000000000000000000 >+r D70=00000000000000000000000000000000 >+* Expected results - TEST5 >+r D80=000000000000007A2000000000000000 >+r D90=000000000000007B2000000000000000 >+r DA0=000000000000007A2000000000000000 >+r DB0=000000000000007A2000000000000000 >+r DC0=000000000000007B2000000000000000 >+r DD0=000000000000007A2000000000000000 >+* Expected results - TEST6 >+r DE0=000000007FFFFFFF2000000000000000 >+r DF0=00000000800000002000000000000000 >+r E00=00000000800000002000000000000000 >+r E10=000000007FFFFFFF2000000000000000 >+r E20=00000000800000002000000000000000 >+r E30=000000007FFFFFFF2000000000000000 >+* Expected results - TEST7 >+r E40=7FFFFFFFFFFFFF002000000000000000 >+r E50=7FFFFFFFFFFFFF002000000000000000 >+r E60=7FFFFFFFFFFFFF002000000000000000 >+r E70=7FFFFFFFFFFFFF002000000000000000 >+r E80=7FFFFFFFFFFFFF002000000000000000 >+r E90=7FFFFFFFFFFFFF002000000000000000 >+* Expected results - TEST8 >+r EA0=7FFFFFFFFFFFFFFF3000000000000000 >+r EB0=7FFFFFFFFFFFFFFF3000000000000000 >+r EC0=7FFFFFFFFFFFFFFF3000000000000000 >+r ED0=7FFFFFFFFFFFFFFF3000000000000000 >+r EE0=7FFFFFFFFFFFFFFF3000000000000000 >+r EF0=7FFFFFFFFFFFFFFF3000000000000000 >+ostailor null >+restart >+pause 1 >+* Display test data >+r 800.40 >+* Display results - TEST1 >+r 900.60 >+* Display results - TEST2 >+r 960.60 >+* Display results - TEST3 >+r 9C0.60 >+* Display results - TEST4 >+r A20.60 >+* Display results - TEST5 >+r A80.60 >+* Display results - TEST6 >+r AE0.60 >+* Display results - TEST7 >+r B40.60 >+* Display results - TEST8 >+r BA0.60 >diff -Naupr hercules-3.05/tests/cgdtr.txt hercules-20070717/tests/cgdtr.txt >--- hercules-3.05/tests/cgdtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cgdtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+* CGDTR test $Id: cgdtr.txt,v 1.1 2007/01/25 13:08:26 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=41000006 # LA R0,6 R0=Number of test data >+r 208=41100380 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=68601000 #A LD F6,0(,R1) Load FPR6=TESTn >+r 214=41200002 # LA R2,2 R2=Number of DRM tests >+r 218=A7390003 # LGHI R3,3 R3=DRM 3 (round down) >+r 21C=B29D0314 #B LFPC FPCREG Load value into FPC register >+r 220=B2B93000 # SRNMT 0(R3) Set DFP rounding mode from R3 >+r 224=B3E10076 # CGDTR R7,0,F6 Load R7 from FPR6 >+r 228=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 22C=B38C0090 # EFPC R9 R9=Copy of FPC register >+r 230=E370F0000024 # STG R7,0(,R15) Store R7 in result table >+r 236=9089F008 # STM R8,R9,8(R15) Store CC and FPC in table >+r 23A=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 23E=A7390002 # LGHI R3,2 R3=DRM 2 (round up) >+r 242=4620021C # BCT R2,B Loop for DRM 2 >+r 246=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 24A=46000210 # BCT R0,A Loop to end of TEST table >+r 24E=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 380=2238000000000000 # TEST1 DC DD'0' Zero positive >+r 388=2238000000000078 # TEST2 DC DD'78' Normal positive >+r 390=2BCDEF0123456789 # TEST3 DC DD'2.989004434259709E116' Large positive >+r 398=7CABCDEF01234567 # TEST4 DC DD'QNAN' QNaN positive >+r 3A0=FE0000000000ABCD # TEST5 DC DD'-SNAN' SNaN negative >+r 3A8=78123456789ABCDE # TEST6 DC DD'INF' Infinity positive >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 380.30 >+* Display results >+r 400.C0 >diff -Naupr hercules-3.05/tests/cger.txt hercules-20070717/tests/cger.txt >--- hercules-3.05/tests/cger.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cger.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,124 @@ >+* CGER test $Id: cger.txt,v 1.2 2008/04/29 20:52:34 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=00020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 200=B7000330 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B29D0334 # LFPC FPCREG Load FPC register >+r 208=41000008 # LA R0,8 R0=Number of test data >+r 20C=41100800 # LA R1,TEST1 R1=>Test data table >+r 210=41F00900 # LA R15,RES1 R15=>Result table >+r 214=78401000 #A LE F4,0(,R1) Load FPR4=TESTn >+r 218=41200000 # LA R2,X'00' R2=Rounding mode >+r 21C=42200222 #B STC R2,I+2 Store rounding mode into instr >+r 220=B3C80074 #I CGER R7,0,F4 Convert FPR4 into R7 >+r 224=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 228=5890008C # L R9,PGMINTC R9=PGM check interrupt code >+r 22C=E370F0000024 # STG R7,0(,R15) Store R7 in result table >+r 232=9089F008 # STM R8,R9,8(R15) Store CC and PIC in table >+r 236=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 23A=EC270005107F # CLIJNE R2,X'10',*+10 Skip if not rounding mode 1 >+r 240=41202020 # LA R2,X'20'(R2) Bypass rounding modes 2 and 3 >+r 244=41202010 # LA R2,X'10'(R2) R2=Next rounding mode >+r 248=EC24021C80FF # CLIBL R2,X'80',B Loop if rounding mode less than 8 >+r 24E=41101004 # LA R1,4(,R1) R1=>Next TESTn >+r 252=46000214 # BCT R0,A Loop to end of TEST table >+r 256=41000900 # LA R0,RES1 R0->Actual results >+r 25A=41100300 # LA R1,48*16 R1=Length of results table >+r 25E=41200C00 # LA R2,EXP1 R2->Expected results >+r 262=41300300 # LA R3,48*16 R3=Length of results table >+r 266=0F02 # CLCL R0,R2 Compare with expected results >+r 268=477002FC # BNE DIE Error if not equal >+r 26C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2FC=B2B20310 # LPSWE DISWAIT Load disabled wait PSW >+r 300=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW >+r 310=00020001800000000000000000BADBAD # DISWAIT Disabled wait state PSW >+r 320=00000001800000000000000000000340 # NEWPSWI New PSW for PGMFLIH >+r 330=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 334=00000000 # FPCREG Floating point control register >+r 340=B2B20150 #PGMFLIH LPSWE PGMOPSW Program check interrupt handler >+r 800=D0800000 # TEST1 DC EH'-9223372036854775808' >+r 804=D07FFFFF # TEST2 DC EH'-9223370937343148032' >+r 808=C27B8000 # TEST3 DC EH'-123.5' >+r 80C=80000000 # TEST4 DC EH'-0' >+r 810=427A8000 # TEST5 DC EH'122.5' >+r 814=487FFFFF # TEST6 DC EH'2147483392' >+r 818=507FFFFF # TEST7 DC EH'9223370937343148032' >+r 81C=50800000 # TEST8 DC EH'9223372036854775808' >+* Expected results - TEST1 >+r C00=80000000000000001000000000000000 >+r C10=80000000000000001000000000000000 >+r C20=80000000000000001000000000000000 >+r C30=80000000000000001000000000000000 >+r C40=80000000000000001000000000000000 >+r C50=80000000000000001000000000000000 >+* Expected results - TEST2 >+r C60=80000100000000001000000000000000 >+r C70=80000100000000001000000000000000 >+r C80=80000100000000001000000000000000 >+r C90=80000100000000001000000000000000 >+r CA0=80000100000000001000000000000000 >+r CB0=80000100000000001000000000000000 >+* Expected results - TEST3 >+r CC0=FFFFFFFFFFFFFF851000000000000000 >+r CD0=FFFFFFFFFFFFFF841000000000000000 >+r CE0=FFFFFFFFFFFFFF841000000000000000 >+r CF0=FFFFFFFFFFFFFF851000000000000000 >+r D00=FFFFFFFFFFFFFF851000000000000000 >+r D10=FFFFFFFFFFFFFF841000000000000000 >+* Expected results - TEST4 >+r D20=00000000000000000000000000000000 >+r D30=00000000000000000000000000000000 >+r D40=00000000000000000000000000000000 >+r D50=00000000000000000000000000000000 >+r D60=00000000000000000000000000000000 >+r D70=00000000000000000000000000000000 >+* Expected results - TEST5 >+r D80=000000000000007A2000000000000000 >+r D90=000000000000007B2000000000000000 >+r DA0=000000000000007A2000000000000000 >+r DB0=000000000000007A2000000000000000 >+r DC0=000000000000007B2000000000000000 >+r DD0=000000000000007A2000000000000000 >+* Expected results - TEST6 >+r DE0=000000007FFFFF002000000000000000 >+r DF0=000000007FFFFF002000000000000000 >+r E00=000000007FFFFF002000000000000000 >+r E10=000000007FFFFF002000000000000000 >+r E20=000000007FFFFF002000000000000000 >+r E30=000000007FFFFF002000000000000000 >+* Expected results - TEST7 >+r E40=7FFFFF00000000002000000000000000 >+r E50=7FFFFF00000000002000000000000000 >+r E60=7FFFFF00000000002000000000000000 >+r E70=7FFFFF00000000002000000000000000 >+r E80=7FFFFF00000000002000000000000000 >+r E90=7FFFFF00000000002000000000000000 >+* Expected results - TEST8 >+r EA0=7FFFFFFFFFFFFFFF3000000000000000 >+r EB0=7FFFFFFFFFFFFFFF3000000000000000 >+r EC0=7FFFFFFFFFFFFFFF3000000000000000 >+r ED0=7FFFFFFFFFFFFFFF3000000000000000 >+r EE0=7FFFFFFFFFFFFFFF3000000000000000 >+r EF0=7FFFFFFFFFFFFFFF3000000000000000 >+ostailor null >+restart >+pause 1 >+* Display test data >+r 800.20 >+* Display results - TEST1 >+r 900.60 >+* Display results - TEST2 >+r 960.60 >+* Display results - TEST3 >+r 9C0.60 >+* Display results - TEST4 >+r A20.60 >+* Display results - TEST5 >+r A80.60 >+* Display results - TEST6 >+r AE0.60 >+* Display results - TEST7 >+r B40.60 >+* Display results - TEST8 >+r BA0.60 >diff -Naupr hercules-3.05/tests/cgfrl.txt hercules-20070717/tests/cgfrl.txt >--- hercules-3.05/tests/cgfrl.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cgfrl.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,17 @@ >+* CGFRL test $Id: cgfrl.txt,v 1.1 2008/03/28 23:03:54 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000000800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000080000000000000000000DEAD # z/Arch pgm new PSW >+r 200=C038FFFFFFFF # IIHF R3,X'FFFFFFFF' Load R3 bits 0-31 >+r 206=C039A5A5A5A5 # IILF R3,X'A5A5A5A5' Load R3 bits 32-63 >+r 20C=C63C00000006 # CGFRL R3,*+12 Compare >+r 212=A7F40005 # BRC 15,*+10 Branch around compare value >+r 218=A5A5A5A5 # COMPR1 DC X'A5A5A5A5' Comparison data >+r 21C=A7840004 # BRC 8,*+8 Branch if equal >+r 220=B2B201D0 # LPSWE PGMNPSW Load error PSW >+r 224=B2B20270 # LPSWE WAITPSW Load enabled wait PSW >+r 270=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+ostailor null >+s+ >+restart >diff -Naupr hercules-3.05/tests/cgxr.txt hercules-20070717/tests/cgxr.txt >--- hercules-3.05/tests/cgxr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cgxr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,128 @@ >+* CGXR test $Id: cgxr.txt,v 1.2 2008/05/04 14:10:28 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=00020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 200=B7000330 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B29D0334 # LFPC FPCREG Load FPC register >+r 208=41000008 # LA R0,8 R0=Number of test data >+r 20C=41100800 # LA R1,TEST1 R1=>Test data table >+r 210=41F00900 # LA R15,RES1 R15=>Result table >+r 214=68401000 #A LD F4,0(,R1) Load FPR4=TESTn (high) >+r 218=68601008 # LD F6,8(,R1) Load FPR6=TESTn (low) >+r 21C=41200000 # LA R2,X'00' R2=Rounding mode >+r 220=42200232 #B STC R2,I+2 Store rounding mode into instr >+r 224=E54C008C0000 # MVHI PGMINTC,0 Clear PGM check interrupt code >+r 22A=D20F01D00320 # MVC PGMNPSW,NEWPSWI Set program check new PSW >+r 230=B3CA0074 # CXGR R7,0,F4 Convert FPR4,FPR6 into R7 >+r 234=D20F01D00310 # MVC PGMNPSW,DISWAIT Restore program check new PSW >+r 23A=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 23E=5890008C # L R9,PGMINTC R9=PGM check interrupt code >+r 242=E370F0000024 # STG R7,0(,R15) Store R7 in result table >+r 248=9089F008 # STM R8,R9,8(R15) Store CC and PIC in table >+r 24C=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 250=EC270005107F # CLIJNE R2,X'10',*+10 Skip if not rounding mode 1 >+r 256=41202020 # LA R2,X'20'(R2) Bypass rounding modes 2 and 3 >+r 25A=41202010 # LA R2,X'10'(R2) R2=Next rounding mode >+r 25E=EC24022080FF # CLIBL R2,X'80',B Loop if rounding mode less than 8 >+r 264=41101010 # LA R1,16(,R1) R1=>Next TESTn >+r 268=46000214 # BCT R0,A Loop to end of TEST table >+r 26C=41000900 # LA R0,RES1 R0->Actual results >+r 270=41100300 # LA R1,48*16 R1=Length of results table >+r 274=41200C00 # LA R2,EXP1 R2->Expected results >+r 278=41300300 # LA R3,48*16 R3=Length of results table >+r 27C=0F02 # CLCL R0,R2 Compare with expected results >+r 27E=477002FC # BNE DIE Error if not equal >+r 282=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2FC=B2B20310 # LPSWE DISWAIT Load disabled wait PSW >+r 300=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW >+r 310=00020001800000000000000000BADBAD # DISWAIT Disabled wait state PSW >+r 320=00000001800000000000000000000340 # NEWPSWI New PSW for PGMFLIH >+r 330=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 334=00000000 # FPCREG Floating point control register >+r 340=B2B20150 #PGMFLIH LPSWE PGMOPSW Program check interrupt handler >+r 800=D080000000000000C200800000000000 # TEST1 DC LH'-9223372036854775808.5' >+r 810=C880000000800000BA00000000000000 # TEST2 DC LH'-2147483648.5' >+r 820=C27B800000000000B400000000000000 # TEST3 DC LH'-123.5' >+r 830=80000000000000008000000000000000 # TEST4 DC LH'-0' >+r 840=427A8000000000003400000000000000 # TEST5 DC LH'122.5' >+r 850=487FFFFFFFC000003A00000000000000 # TEST6 DC LH'2147483647.75' >+r 860=507FFFFFFFFFFFFF42FF400000000000 # TEST7 DC LH'9223372036854775807.25' >+r 870=507FFFFFFFFFFFFF42FF800000000000 # TEST8 DC LH'9223372036854775807.5' >+* Expected results - TEST1 >+r C00=80000000000000001000000000000000 # RM=0 Round toward 0 >+r C10=80000000000000003000000000000000 # RM=1 Round nearest ties away from 0 >+r C20=80000000000000001000000000000000 # RM=4 Round nearest ties to even >+r C30=80000000000000001000000000000000 # RM=5 Round toward 0 >+r C40=80000000000000001000000000000000 # RM=6 Round toward +INF >+r C50=80000000000000003000000000000000 # RM=7 Round toward -INF >+* Expected results - TEST2 >+r C60=FFFFFFFF800000001000000000000000 >+r C70=FFFFFFFF7FFFFFFF1000000000000000 >+r C80=FFFFFFFF800000001000000000000000 >+r C90=FFFFFFFF800000001000000000000000 >+r CA0=FFFFFFFF800000001000000000000000 >+r CB0=FFFFFFFF7FFFFFFF1000000000000000 >+* Expected results - TEST3 >+r CC0=FFFFFFFFFFFFFF851000000000000000 >+r CD0=FFFFFFFFFFFFFF841000000000000000 >+r CE0=FFFFFFFFFFFFFF841000000000000000 >+r CF0=FFFFFFFFFFFFFF851000000000000000 >+r D00=FFFFFFFFFFFFFF851000000000000000 >+r D10=FFFFFFFFFFFFFF841000000000000000 >+* Expected results - TEST4 >+r D20=00000000000000000000000000000000 >+r D30=00000000000000000000000000000000 >+r D40=00000000000000000000000000000000 >+r D50=00000000000000000000000000000000 >+r D60=00000000000000000000000000000000 >+r D70=00000000000000000000000000000000 >+* Expected results - TEST5 >+r D80=000000000000007A2000000000000000 >+r D90=000000000000007B2000000000000000 >+r DA0=000000000000007A2000000000000000 >+r DB0=000000000000007A2000000000000000 >+r DC0=000000000000007B2000000000000000 >+r DD0=000000000000007A2000000000000000 >+* Expected results - TEST6 >+r DE0=000000007FFFFFFF2000000000000000 >+r DF0=00000000800000002000000000000000 >+r E00=00000000800000002000000000000000 >+r E10=000000007FFFFFFF2000000000000000 >+r E20=00000000800000002000000000000000 >+r E30=000000007FFFFFFF2000000000000000 >+* Expected results - TEST7 >+r E40=7FFFFFFFFFFFFFFF2000000000000000 >+r E50=7FFFFFFFFFFFFFFF2000000000000000 >+r E60=7FFFFFFFFFFFFFFF2000000000000000 >+r E70=7FFFFFFFFFFFFFFF2000000000000000 >+r E80=7FFFFFFFFFFFFFFF3000000000000000 >+r E90=7FFFFFFFFFFFFFFF2000000000000000 >+* Expected results - TEST8 >+r EA0=7FFFFFFFFFFFFFFF2000000000000000 >+r EB0=7FFFFFFFFFFFFFFF3000000000000000 >+r EC0=7FFFFFFFFFFFFFFF3000000000000000 >+r ED0=7FFFFFFFFFFFFFFF2000000000000000 >+r EE0=7FFFFFFFFFFFFFFF3000000000000000 >+r EF0=7FFFFFFFFFFFFFFF2000000000000000 >+ostailor null >+restart >+pause 1 >+* Display test data >+r 800.80 >+* Display results - TEST1 >+r 900.60 >+* Display results - TEST2 >+r 960.60 >+* Display results - TEST3 >+r 9C0.60 >+* Display results - TEST4 >+r A20.60 >+* Display results - TEST5 >+r A80.60 >+* Display results - TEST6 >+r AE0.60 >+* Display results - TEST7 >+r B40.60 >+* Display results - TEST8 >+r BA0.60 >diff -Naupr hercules-3.05/tests/cgxtr.txt hercules-20070717/tests/cgxtr.txt >--- hercules-3.05/tests/cgxtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cgxtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,47 @@ >+* CGXTR test $Id: cgxtr.txt,v 1.2 2007/01/24 16:36:48 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=47000000 # NOP Spare >+r 208=41000009 # LA R0,9 R0=Number of test data >+r 20C=41100320 # LA R1,TEST1 R1=>Test data table >+r 210=41F00400 # LA R15,RES1 R15=>Result table >+r 214=E3401000008F #A LPQ R4,0(,R1) Load R4,R5=TESTn >+r 21A=B3C10044 # LDGR F4,R4 Load FPR4 from R4 >+r 21E=B3C10065 # LDGR F6,R5 Load FPR6 from R5 >+r 222=41200002 # LA R2,2 R2=Number of DRM tests >+r 226=A7390003 # LGHI R3,3 R3=DRM 3 (round down) >+r 22A=B29D0314 #B LFPC FPCREG Load value into FPC register >+r 22E=B2B93000 # SRNMT 0(R3) Set DFP rounding mode from R3 >+r 232=B3E90074 # CGXTR R7,0,F4 Load R7 from FPR4,6 >+r 236=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 23A=B38C0090 # EFPC R9 R9=Copy of FPC register >+r 23E=E370F0000024 # STG R7,0(,R15) Store R7 in result table >+r 244=9089F008 # STM R8,R9,8(R15) Store CC and FPC in table >+r 248=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 24C=A7390002 # LGHI R3,2 R3=DRM 2 (round up) >+r 250=4620022A # BCT R2,B Loop for DRM 2 >+r 254=41101010 # LA R1,16(,R1) R1=>Next TESTn >+r 258=46000214 # BCT R0,A Loop to end of TEST table >+r 25C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=A207C00000000003A4CFA07A2C7F604B # TEST1 DC LD'-9223372036854775808.5' >+r 330=A208000000000000948DF20DA5CFD42E # TEST2 DC LD'-9223372036854775808' >+r 340=A207C000000000000000000000000005 # TEST3 DC LD'-0.5' >+r 350=A2080000000000000000000000000000 # TEST4 DC LD'-0' >+r 360=2207C000000000000000000000000035 # TEST5 DC LD'3.5' >+r 370=2208000000000000948DF20DA5CFD70D # TEST6 DC LD'9223372036854775807' >+r 380=2207C00000000003A4CFA07A2C7F6075 # TEST7 DC LD'9223372036854775807.5' >+r 390=78123456789ABCDE0123456789ABCDEF # TEST8 DC LD'INF' >+r 3A0=7EABCDEF01234567890123456789ABCD # TEST9 DC LD'SNAN' >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.90 >+* Display results >+r 400.120 >diff -Naupr hercules-3.05/tests/cpsdr.txt hercules-20070717/tests/cpsdr.txt >--- hercules-3.05/tests/cpsdr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cpsdr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,27 @@ >+* CPSDR test $Id: cpsdr.txt,v 1.2 2007/11/23 12:28:07 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000240 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0244 # LFAS FPCREG Load value into FPC register >+r 208=EB2502480004 # LMG R2,R5,TESTDAT Load R2-R5=Test data >+r 20E=B3C10002 # LDGR F0,R2 Load FPR0 from R2 >+r 212=B3C10023 # LDGR F2,R3 Load FPR2 from R3 >+r 216=B3C10014 # LDGR F1,R4 Load FPR1 from R4 >+r 21A=B3C10035 # LDGR F3,R5 Load FPR3 from R5 >+r 21E=B3720042 # CPSDR F4,F0,F2 Load FPR4 from FPR2 with sign of FPR0 >+r 222=B3724042 # CPSDR F4,F4,F2 Load FPR4 from FPR2 with sign of FPR4 >+r 226=B3722033 # CPSDR F3,F2,F3 Load FPR3 from FPR3 with sign of FPR3 >+r 22A=B3723031 # CPSDR F3,F3,F1 Load FPR3 from FPR1 with sign of FPR3 >+r 22E=B3722032 # CPSDR F3,F2,F2 Load FPR3 from FPR2 with sign of FPR2 >+r 232=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 240=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 244=80000000 # FPCREG Floating point control register >+r 248=07F3123456789ABC # FPR0 positive >+r 250=F813ABCDEF123456 # FPR2 negative >+r 258=7D55ABCDEF123456 # FPR1 positive >+r 260=8055ABCDEF123456 # FPR3 negative >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/cpu0off.core hercules-20070717/tests/cpu0off.core >--- hercules-3.05/tests/cpu0off.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cpu0off.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+ >+X X@² $ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/csst.txt hercules-20070717/tests/csst.txt >--- hercules-3.05/tests/csst.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/csst.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,27 @@ >+* CSST test $Id: csst.txt,v 1.2 2007/05/27 13:17:36 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000000000000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=58000314 # L R0,CODE8 R0=SC,FC >+r 204=E31003400004 # LG R1,PLPTR R1=Parameter list pointer >+r 20A=E34003480004 # LG R4,CMPVA R4=Compare value >+r 210=C84203700378 # CSST AREA1,AREA2,R4 Compare and Swap and Store >+r 216=58000310 # L R0,CODE4 R0=SC,FC >+r 21A=E31003400004 # LG R1,PLPTR R1=Parameter list pointer >+r 220=E34003480004 # LG R4,CMPVA R4=Compare value >+r 226=C84203700378 # CSST AREA1,AREA2,R4 Compare and Swap and Store >+r 22C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=12340300 # CODE4 DC X'12340300' SC=03,FC=00 >+r 314=12340101 # CODE8 DC X'12340101' SC=01,FC=01 >+r 340=A5A5A5A5A500035F # PLPTR DC A(PLIST) >+r 348=FFFFFFFFA5A6A7A8 # CMPVA Compare value >+r 350=1234567890ABCDEF # PLIST Replacement value >+r 358=0000000000000000 # " Reserved >+r 360=9FEDCBA087654321 # " Store value >+r 368=0000000000000000 # " Reserved >+r 370=A5A6A7A812345678 # AREA1 First operand >+r 378=FFFFFFFFFFFFFFFF # AREA2 Second operand >+s+ >+restart >diff -Naupr hercules-3.05/tests/cxgbr.txt hercules-20070717/tests/cxgbr.txt >--- hercules-3.05/tests/cxgbr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cxgbr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,12 @@ >+* CXGBR test $Id: cxgbr.txt,v 1.1 2006/12/29 15:15:29 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000230 # LCTL R0,R0,CTLR0 Set AFP bit >+r 204=B3A6000B # CXGBR R0,R11 Test CXGBR instruction >+r 208=B2B20220 # LPSWE WAITPSW Load enabled wait PSW >+r 220=07020001800000000000000000FED0D0 # Enabled wait state PSW >+r 230=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+s+ >+restart >diff -Naupr hercules-3.05/tests/cxgtr.txt hercules-20070717/tests/cxgtr.txt >--- hercules-3.05/tests/cxgtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/cxgtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,32 @@ >+* CXGTR,CDGTR test $Id: cxgtr.txt,v 1.3 2007/01/02 11:39:32 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=4100000A # LA R0,10 R0=Loop counter >+r 208=41100340 # LA R1,TEST1 R1=>Test data table >+r 20C=E33010000004 # LG R3,0(,R1) Load R3=TESTn >+r 212=B2BD0314 # LFAS FPCREG Load value into FPC register >+r 216=B3F90043 # CXGTR F4,R3 Convert FPR 4,6 from TESTn R3 >+r 21A=B3EB01C4 # CSXTR R12,F4,1 Convert to PACKED R12,R13 from FPR 4,6 >+r 21E=B3F10073 # CDGTR F7,R3 Convert FPR 7 from TESTn R3 >+r 222=B3E301F7 # CSDTR R15,F7,1 Convert to PACKED R15 from FPR 7 >+r 226=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 22A=4600020C # BCT R0,LOOP Loop to end of table >+r 22E=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 340=0000000000001000 # TEST1 DC G'4096' >+r 348=FFFFFFFFFFFFFFFE # TEST2 DC G'-2' >+r 350=7FFFFFFFFFFFFFFF # TEST3 DC G'9223372036854775807' >+r 358=8000000000000001 # TEST4 DC G'-9223372036854775807' >+r 360=8000000000000000 # TEST5 DC G'-9223372036854775808' >+r 368=0020000000000000 # TEST6 DC G'9007199254740992' >+r 370=000000007FFFFFFF # TEST7 DC G'2147483647' >+r 378=FFFFFFFF80000001 # TEST8 DC G'-2147483647' >+r 380=FFFFFFFF80000000 # TEST9 DC G'-2147483648' >+r 388=0000000000000000 # TESTA DC G'0' >+s+ >+restart >diff -Naupr hercules-3.05/tests/dxtr.txt hercules-20070717/tests/dxtr.txt >--- hercules-3.05/tests/dxtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/dxtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,25 @@ >+* DXTR test $Id: dxtr.txt,v 1.1 2006/12/29 15:15:29 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000230 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0234 # LFAS FPCREG Load value into FPC register >+r 208=EB2502400004 # LMG R2,R5,PACKED Load R2,R3=PACKED1 R4,R5=PACKED2 >+r 20E=B3FB0042 # CXSTR R4,R2 Load FPR R4,R6 from PACKED1 R2,R3 >+r 212=B3FB0014 # CXSTR R1,R4 Load FPR R1,R3 from PACKED2 R4,R5 >+r 216=B2B90003 # SRNMT 3 Set decimal rounding mode >+r 21A=B3D91094 # DXTR R9,R4,R1 Divide FPR R4,R6 by R1,R3 giving R9,R11 >+r 21E=B3EB00A9 # CSXTR R10,R9,0 Convert FPR R9,R11 to PACKED R10,R11 >+r 222=B3EB01C9 # CSXTR R12,R9,1 Convert FPR R9,R11 to PACKED R12,R13 >+r 226=EBAD02600024 # STMG R10,R13,RESULTC R10,R11=>RESULTC R12,R13=>RESULTF >+r 22C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 230=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 234=40000000 # FPCREG Floating point control register >+r 240=0000000000000000000000000000500C # PACKED1 DC PL16'500' >+r 250=0000000000000000000000000000000C # PACKED2 DC PL16'0' >+r 260=FEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED # RESULTC (with sign C) >+r 270=FEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED # RESULTF (with sign F) >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/epsw.txt hercules-20070717/tests/epsw.txt >--- hercules-3.05/tests/epsw.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/epsw.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,15 @@ >+* EPSW test $Id: epsw.txt,v 1.1 2007/11/15 21:34:01 rbowler Exp $ >+sysclear >+archmode esa/390 >+r 000=0008000080000200 # ESA/390 restart PSW >+r 068=000A00008000DEAD # ESA/390 pgm new PSW >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=98030240 # LM R0,R3,INITREG Load initial values into regs >+r 204=B98D0023 # EPSW R2,R3 R2=PSW bits 0-31, R3=PSW bit 32 >+r 208=B98D0010 # EPSW R1,0 R1=PSW bits 0-31, R0=unchanged >+r 20C=82000300 # LPSW WAITPSW Load enabled wait PSW >+r 240=EEEEEEEEDDDDDDDDCCCCCCCCBBBBBBBB # Initial values for regs 0-3 >+r 300=070A000080FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/exrl.txt hercules-20070717/tests/exrl.txt >--- hercules-3.05/tests/exrl.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/exrl.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,39 @@ >+* EXRL test $Id: exrl.txt,v 1.6 2008/04/11 21:20:42 rbowler Exp $ >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0000000180000000000000000000030A # z/Arch pgm new PSW >+r 200=41100000 # LA R1,0 >+r 204=C610000000FE # EXRL R1,*+196 Should load R2 with A(C1) >+r 20A=44000212 # EX1 EX 0,BR1 Should branch to C1 >+r 20E=47F00300 # B DIE Should not occur >+r 212=0542 # BR1 BALR R4,R2 Executed instruction >+r 288=C0100000000A # C1 LARL R1,C2 Addr to resume after PIC >+r 28E=E31001D80024 # STG R2,PGMNPSW+8 Update pgm new PSW >+r 294=440002AE # EX 0,EX2 Should cause PIC=0003 >+r 298=47F00300 # B DIE Should not occur >+r 29C=D50701100410 # C2 CLC PSABEAR,=A(EX1) Test the BEAR >+r 2A2=47700300 # BNE DIE Br if BEAR is wrong >+r 2A6=A7F40004 # B *+8 Br around executed instr >+r 2AA=47F002B8 # BR3 B C3 Executed instruction >+r 2AE=C610FFFFFFFE # EX2 EXRL R1,BR3 Should branch to C3 >+r 2B4=47F00300 # B DIE Should not occur >+r 2B8=C0100000000B # C3 LARL R1,C4 Addr to resume after PIC >+r 2BE=E31001D80024 # STG R2,PGMNPSW+8 Update pgm new PSW >+r 2C4=C61000000000 # EXRL R1,*+0 Should cause PIC=0003 >+r 2CA=47F00300 # B DIE Should not occur >+r 2CE=D50701100420 # C4 CLC PSABEAR,=A(EX2) Test the BEAR >+r 2D4=47700300 # BNE DIE Br if BEAR is wrong >+r 2D8=B2B20310 # LPSWE WAITPSW Load enabled wait PSW >+r 300=B2B20320 # DIE LPSWE DEADPSW Load disabled wait PSW >+r 310=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+r 320=0002000180000000000000000000DEAD # z/Arch disabled wait PSW >+r 400=41200288 # LA R2,C1 >+r 410=000000000000020A # =A(EX1) >+r 420=00000000000002AE # =A(EX2) >+* >+ostailor null >+s+ >+restart >diff -Naupr hercules-3.05/tests/fiebr.txt hercules-20070717/tests/fiebr.txt >--- hercules-3.05/tests/fiebr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/fiebr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,54 @@ >+* FIEBR test $Id: fiebr.txt,v 1.2 2008/04/16 14:09:43 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0314 # LFAS FPCREG Load value into FPC register >+r 208=E54C03180000 # MVHI COUNT,0 Clear error counter >+r 20E=41000004 # LA R0,4 R0=Number of test data >+r 212=41100320 # LA R1,TEST1 R1=>Test data table >+r 216=41E00400 # LA R14,EXPECT1 R14=>Expected result table >+r 21A=41F00500 # LA R15,ACTUAL1 R15=>Actual result table >+r 21E=78101000 #A LE F1,0(,R1) Load FPR1=test data >+r 222=41200004 # LA R2,4 R2=Number of BRM tests >+r 226=A7390000 # LGHI R3,0 R3=BRM 0 >+r 22A=B2993000 #B SRNM 0(R3) Set BFP rounding mode from R3 >+r 22E=B3570001 # FIEBR F0,0,F1 Load FPR0=INT(FPR1) >+r 232=7000F000 # STE F0,0(,R15) Store actual result >+r 236=ED00E0000009 # CEB F0,0(,R14) Compare with expected result >+r 23C=A7840005 # BRE *+10 Skip if equal >+r 240=EB010318006A # ASI COUNT,1 Add 1 to error counter >+r 246=41E0E004 # LA R14,4(,R14) R14=>next EXPECTn >+r 24A=41F0F004 # LA R15,4(,R15) R15=>next ACTUALn >+r 24E=41303001 # LA R3,1(,R3) R3=>Next BRM >+r 252=4620022A # BCT R2,B Loop thru BRM 0-3 >+r 256=41101004 # LA R1,4(,R1) R1=>Next TESTn >+r 25A=4600021E # BCT R0,A Loop to end of TEST table >+r 25E=58000318 # L R0,COUNT R0=error count >+r 262=EC0702F000FE # CIBNE DIE Branch if R0 not zero >+r 268=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2F0=B2B201D0 # DIE LPSWE PGMNPSW Load disabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 318=00000000 # COUNT Error counter >+r 320=40200000 # TEST1 DC EB'2.5' >+r 324=40600000 # TEST2 DC EB'3.5' >+r 328=C0200000 # TEST3 DC EB'-2.5' >+r 32C=C0600000 # TEST4 DC EB'-3.5' >+r 400=40000000400000004040000040000000 # EXPECT1 DC EB'2,2,3,2' >+r 410=40800000404000004080000040400000 # EXPECT2 DC EB'4,3,4,3' >+r 420=C0000000C0000000C0000000C0400000 # EXPECT3 DC EB'-2,-2,-2,-3' >+r 430=C0800000C0400000C0400000C0800000 # EXPECT4 DC EB'-4,-3,-3,-4' >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.10 >+* Display expected results >+r 400.40 >+* Display actual results >+r 500.40 >+* Display error count in R0 >+gpr >diff -Naupr hercules-3.05/tests/fixtr.txt hercules-20070717/tests/fixtr.txt >--- hercules-3.05/tests/fixtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/fixtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+* FIXTR test $Id: fixtr.txt,v 1.2 2007/01/23 17:01:24 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0314 # LFAS FPCREG Load value into FPC register >+r 208=41000005 # LA R0,5 R0=Number of test data >+r 20C=41100320 # LA R1,TEST1 R1=>Test data table >+r 210=41F00400 # LA R15,RES1 R15=>Result table >+r 214=E3401000008F #A LPQ R4,0(,R1) Load R4,R5=TESTn >+r 21A=B3C10044 # LDGR F4,R4 Load FPR4 from R4 >+r 21E=B3C10065 # LDGR F6,R5 Load FPR6 from R5 >+r 222=41200008 # LA R2,8 R2=Number of DRM tests >+r 226=A7390000 # LGHI R3,0 R3=DRM 0 >+r 22A=B2B93000 #B SRNMT 0(R3) Set DFP rounding mode from R3 >+r 22E=B3DF0054 # FIXTR F5,0,F4,0 Load int FPR5,7 from FPR4,6 >+r 232=B3CD0065 # LGDR R6,F5 Load R6 from FPR5 >+r 236=B3CD0077 # LGDR R7,F7 Load R7 from FPR7 >+r 23A=E360F000008E # STPQ R6,0(,R15) Store R6,R7 in result table >+r 240=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 244=41303001 # LA R3,1(,R3) R3=>Next DRM >+r 248=4620022A # BCT R2,B Loop thru DRM 0-7 >+r 24C=41101010 # LA R1,16(,R1) R1=>Next TESTn >+r 250=46000214 # BCT R0,A Loop to end of TEST table >+r 254=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=22080000000000000000000000000080 # TEST1 DC LD'100' >+r 330=2207C000000000000000000000000035 # TEST2 DC LD'3.5' >+r 340=A207C000000000000000000000000005 # TEST3 DC LD'-0.5' >+r 350=7EABCDEF01234567890123456789ABCD # TEST4 DC LD'SNAN' >+r 360=78123456789ABCDE0123456789ABCDEF # TEST5 DC LD'INF' >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.50 >+* Display results >+r 400.280 >diff -Naupr hercules-3.05/tests/iedtr.txt hercules-20070717/tests/iedtr.txt >--- hercules-3.05/tests/iedtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/iedtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,46 @@ >+* IEDTR test $Id: iedtr.txt,v 1.1 2007/01/05 16:58:02 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=41000005 # LA R0,5 R0=Number of test data >+r 208=41100380 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=68601000 #A LD F6,0(,R1) Load FPR6=TESTn >+r 214=B3E500E6 # EEDTR R14,F6 Extract exponent from FPR6 >+r 218=E3E0F0000024 # STG R14,0(,R15) Store exponent in result table >+r 21E=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 222=41200007 # LA R2,7 R2=Number of BEXP tests >+r 226=41300318 # LA R3,BEXP1 R3=>BEXP test table >+r 22A=E34030000004 #B LG R4,0(,R3) Load R4=BEXPn >+r 230=B3F66084 # IEDTR F8,F6,R4 Insert BEXPn in F6, result in F8 >+r 234=6080F000 # STD F8,0(,R15) Store F8 in result table >+r 238=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 23C=41303008 # LA R3,8(,R3) R3=>Next BEXPn >+r 240=4620022A # BCT R2,B Loop to end of BEXP table >+r 244=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 248=46000210 # BCT R0,A Loop to end of TEST table >+r 24C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 318=0000000000000300 # BEXP1 DC G'768' >+r 320=00000000000002FF # BEXP2 DC G'767' >+r 328=0000000000000000 # BEXP3 DC G'0' >+r 330=FFFFFFFFFFFFFFFF # BEXP4 DC G'-1' >+r 338=FFFFFFFFFFFFFFFE # BEXP5 DC G'-2' >+r 340=FFFFFFFFFFFFFFFD # BEXP6 DC G'-3' >+r 348=FFFFFFFFFFFFFFFC # BEXP7 DC G'-4' >+r 380=2238000000000000 # TEST1 DC DD'0' Zero positive >+r 388=2238123456789ABC # TEST2 DC DD'1' Normal positive >+r 390=78123456789ABCDE # TEST3 DC DD'INF' Infinity positive >+r 398=7CABCDEF01234567 # TEST4 DC DD'QNAN' QNaN positive >+r 3A0=FE0000000000ABCD # TEST5 DC DD'-SNAN' SNaN negative >+restart >+pause 1 >+* Display test data >+r 310.40 >+r 380.28 >+* Display results >+r 400.140 >diff -Naupr hercules-3.05/tests/kimd0.txt hercules-20070717/tests/kimd0.txt >--- hercules-3.05/tests/kimd0.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kimd0.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,26 @@ >+* KIMD fc0 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000000 # LA R0,0 R0->function code 0 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200000 # LA R2,SO R2->second operand address >+r 20C=41300000 # LA R3,SOL R3->second operand length >+r 210=B93E0002 # KIMD R0,R2 Compute intermediate message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 580=F0000000000000000000000000000000 # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.F >+* Expected result >+r 580.F >diff -Naupr hercules-3.05/tests/kimd1.txt hercules-20070717/tests/kimd1.txt >--- hercules-3.05/tests/kimd1.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kimd1.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,33 @@ >+* KIMD fc1 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000001 # LA R0,1 R0->function code 1 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200600 # LA R2,SO R2->second operand address >+r 20C=41300040 # LA R3,SOL R3->second operand length >+r 210=B93E0002 # KIMD R0,R2 Compute intermediate message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=67452301EFCDAB8998BADCFE10325476 # Parameter block >+r 510=C3D2E1F0 # Parameter block >+* >+r 580=B9AC757BBC2979252E22727406872F94 # Expected result >+r 590=CBEA56A1000000000000000000000000 # Expected result >+* >+r 600=000102030405060708090A0B0C0D0E0F # Second operand >+r 610=101112131415161718191A1B1C1D1E1F # Second operand >+r 620=202122232425262728292A2B2C2D2E2F # Second operand >+r 630=303132333435363738393A3B3C3D3E3F # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.14 >+* Expected result >+r 580.14 >diff -Naupr hercules-3.05/tests/kimd2.txt hercules-20070717/tests/kimd2.txt >--- hercules-3.05/tests/kimd2.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kimd2.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,33 @@ >+* KIMD fc2 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000002 # LA R0,2 R0->function code 2 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200600 # LA R2,SO R2->second operand address >+r 20C=41300040 # LA R3,SOL R3->second operand length >+r 210=B93E0002 # KIMD R0,R2 Compute intermediate message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=6A09E667BB67AE853C6EF372A54FF53A # Parameter block >+r 510=510E527F9B05688C1F83D9AB5BE0CD19 # Parameter block >+* >+r 580=FC99A2DF88F42A7A7BB9D18033CDC6A2 # Expected result >+r 590=0256755F9D5B9A5044A9CC315ABE84A7 # Expected result >+* >+r 600=000102030405060708090A0B0C0D0E0F # Second operand >+r 610=101112131415161718191A1B1C1D1E1F # Second operand >+r 620=202122232425262728292A2B2C2D2E2F # Second operand >+r 630=303132333435363738393A3B3C3D3E3F # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.14 >+* Expected result >+r 580.14 >diff -Naupr hercules-3.05/tests/kimd3.txt hercules-20070717/tests/kimd3.txt >--- hercules-3.05/tests/kimd3.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kimd3.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+* KIMD fc3 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000003 # LA R0,3 R0->function code 3 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200600 # LA R2,SO R2->second operand address >+r 20C=41300080 # LA R3,SOL R3->second operand length >+r 210=B93E0002 # KIMD R0,R2 Compute intermediate message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=6A09E667F3BCC908BB67AE8584CAA73B # Parameter block >+r 510=3C6EF372FE94F82BA54FF53A5F1D36F1 # Parameter block >+r 520=510E527FADE682D19B05688C2B3E6C1F # Parameter block >+r 530=1F83D9ABFB41BD6B5BE0CD19137E2179 # Parameter block >+* >+r 580=8E03953CD57CD6879321270AFA70C582 # Expected result >+r 590=7BB5B69BE59A8F0130147E94F2AEDF7B # Expected result >+r 5A0=DC01C56C92343CA8BD837BB7F0208F5A # Expected result >+r 5B0=23E155694516B6F147099D491A30B151 # Expected result >+* >+r 600=000102030405060708090A0B0C0D0E0F # Second operand >+r 610=101112131415161718191A1B1C1D1E1F # Second operand >+r 620=202122232425262728292A2B2C2D2E2F # Second operand >+r 630=303132333435363738393A3B3C3D3E3F # Second operand >+r 640=404142434445464748494A4B4C4D4E4F # Second operand >+r 650=505152535455565758595A5B5C5D5E5F # Second operand >+r 660=606162636465666768696A6B6C6D6E6F # Second oparand >+r 670=707172737475767778797A7B7C7D7E7F # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.40 >+* Expected result >+r 580.40 >diff -Naupr hercules-3.05/tests/klmd0.txt hercules-20070717/tests/klmd0.txt >--- hercules-3.05/tests/klmd0.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/klmd0.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,26 @@ >+* KLMD fc0 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000000 # LA R0,0 R0->function code 0 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200000 # LA R2,SO R2->second operand address >+r 20C=41300000 # LA R3,SOL R3->second operand length >+r 210=B93F0002 # KLMD R0,R2 Compute last message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 580=F0000000000000000000000000000000 # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.F >+* Expected result >+r 580.F >diff -Naupr hercules-3.05/tests/klmd1.txt hercules-20070717/tests/klmd1.txt >--- hercules-3.05/tests/klmd1.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/klmd1.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,33 @@ >+* KLMD fc1 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000001 # LA R0,1 R0->function code 1 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200600 # LA R2,SO R2->second operand address >+r 20C=41300040 # LA R3,SOL R3->second operand length >+r 210=B93F0002 # KLMD R0,R2 Compute last message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=67452301EFCDAB8998BADCFE10325476 # Parameter block >+r 510=C3D2E1F00000000000000040 # Parameter block >+* >+r 580=C5592921382388B41AE53FA27A726F8B # Expected result >+r 590=64D9FFA2000000000000004000000000 # Expected result >+* >+r 600=000102030405060708090A0B0C0D0E0F # Second operand >+r 610=101112131415161718191A1B1C1D1E1F # Second operand >+r 620=202122232425262728292A2B2C2D2E2F # Second operand >+r 630=303132333435363738393A3B3C3D3E3F # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.14 >+* Expected result >+r 580.14 >diff -Naupr hercules-3.05/tests/klmd2.txt hercules-20070717/tests/klmd2.txt >--- hercules-3.05/tests/klmd2.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/klmd2.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,34 @@ >+* KLMD fc2 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000002 # LA R0,2 R0->function code 2 >+r 204=41100500 # LA R1,PB R1->parameter block >+r 208=41200600 # LA R2,SO R2->second operand address >+r 20C=41300040 # LA R3,SOL R3->second operand length >+r 210=B93F0002 # KLMD R0,R2 Compute last message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=6A09E667BB67AE853C6EF372A54FF53A # Parameter block >+r 510=510E527F9B05688C1F83D9AB5BE0CD19 # Parameter block >+r 520=0000000000000040 # Parameter block >+* >+r 580=0DD42DCAAAEF32477F5DA8AD90F472AB # Expected result >+r 590=98F3BE9FDA5352A3E4317A7D8BA70CA0 # Expected result >+* >+r 600=000102030405060708090A0B0C0D0E0F # Second operand >+r 610=101112131415161718191A1B1C1D1E1F # Second operand >+r 620=202122232425262728292A2B2C2D2E2F # Second operand >+r 630=303132333435363738393A3B3C3D3E3F # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.14 >+* Expected result >+r 580.14 >diff -Naupr hercules-3.05/tests/klmd3.txt hercules-20070717/tests/klmd3.txt >--- hercules-3.05/tests/klmd3.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/klmd3.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,42 @@ >+* KLMD fc3 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000003 # LA R0,3 R0->function code 3 >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,SO R2->second operand >+r 20C=41300080 # LA R3,SOL R3->second operand length >+r 210=B93F0002 # KLMD R0,R2 Compute last message digest >+r 214=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=6A09E667F3BCC908BB67AE8584CAA73B # Parameter block >+r 510=3C6EF372FE94F82BA54FF53A5F1D36F1 # Parameter block >+r 520=510E527FADE682D19B05688C2B3E6C1F # Parameter block >+r 530=1F83D9ABFB41BD6B5BE0CD19137E2179 # Parameter block >+r 540=00000000000000000000000000000080 # Parameter block >+* >+r 580=AEAC2C1F2D9463A0565528042B36621F # Expected result >+r 590=17CD05332E019406E56E04B59FDC643B # Expected result >+r 5A0=B0439B9E1D856C288AE473347C4A917E # Expected result >+r 5b0=5DBBF041718F75102BF1CB11BD38A894 # Expected result >+* >+r 600=000102030405060708090A0B0C0D0E0F # Second operand >+r 610=101112131415161718191A1B1C1D1E1F # Second operand >+r 620=202122232425262728292A2B2C2D2E2F # Second operand >+r 630=303132333435363738393A3B3C3D3E3F # Second operand >+r 640=404142434445464748494A4B4C4D4E4F # Second operand >+r 650=505152535455565758595A5B5C5D5E5F # Second operand >+r 660=606162636465666768696A6B6C6D6E6F # Second oparand >+r 670=707172737475767778797A7B7C7D7E7F # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.40 >+* Expected result >+r 580.40 >diff -Naupr hercules-3.05/tests/km0.txt hercules-20070717/tests/km0.txt >--- hercules-3.05/tests/km0.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km0.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,27 @@ >+* KM fc0 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000000 # LA R0,0 R0->function code 0 >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200000 # LA R2,FO R2->first operand >+r 20C=41400000 # LA R4,SO R4->second operand >+r 210=41500000 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 580=F0003800000000000000000000000000 # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.f >+* Expected result >+r 580.f >diff -Naupr hercules-3.05/tests/km18.txt hercules-20070717/tests/km18.txt >--- hercules-3.05/tests/km18.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km18.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+* KM fc18 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000012 # LA R0,X'12' R0->function code 18 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500010 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=41000092 # LA R0,X'92' R0->function code 18 decrypt >+r 21C=41100500 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500010 # LA R5,FOL R5->first operand length >+r 22C=B92E0024 # KM R2,R4 Cipher message >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 600=000102030405060708090A0B0C0D0E0F # First operand >+* >+r 680=0A940BB5416EF045F1C39458C653EA5A # Expected result >+* >+r 700=000102030405060708090A0B0C0D0E0F # Second operand >+* >+r 800=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/km19.txt hercules-20070717/tests/km19.txt >--- hercules-3.05/tests/km19.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km19.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,42 @@ >+* KM fc19 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000013 # LA R0,X'13' R0->function code 19 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500010 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=41000093 # LA R0,X'93' R0->function code 19 decrypt >+r 21C=41100500 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500010 # LA R5,FOL R5->first operand length >+r 22C=B92E0024 # KM R2,R4 Cipher message >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=1011121314151617 # Parameter block >+* >+r 600=000102030405060708090A0B0C0D0E0F # First operand >+* >+r 680=0060BFFE46834BB8DA5CF9A61FF220AE # Expected result >+* >+r 700=000102030405060708090A0B0C0D0E0F # Second operand >+* >+r 800=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/km1.txt hercules-20070717/tests/km1.txt >--- hercules-3.05/tests/km1.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km1.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+* KM fc1 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000001 # LA R0,X'01' R0->function code 1 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=41000081 # LA R0,X'81' R0->function code 1 decrypt >+r 21C=41100500 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500008 # LA R5,FOL R5->first operand length >+r 22C=B92E0024 # KM R2,R4 Cipher message >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=0001020304050607 # Parameter block >+* >+r 600=0001020304050607 # First operand >+* >+r 680=E1B246E5A7C74CBC # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 800=FFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/km20.txt hercules-20070717/tests/km20.txt >--- hercules-3.05/tests/km20.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km20.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,42 @@ >+* KM fc20 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000014 # LA R0,X'14' R0->function code 20 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500010 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=41000094 # LA R0,X'94' R0->function code 20 decrypt >+r 21C=41100500 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500010 # LA R5,FOL R5->first operand length >+r 22C=B92E0024 # KM R2,R4 Cipher message >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+* >+r 600=000102030405060708090A0B0C0D0E0F # First operand >+* >+r 680=5A6E045708FB7196F02E553D02C3A692 # Expected result >+* >+r 700=000102030405060708090A0B0C0D0E0F # Second operand >+* >+r 800=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/km2.txt hercules-20070717/tests/km2.txt >--- hercules-3.05/tests/km2.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km2.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,41 @@ >+* KM fc2 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000002 # LA R0,X'02' R0->function code 2 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=41000082 # LA R0,X'82' R0->function code 2 decrypt >+r 21C=41100500 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500008 # LA R5,FOL R5->first operand length >+r 22C=B92E0024 # KM R2,R4 Cipher message >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 600=0001020304050607 # First operand >+* >+r 680=DF0B6C9C31CD0CE4 # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 800=FFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/km3.txt hercules-20070717/tests/km3.txt >--- hercules-3.05/tests/km3.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/km3.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,42 @@ >+* KM fc3 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000003 # LA R0,X'03' R0->function code 3 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92E0024 # KM R2,R4 Cipher message >+r 218=41000083 # LA R0,X'83' R0->function code 3 decrypt >+r 21C=41100500 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500008 # LA R5,FOL R5->first operand length >+r 22C=B92E0024 # KM R2,R4 Cipher message >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=1011121314151617 >+* >+r 600=0001020304050607 # First operand >+* >+r 680=58ED248F77F6B19E # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 800=FFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmac0.txt hercules-20070717/tests/kmac0.txt >--- hercules-3.05/tests/kmac0.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmac0.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,27 @@ >+* KMAC fc0 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000000 # LA R0,0 R0->function code 0 >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200000 # LA R2,FO R2->first operand >+r 20C=41400000 # LA R4,SO R4->second operand >+r 210=41500000 # LA R5,SOL R5->second operand length >+r 214=B91E0024 # KMAC R2,R4 Compute message authentication code >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 580=F0000000000000000000000000000000 # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.f >+* Expected result >+r 580.f >diff -Naupr hercules-3.05/tests/kmac1.txt hercules-20070717/tests/kmac1.txt >--- hercules-3.05/tests/kmac1.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmac1.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,29 @@ >+* KMAC fc1 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000001 # LA R0,X'01' R0->function code 1 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B91E0024 # KMAC R2,R4 Compute message authentication code >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 580=D7423E1B84911C2E08090A0B0C0D0E0F # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 500.8 >+* Expected results >+r 580.8 >diff -Naupr hercules-3.05/tests/kmac2.txt hercules-20070717/tests/kmac2.txt >--- hercules-3.05/tests/kmac2.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmac2.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,30 @@ >+* KMAC fc2 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000002 # LA R0,X'02' R0->function code 2 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B91E0024 # KMAC R2,R4 Compute message authentication code >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=1011121314151617 # Parameter block >+* >+r 580=F4F9F93F1B40EDE708090A0B0C0D0E0F # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 500.8 >+* Expected results >+r 580.8 >diff -Naupr hercules-3.05/tests/kmac3.txt hercules-20070717/tests/kmac3.txt >--- hercules-3.05/tests/kmac3.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmac3.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,30 @@ >+* KMAC fc3 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000003 # LA R0,X'03' R0->function code 3 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B91E0024 # KMAC R2,R4 Compute message authentication code >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+* >+r 580=5790A6D02A3BF33708090A0B0C0D0E0F # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 500.8 >+* Expected results >+r 580.8 >diff -Naupr hercules-3.05/tests/kmc0.txt hercules-20070717/tests/kmc0.txt >--- hercules-3.05/tests/kmc0.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc0.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,27 @@ >+* KMC fc0 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000000 # LA R0,0 R0->function code 0 >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200000 # LA R2,FO R2->first operand >+r 20C=41400000 # LA R4,SO R4->second operand >+r 210=41500000 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 580=F0003800000000001000000000000000 # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter block >+r 500.f >+* Expected result >+r 580.f >diff -Naupr hercules-3.05/tests/kmc18.txt hercules-20070717/tests/kmc18.txt >--- hercules-3.05/tests/kmc18.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc18.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,44 @@ >+* KMC fc18 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000012 # LA R0,X'12' R0->function code 18 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500010 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=41000092 # LA R0,X'92' R0->function code 18 decrypt >+r 21C=41100550 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500010 # LA R5,FOL R5->first operand length >+r 22C=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+r 550=000102030405060708090A0B0C0D0E0F # Parameter block >+r 560=101112131415161718191A1B1C1D1E1F # Parameter block >+* >+r 600=000102030405060708090A0B0C0D0E0F # First operand >+* >+r 680=EDA330F90EECD16C003E5FB09BCFF358 # Expected result >+* >+r 700=000102030405060708090A0B0C0D0E0F # Second operand >+* >+r 800=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmc19.txt hercules-20070717/tests/kmc19.txt >--- hercules-3.05/tests/kmc19.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc19.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,46 @@ >+* KMC fc19 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000013 # LA R0,X'13' R0->function code 19 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500010 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=41000093 # LA R0,X'93' R0->function code 19 decrypt >+r 21C=41100550 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500010 # LA R5,FOL R5->first operand length >+r 22C=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+r 520=202122232425262728 # Parameter block >+r 550=000102030405060708090A0B0C0D0E0F # Parameter block >+r 560=101112131415161718191A1B1C1D1E1F # Parameter block >+r 570=202122232425262728 # Parameter block >+* >+r 600=000102030405060708090A0B0C0D0E0F # First operand >+* >+r 680=7C91ED3B313477D7B3CA928CFAA752E7 # Expected result >+* >+r 700=000102030405060708090A0B0C0D0E0F # Second operand >+* >+r 800=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmc1.txt hercules-20070717/tests/kmc1.txt >--- hercules-3.05/tests/kmc1.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc1.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,42 @@ >+* KMC fc1 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000001 # LA R0,X'01' R0->function code 1 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=41000081 # LA R0,X'81' R0->function code 1 decrypt >+r 21C=41100550 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500008 # LA R5,FOL R5->first operand length >+r 22C=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 550=000102030405060708090A0B0C0D0E0F # Parameter block >+* >+r 600=0001020304050607 # First operand >+* >+r 680=D7423E1B84911C2E # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 800=FFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmc20.txt hercules-20070717/tests/kmc20.txt >--- hercules-3.05/tests/kmc20.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc20.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,46 @@ >+* KMC fc20 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000014 # LA R0,X'14' R0->function code 20 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500010 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=41000094 # LA R0,X'94' R0->function code 20 decrypt >+r 21C=41100550 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500010 # LA R5,FOL R5->first operand length >+r 22C=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+r 520=202122232425262728292A2B2C2D2E2F # Parameter block >+r 550=000102030405060708090A0B0C0D0E0F # Parameter block >+r 560=101112131415161718191A1B1C1D1E1F # Parameter block >+r 570=202122232425262728292A2B2C2D2E2F # Parameter block >+* >+r 600=000102030405060708090A0B0C0D0E0F # First operand >+* >+r 680=5390628A3ACF964F6E02053976A8035D # Expected result >+* >+r 700=000102030405060708090A0B0C0D0E0F # Second operand >+* >+r 800=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmc2.txt hercules-20070717/tests/kmc2.txt >--- hercules-3.05/tests/kmc2.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc2.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,44 @@ >+* KMC fc2 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000002 # LA R0,X'02' R0->function code 2 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=41000082 # LA R0,X'82' R0->function code 2 decrypt >+r 21C=41100550 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500008 # LA R5,FOL R5->first operand length >+r 22C=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=1011121314151617 # Parameter block >+r 550=000102030405060708090A0B0C0D0E0F # Parameter block >+r 560=1011121314151617 # Parameter block >+* >+r 600=0001020304050607 # First operand >+* >+r 680=F4F9F93F1B40EDE7 # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 800=FFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmc3.txt hercules-20070717/tests/kmc3.txt >--- hercules-3.05/tests/kmc3.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc3.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,44 @@ >+* KMC fc3 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000003 # LA R0,X'03' R0->function code 3 encrypt >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=41000083 # LA R0,X'83' R0->function code 3 decrypt >+r 21C=41100550 # LA R1,PB R1->parameter block address >+r 220=41200800 # LA R2,SO R2->second operand from encrypt operation >+r 224=41400600 # LA R4,FO R4->first operand from encrypt operation >+r 228=41500008 # LA R5,FOL R5->first operand length >+r 22C=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+r 550=000102030405060708090A0B0C0D0E0F # Parameter block >+r 560=101112131415161718191A1B1C1D1E1F # Parameter block >+* >+r 600=0001020304050607 # First operand >+* >+r 680=5790A6D02A3BF337 # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 800=FFFFFFFFFFFFFFFF # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 800.8 >+* Expected results >+r 680.8 >+r 700.8 >diff -Naupr hercules-3.05/tests/kmc67.txt hercules-20070717/tests/kmc67.txt >--- hercules-3.05/tests/kmc67.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/kmc67.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,36 @@ >+* KMC fc67 >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1D0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=41000043 # LA R0,X'43' R0->function code 67 >+r 204=41100500 # LA R1,PB R1->parameter block address >+r 208=41200600 # LA R2,FO R2->first operand >+r 20C=41400700 # LA R4,SO R4->second operand >+r 210=41500008 # LA R5,SOL R5->second operand length >+r 214=B92F0024 # KMC R2,R4 Cipher message with chaining >+r 218=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000123456789ABCDEF # WAITPSW Enabled wait state PSW >+* >+r 500=000102030405060708090A0B0C0D0E0F # Parameter block >+r 510=101112131415161718191A1B1C1D1E1F # Parameter block >+* >+r 600=0001020304050607 # First operand >+* >+r 680=871A10BDDECFD665 # Expected result >+* >+r 700=0001020304050607 # Second operand >+* >+r 780=928F13E90793F6F408090A0B0C0D0E0F # Expected result >+* >+ostailor null >+restart >+pause 1 >+* Display parameter blocks >+r 600.8 >+r 500.8 >+* Expected results >+r 680.8 >+r 780.8 >diff -Naupr hercules-3.05/tests/la2.core hercules-20070717/tests/la2.core >--- hercules-3.05/tests/la2.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/la2.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+AA A00A@@APPA``AppAA A >+A°°AÀÀAÐÐ AààAððGð >\ No newline at end of file >diff -Naupr hercules-3.05/tests/la.core hercules-20070717/tests/la.core >--- hercules-3.05/tests/la.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/la.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+X6A A0A0A0A0A0A0A0A0A0A0Gðÿÿÿ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/l.core hercules-20070717/tests/l.core >--- hercules-3.05/tests/l.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/l.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+X6A X0X0X0X0X0X0X0X0X0X0Gðÿÿÿ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/ldetr.txt hercules-20070717/tests/ldetr.txt >--- hercules-3.05/tests/ldetr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/ldetr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,26 @@ >+* LDETR test $Id: ldetr.txt,v 1.2 2006/12/30 15:54:18 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000240 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0244 # LFAS FPCREG Load value into FPC register >+r 208=78000248 # LE F0,INFP Load FPR0(short) from INFP >+r 20C=7820024C # LE F2,INFN Load FPR2(short) from INFN >+r 210=78100250 # LE F1,QNAN Load FPR1(short) from QNAN >+r 214=78300254 # LE F3,SNAN Load FPR3(short) from SNAN >+r 218=B3D40840 # LDETR F4,F0,8 Load FPR4 from FPR0 INFP >+r 21C=B3D40062 # LDETR F6,F2,0 Load FPR6 from FPR2 INFN >+r 220=B3D40851 # LDETR F5,F1,8 Load FPR5 from FPR1 QNAN >+r 224=B3D40073 # LDETR F7,F3,0 Load FPR7 from FPR3 SNAN >+r 228=B3D270F6 # ADTR F15,F6,F7 Multiply FPR6 by FPR7 giving FPR15 >+r 22C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 240=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 244=80000000 # FPCREG Floating point control register >+r 248=78FE1234 # INFP Positive infinity >+r 24C=F83EABCD # INFN Negative infinity >+r 250=7D56CDEF # QNAN Quiet NaN >+r 254=7F563456 # SNAN Signaling NaN >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/ldxtr.txt hercules-20070717/tests/ldxtr.txt >--- hercules-3.05/tests/ldxtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/ldxtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,48 @@ >+* LDXTR test $Id: ldxtr.txt,v 1.1 2007/01/29 15:19:59 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=47000000 # NOP Spare >+r 208=41000009 # LA R0,9 R0=Number of test data >+r 20C=41100320 # LA R1,TEST1 R1=>Test data table >+r 210=41F00400 # LA R15,RES1 R15=>Result table >+r 214=E3401000008F #A LPQ R4,0(,R1) Load R4,R5=TESTn >+r 21A=B3C10044 # LDGR F4,R4 Load FPR4 from R4 >+r 21E=B3C10065 # LDGR F6,R5 Load FPR6 from R5 >+r 222=41200002 # LA R2,2 R2=Number of DRM tests >+r 226=A7390003 # LGHI R3,3 R3=DRM 3 (round down) >+r 22A=B29D0314 #B LFPC FPCREG Load value into FPC register >+r 22E=B2B93000 # SRNMT 0(R3) Set DFP rounding mode from R3 >+r 232=B3DD0874 # LDXTR F7,0,F4,8 Load FPR7 from FPR4,6 >+r 236=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 23A=B38C0090 # EFPC R9 R9=Copy of FPC register >+r 23E=ED70F0000067 # STDY R7,0(,R15) Store FPR7 in result table >+r 244=9089F008 # STM R8,R9,8(R15) Store CC and FPC in table >+r 248=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 24C=A7390002 # LGHI R3,2 R3=DRM 2 (round up) >+r 250=4620022A # BCT R2,B Loop for DRM 2 >+r 254=41101010 # LA R1,16(,R1) R1=>Next TESTn >+r 258=46000214 # BCT R0,A Loop to end of TEST table >+r 25C=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=A207C00000000003A4CFA07A2C7F604B # TEST1 DC LD'-9223372036854775808.5' >+r 330=A208000000000000948DF20DA5CFD42E # TEST2 DC LD'-9223372036854775808' >+r 340=A207C000000000000000000000000005 # TEST3 DC LD'-0.5' >+r 350=A2080000000000000000000000000000 # TEST4 DC LD'-0' >+r 360=2207C000000000000000000000000035 # TEST5 DC LD'3.5' >+r 370=2208000000000000948DF20DA5CFD70D # TEST6 DC LD'9223372036854775807' >+r 380=2207C00000000003A4CFA07A2C7F6075 # TEST7 DC LD'9223372036854775807.5' >+r 390=78123456789ABCDE0123456789ABCDEF # TEST8 DC LD'INF' >+r 3A0=7EABCDEF01234567890123456789ABCD # TEST9 DC LD'SNAN' >+ostailor null >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.90 >+* Display results >+r 400.120 >diff -Naupr hercules-3.05/tests/ledtr.txt hercules-20070717/tests/ledtr.txt >--- hercules-3.05/tests/ledtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/ledtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,40 @@ >+* LEDTR test $Id: ledtr.txt,v 1.1 2007/01/30 14:31:08 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=41000005 # LA R0,5 R0=Number of test data >+r 208=41100320 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=68401000 #A LD R4,0(,R1) Load FPR4=TESTn >+r 214=41200002 # LA R2,2 R2=Number of DRM tests >+r 218=A7390003 # LGHI R3,3 R3=DRM 3 (round down) >+r 21C=B29D0314 #B LFPC FPCREG Load value into FPC register >+r 220=B2B93000 # SRNMT 0(R3) Set DFP rounding mode from R3 >+r 224=B3D50874 # LEDTR F7,0,F4,8 Load FPR7 from FPR4 >+r 228=B38C0090 # EFPC R9 R9=Copy of FPC register >+r 22C=7070F000 # STE R7,0(,R15) Store FPR7 in result table >+r 230=5090F004 # ST R9,4(R15) Store FPC in table >+r 234=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 238=A7390002 # LGHI R3,2 R3=DRM 2 (round up) >+r 23C=4620021C # BCT R2,B Loop for DRM 2 >+r 240=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 244=46000210 # BCT R0,A Loop to end of TEST table >+r 248=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=A234000000000005 # TEST1 DC DD'-0.5' >+r 328=A238000000000000 # TEST2 DC DD'-0' >+r 330=2234000000000035 # TEST3 DC DD'3.5' >+r 338=7823456789ABCDEF # TEST4 DC DD'INF' >+r 340=7EABCDEF01234566 # TEST5 DC DD'SNAN' >+ostailor null >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.28 >+* Display results >+r 400.50 >diff -Naupr hercules-3.05/tests/lfpc.txt hercules-20070717/tests/lfpc.txt >--- hercules-3.05/tests/lfpc.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/lfpc.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,15 @@ >+* LFPC test $Id: lfpc.txt,v 1.1 2007/11/15 22:54:43 rbowler Exp $ >+sysclear >+archmode esa/390 >+r 000=0008000080000200 # ESA/390 restart PSW >+r 068=000A00008000DEAD # ESA/390 pgm new PSW >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B29D0314 # LFPC FPCREG Load value into FPC register >+r 208=82000300 # LPSW WAITPSW Load enabled wait PSW >+r 300=070A000080FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=F8F8FF73 # FPCREG Floating point control register >+s+ >+restart >diff -Naupr hercules-3.05/tests/llhrl.txt hercules-20070717/tests/llhrl.txt >--- hercules-3.05/tests/llhrl.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/llhrl.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,19 @@ >+* LLHRL test $Id: llhrl.txt,v 1.1 2008/05/05 16:56:20 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=00020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 200=C058A5A5A5A5 # IIHF R5,X'A5A5A5A5' Load garbage in R5 bits 0-31 >+r 206=C0593C3C3C3C # IILF R5,X'3C3C3C3C' Load garbage in R5 bits 32-63 >+r 20C=C45200000005 # LLHRL R5,CONST1 Load halfword relative data >+r 212=A7F40003 # BRC *+6 Branch around constant >+r 216=ABCD # CONST1 DC X'ABCD' >+r 218=E35003000021 # CLG R5,EXPECT1 Compare with expected result >+r 21E=A7840004 # BE *+8 Branch if OK >+r 222=B2B201D0 # LPSWE PGMNEW Load error PSW >+r 226=B2B20270 # LPSWE WAITPSW Load enabled wait PSW >+r 270=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW >+* Test data >+r 300=A5A5A5A50000ABCD # EXPECT1 >+ostailor null >+restart >diff -Naupr hercules-3.05/tests/loop.txt hercules-20070717/tests/loop.txt >--- hercules-3.05/tests/loop.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/loop.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,85 @@ >+* Loop >+* >+* No-use script for showing high mips rates on the screen. >+* >+stopall >+pause 1 >+sysclear >+archmode esame >+r 1A0=00000001800000000000000000000200 # z/Arch restart PSW >+r 200=47000000 # noop >+r 204=47000000 >+r 208=47000000 >+r 20C=47000000 >+r 210=47000000 >+r 214=47000000 >+r 218=47000000 >+r 21C=47000000 >+r 220=47000000 >+r 224=47000000 >+r 228=47000000 >+r 22C=47000000 >+r 230=47000000 >+r 234=47000000 >+r 238=47000000 >+r 23C=47000000 >+r 240=47000000 >+r 244=47000000 >+r 248=47000000 >+r 24C=47000000 >+r 250=47000000 >+r 254=47000000 >+r 258=47000000 >+r 25C=47000000 >+r 260=47000000 >+r 264=47000000 >+r 268=47000000 >+r 26C=47000000 >+r 270=47000000 >+r 274=47000000 >+r 278=47000000 >+r 27C=47000000 >+r 280=47000000 >+r 284=47000000 >+r 288=47000000 >+r 28C=47000000 >+r 290=47000000 >+r 294=47000000 >+r 298=47000000 >+r 29C=47000000 >+r 2A0=47000000 >+r 2A4=47000000 >+r 2A8=47000000 >+r 2AC=47000000 >+r 2B0=47000000 >+r 2B4=47000000 >+r 2B8=47000000 >+r 2BC=47000000 >+r 2C0=47000000 >+r 2C4=47000000 >+r 2C8=47000000 >+r 2CC=47000000 >+r 2D0=47000000 >+r 2D4=47000000 >+r 2D8=47000000 >+r 2DC=47000000 >+r 2E0=47000000 >+r 2E4=47000000 >+r 2E8=47000000 >+r 2EC=47000000 >+r 2F0=47000000 >+r 2F4=47000000 >+r 2F8=47000000 >+r 2FC=47FF0200 # B 200 >+* >+ostailor null >+cpu 0 >+restart >+cpu 1 >+restart >+cpu 2 >+restart >+cpu 3 >+restart >+* Restart the same number of cpus as the underlying machine >+ >diff -Naupr hercules-3.05/tests/lxdtr.txt hercules-20070717/tests/lxdtr.txt >--- hercules-3.05/tests/lxdtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/lxdtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,27 @@ >+* LXDTR test $Id: lxdtr.txt,v 1.1 2006/12/29 15:15:29 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000240 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0244 # LFAS FPCREG Load value into FPC register >+r 208=EB2502480004 # LMG R2,R5,INFPOS1 Load R2=INFP,R3=INFN,R4=QNAN,R5=SNAN >+r 20E=B3C10002 # LDGR F0,R2 Load FPR0 from R2 INFP >+r 212=B3C10023 # LDGR F2,R3 Load FPR2 from R3 INFN >+r 216=B3C10014 # LDGR F1,R4 Load FPR1 from R4 QNAN >+r 21A=B3C10035 # LDGR F3,R5 Load FPR3 from R5 SNAN >+r 21E=B3DC0840 # LXDTR F4,F0,8 Load FPR4,6 from FPR0 INFP >+r 222=B3DC0852 # LXDTR F5,F2,8 Load FPR5,7 from FPR2 INFN >+r 226=B3DC0881 # LXDTR F8,F1,8 Load FPR8,10 from FPR1 QNAN >+r 22A=B3DC0893 # LXDTR F9,F3,8 Load FPR9,11 from FPR3 SNAN >+r 22E=B3DA50D4 # AXTR F13,F4,F5 Multiply FPR4,6 by FPR5,7 giving FPR13,15 >+r 232=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 240=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 244=80000000 # FPCREG Floating point control register >+r 248=7833123456789ABC # INFP Positive infinity >+r 250=F813ABCDEF123456 # INFN Negative infinity >+r 258=7D55ABCDEF123456 # QNAN Quiet NaN >+r 260=7F55ABCDEF123456 # SNAN Signaling NaN >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/maer.txt hercules-20070717/tests/maer.txt >--- hercules-3.05/tests/maer.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/maer.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,34 @@ >+* MAER test $Id: maer.txt,v 1.1 2007/11/23 17:34:10 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=68900320 # LD F9,TEST1 Load test data >+r 208=68800328 # LD F8,TEST2 Load test data >+r 20C=68C00330 # LD F12,TEST3 Load test data >+r 210=68D00380 # LD F13,EXP1 Load expected result >+r 214=B32400A8 # LDER F10,F8 Lengthen test data >+r 218=B32400B9 # LDER F11,F9 Lengthen test data >+r 21C=B32400EC # LDER F14,F12 Lengthen test data >+r 220=28F9 # LDR F15,F9 Prime result register >+r 222=B32E908C # MAER F9,F8,F12 FPR9=FPR8*FPR12+FPR9 >+* Multiply and Add using long instructions >+r 226=2CAE # MDR F10,F14 FPR10=FPR10*FPR14 >+r 228=2ABA # ADR F11,F10 FPR11=FPR11+FPR10 >+r 22A=35FB # LEDR F15,F11 FPR15=rounded FPR11 >+r 22C=60F00380 # STD F15,RES1 Store actual result >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+* Test data >+r 320=BF00BD608217487D # TEST1 >+r 328=C12022F43FBA7F77 # TEST2 >+r 330=A014BB629B763907 # TEST3 >+* Expected result >+r 380=BDBD5FFF8217487D # EXP1 >+ostailor null >+s+ >+pgmtrace +7 >+restart >diff -Naupr hercules-3.05/tests/Makefile.am hercules-20070717/tests/Makefile.am >--- hercules-3.05/tests/Makefile.am 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/Makefile.am 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,82 @@ >+dist_pkgdata_DATA = \ >+ a.core \ >+ b.core \ >+ bctr.core \ >+ cpu0off.core \ >+ l.core \ >+ la.core \ >+ la2.core \ >+ mvc.core \ >+ sieve.core \ >+ st.core >+ >+EXTRA_DIST = \ >+ alsi.txt \ >+ axtr.txt \ >+ brc.txt \ >+ cdfr.txt \ >+ cdgr.txt \ >+ cgdr.txt \ >+ cgdtr.txt \ >+ cger.txt \ >+ cgxr.txt \ >+ cgfrl.txt \ >+ cgxtr.txt \ >+ cpsdr.txt \ >+ csst.txt \ >+ cxgbr.txt \ >+ cxgtr.txt \ >+ dxtr.txt \ >+ epsw.txt \ >+ exrl.txt \ >+ fiebr.txt \ >+ fixtr.txt \ >+ iedtr.txt \ >+ kimd0.txt \ >+ kimd1.txt \ >+ kimd2.txt \ >+ kimd3.txt \ >+ klmd0.txt \ >+ klmd1.txt \ >+ klmd2.txt \ >+ klmd3.txt \ >+ km0.txt \ >+ km1.txt \ >+ km18.txt \ >+ km19.txt \ >+ km2.txt \ >+ km20.txt \ >+ km3.txt \ >+ kmac0.txt \ >+ kmac1.txt \ >+ kmac2.txt \ >+ kmac3.txt \ >+ kmc0.txt \ >+ kmc1.txt \ >+ kmc18.txt \ >+ kmc19.txt \ >+ kmc2.txt \ >+ kmc20.txt \ >+ kmc3.txt \ >+ kmc67.txt \ >+ ldetr.txt \ >+ ldxtr.txt \ >+ ledtr.txt \ >+ lfpc.txt \ >+ llhrl.txt \ >+ loop.txt \ >+ lxdtr.txt \ >+ maer.txt \ >+ mvcos.txt \ >+ mxtr.txt \ >+ prtest.txt \ >+ rnsbg.txt \ >+ rrdtr.txt \ >+ rrxtr.txt \ >+ srdt.txt \ >+ tapepos.txt \ >+ tbedr.txt \ >+ tdcdt.txt \ >+ tdgdt.txt \ >+ thder.txt \ >+ trte.txt >diff -Naupr hercules-3.05/tests/mvc.core hercules-20070717/tests/mvc.core >--- hercules-3.05/tests/mvc.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/mvc.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``Òÿ``GðÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/mvcos.txt hercules-20070717/tests/mvcos.txt >--- hercules-3.05/tests/mvcos.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/mvcos.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,83 @@ >+* MVCOS test $Id: mvcos.txt,v 1.1 2008/05/11 23:01:22 rbowler Exp $ >+sysclear >+archmode esame >+r 01a0=00000001800000000000000000002000 # z/Arch restart PSW >+r 01c0=00000001800000000000000000002670 # z/Arch svc new PSW >+r 01d0=04020001800000000000000000BADBAD # z/Arch pgm new PSW >+r 2000=A59F2000 # LLILL R9,X'2000' R9=Dest base register >+r 2004=A5AF3000 # LLILL R10,X'3000' R10=Source base register >+r 2008=EB039680002F # LCTLG C0,C3,CTLR0 Load control regs 0,1,2,3 >+r 200E=EB7796A0002F # LCTLG C7,C7,CTLR7 Load SASCE control reg 7 >+r 2014=EBDD96A8002F # LCTLG C13,C13,CTLR13 Load HASCE control reg 13 >+r 201A=80009606 # SSM DAT_ON Turn on addr translation >+r 201E=B2190100 # SAC X'100' Set secondary addr space >+r 2022=E320A0000003 # LRAG R2,SSOURCE R2=Real addr of secondary >+r 2028=41100040 # LA R1,X'48' R1=Storage key + fetch prot >+r 202C=B22B0012 # SSKE R1,R2 Set secondary storage key >+r 2030=B2190000 # SAC X'000' Set primary addr space >+r 2034=41500008 # LA R5,8 R5=MVCOS length >+r 2038=A7080000 # LHI R0,0 R0=Default key and AS >+r 203C=C8509800A000 # MVCOS DEST1,PSOURCE,R5 Move from primary >+r 2042=47709600 # BNZ DIE Branch if cc not zero >+r 2046=D50798009700 # CLC DEST1(8),EXP1 Compare with expected result >+r 204C=47709600 # BNE DIE Branch if not equal >+r 2050=0A01 # SVC X'01' Set PSW key=0, prob state >+r 2052=41500008 # LA R5,8 R5=MVCOS length >+r 2056=A7084083 # LHI R0,X'4083' R0=Key4, secondary AS >+r 205A=C8509808A000 # MVCOS DEST2,SSOURCE,R5 Move from secondary >+r 2060=47709600 # BNZ DIE Branch if cc not zero >+r 2064=D50798089708 # CLC DEST2(8),EXP2 Compare with expected result >+r 206A=47709600 # BNE DIE Branch if not equal >+r 206E=0A00 # SVC X'00' Set PSW key=0, supv state >+r 2070=B2B29610 # LPSWE WAITPSW Load enabled wait PSW >+r 2600=0A00 #DIE SVC X'00' Set PSW key=0, supv state >+r 2602=B2B201D0 # LPSWE PGMNPSW Load error PSW >+r 2606=04 #DAT_ON DC X'04' System mask DAT bit >+r 2610=07020001800000000000000000AAAAAA # WAITPSW Enabled wait PSW >+r 2620=04020001800000000000000000BADBAD # DISWAIT Disable wait PSW >+r 2630=00020001800000000000000000002640 # NEWPSWI New PSW for Pgm Chk >+r 2640=5880008C #PGMFLIH L R8,PGMINTC Pgm chk interrupt handler >+r 2644=B2B20150 # LPSWE PGMOPSW Resume interrupted program >+r 2670=D2000141008B #SVCFLIH MVC SVCOPSW+1(1),SVCINTC+3 Set key_CMWP >+r 2676=B2B20140 # LPSWE SVCOPSW Resume interrupted program >+r 2680=0000000004000000 # CTLR0 DAS control on >+r 2688=0000000000005000 # CTLR1 DC A(PSEGTAB) >+r 2690=0000000000000000 # CTLR2 DC A(DUCT) >+r 2698=0000000088000000 # CTLR3 PKM Keys 0,4 auth >+r 26A0=0000000000006000 # CTLR7 DC A(SSEGTAB) >+r 26A8=0000000000007000 # CTLR13 DC A(HSEGTAB) >+r 2700=D7D7D7D7D7D7D7D7 # EXP1 DC C'PPPPPPPP' >+r 2708=E2E2E2E2E2E2E2E2 # EXP2 DC C'SSSSSSSS' >+r 2710=C8C8C8C8C8C8C8C8 # EXP3 DC C'HHHHHHHH' >+r 2800=0000000000000000 # DEST1 DC XL8'00' >+r 2808=0000000000000000 # DEST2 DC XL8'00' >+r 2810=0000000000000000 # DEST3 DC XL8'00' >+* Segment tables >+r 5000=0000000000008000 # PSEGTAB DC A(PPAGTAB) >+r 6000=0000000000008800 # SSEGTAB DC A(SPAGTAB) >+r 7000=0000000000009000 # SSEGTAB DC A(HPAGTAB) >+* Page table for primary address space >+r 8000=0000000000000000 # PPAGTAB V=0000 R=0000 >+r 8008=0000000000001000 # PPAGTAB V=1000 R=1000 >+r 8010=0000000000002000 # PPAGTAB V=2000 R=2000 >+r 8018=000000000000A000 # PPAGTAB V=3000 R=A000 >+* Page table for secondary address space >+r 8800=0000000000000000 # SPAGTAB V=0000 R=0000 >+r 8808=0000000000001000 # SPAGTAB V=1000 R=1000 >+r 8810=0000000000002000 # SPAGTAB V=2000 R=2000 >+r 8818=000000000000B000 # SPAGTAB V=3000 R=B000 >+* Page table for home address space >+r 9000=0000000000000000 # HPAGTAB V=0000 R=0000 >+r 9008=0000000000001000 # HPAGTAB V=1000 R=1000 >+r 9010=0000000000002000 # HPAGTAB V=2000 R=2000 >+r 9018=000000000000C000 # HPAGTAB V=3000 R=C000 >+* Virtual page 3000 of primary address space >+r A000=D7D7D7D7D7D7D7D7 # PSOURCE DC C'PPPPPPPP' >+* Virtual page 3000 of secondary address space >+r B000=E2E2E2E2E2E2E2E2 # SSOURCE DC C'SSSSSSSS' >+* Virtual page 3000 of home address space >+r C000=C8C8C8C8C8C8C8C8 # HSOURCE DC C'HHHHHHHH' >+ostailor null >+s+ >+pgmtrace +7 >+restart >diff -Naupr hercules-3.05/tests/mxtr.txt hercules-20070717/tests/mxtr.txt >--- hercules-3.05/tests/mxtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/mxtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,26 @@ >+* MXTR test $Id: mxtr.txt,v 1.1 2006/12/29 15:15:29 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000240 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0244 # LFAS FPCREG Load value into FPC register >+r 208=EB3502480004 # LMG R3,R5,PACKED Load R3=PACKED1 R4,R5=PACKED2 >+r 20E=B3F30073 # CDSTR R7,R3 Load FPR R7 from PACKED1 R3 >+r 212=B3DC0847 # LXDTR R4,R7,8 Load FPR R4,R6 from FPR R7 >+r 216=B3FB0014 # CXSTR R1,R4 Load FPR R1,R3 from PACKED2 R4,R5 >+r 21A=B2B90003 # SRNMT 3 Set decimal rounding mode >+r 21E=B3D81094 # MXTR R9,R4,R1 Multiply FPR R4,R6 by R1,R3 giving R9,R11 >+r 222=B3EB00A9 # CSXTR R10,R9,0 Convert FPR R9,R11 to PACKED R10,R11 >+r 226=B3EB01C9 # CSXTR R12,R9,1 Convert FPR R9,R11 to PACKED R12,R13 >+r 22A=EBAD02600024 # STMG R10,R13,RESULTC R10,R11=>RESULTC R12,R13=>RESULTF >+r 230=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 240=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 244=40000000 # FPCREG Floating point control register >+r 248=000000000000500C # PACKED1 DC PL8'500' >+r 250=0000000000000000000000000000003C # PACKED2 DC PL16'3' >+r 260=FEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED # RESULTC (with sign C) >+r 270=FEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED # RESULTF (with sign F) >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+s+ >+restart >diff -Naupr hercules-3.05/tests/prtest.txt hercules-20070717/tests/prtest.txt >--- hercules-3.05/tests/prtest.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/prtest.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,14 @@ >+# Print test message to printer >+archmode S/370 >+sysreset >+r 00=0000000000000400 # Restart new PSW >+r 28=000200000000DEAD # Program new PSW >+r 48=00000440 # CAW >+r 400=4110000F # R1 = device address 00F >+r 404=9C001000 # SIO 0(R1) >+r 408=82000430 # LPSW WAITPSW >+r 430=000200000000BEEF # WAITPSW >+r 440=0900048000000005 # CCW >+r 480=C8C5D3D3D6 # Print data >+s+ >+restart >diff -Naupr hercules-3.05/tests/rnsbg.txt hercules-20070717/tests/rnsbg.txt >--- hercules-3.05/tests/rnsbg.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/rnsbg.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,36 @@ >+* RNSBG test $Id: rnsbg.txt,v 1.1 2008/03/30 00:08:51 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000000800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000080000000000000000000DEAD # z/Arch pgm new PSW >+r 200=E35002800004 # LG R5,=C'12345678' >+r 206=E36002880004 # LG R6,=C'ABCDEFGC' >+r 20C=EC5680073854 # RNSBGT R5,R6,0,7,56 >+r 212=47B0026C # BNM ERROR >+r 216=E35002800021 # CLG R5,=C'12345678' >+r 21C=4770026C # BNE ERROR >+r 220=EC5600073854 # RNSBG R5,R6,0,7,56 >+r 226=47B0026C # BNM ERROR >+r 22A=E35002900021 # CLG R5,=C'A2345678' >+r 230=4770026C # BNE ERROR >+r 234=EC5638070855 # RISBG R5,R6,56,7,8 >+r 23A=47B0026C # BNM ERROR >+r 23E=E35002980021 # CLG R5,=C'B234567A' >+r 244=4770026C # BNE ERROR >+r 248=EC56308F0055 # RISBGZ R5,R6,48,15,0 >+r 24E=47B0026C # BNM ERROR >+r 252=E35002A00021 # CLG R5,=AL2(C'AB',0,0,C'GC') >+r 258=4770026C # BNE ERROR >+r 25C=B2B20270 # LPSWE WAITPSW Load enabled wait PSW >+r 26C=B2B201D0 # LPSWE PGMNPSW Load error PSW >+r 270=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+* Test data >+r 280=F1F2F3F4F5F6F7F8 # =C'12345678' >+r 288=C1C2C3C4C5C6C7C3 # =C'ABCDEFGC' >+r 290=C1F2F3F4F5F6F7F8 # =C'A2345678' >+r 298=C2F2F3F4F5F6F7C1 # =C'B234567A' >+r 2A0=C1C200000000C7C3 # =AL2(C'AB',0,0,C'GC') >+ostailor null >+s+ >+pgmtrace +7 >+restart >diff -Naupr hercules-3.05/tests/rrdtr.txt hercules-20070717/tests/rrdtr.txt >--- hercules-3.05/tests/rrdtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/rrdtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,44 @@ >+* RRDTR test $Id: rrdtr.txt,v 1.1 2007/01/30 16:37:10 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=41000007 # LA R0,7 R0=Number of test data >+r 208=41100320 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=68601000 #A LD F6,0(,R1) Load FPR6=TESTn >+r 214=41200002 # LA R2,2 R2=Number of DRM tests >+r 218=A7390003 # LGHI R3,3 R3=DRM 3 (round down) >+r 21C=B29D0314 #B LFPC FPCREG Load value into FPC register >+r 220=B2B93000 # SRNMT 0(R3) Set DFP rounding mode from R3 >+r 224=41A00003 # LA R10,3 R10=Requested significance >+r 228=B3F7607A # RRDTR F7,F6,R10,0 Reround FPR7 from FPR6 >+r 22C=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 230=B38C0090 # EFPC R9 R9=Copy of FPC register >+r 234=6070F000 # STD R7,0(,R15) Store FPR7 in result table >+r 238=9089F008 # STM R8,R9,8(R15) Store CC and FPC in table >+r 23C=41F0F010 # LA R15,16(,R15) R15=>next result table >+r 240=A7390002 # LGHI R3,2 R3=DRM 2 (round up) >+r 244=4620021C # BCT R2,B Loop for DRM 2 >+r 248=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 24C=46000210 # BCT R0,A Loop to end of TEST table >+r 250=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=A2380000000049C5 # TEST1 DC DD'-12345' >+r 328=A234000000000005 # TEST2 DC DD'-0.5' >+r 330=A238000000000000 # TEST3 DC DD'-0' >+r 338=2234000000000035 # TEST4 DC DD'3.5' >+r 340=22380000000049C5 # TEST5 DC DD'12345' >+r 348=7823456789ABCDEF # TEST6 DC DD'INF' >+r 350=7E0123456789ABCD # TEST7 DC DD'SNAN' >+ostailor null >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.38 >+* Display results >+r 400.E0 >diff -Naupr hercules-3.05/tests/rrxtr.txt hercules-20070717/tests/rrxtr.txt >--- hercules-3.05/tests/rrxtr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/rrxtr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,47 @@ >+* RRXTR test $Id: rrxtr.txt,v 1.1 2007/01/30 16:20:32 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=41000007 # LA R0,7 R0=Number of test data >+r 208=41100320 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=E3401000008F #A LPQ R4,0(,R1) Load R4,R5=TESTn >+r 216=B3C10044 # LDGR F4,R4 Load FPR4 from R4 >+r 21A=B3C10065 # LDGR F6,R5 Load FPR6 from R5 >+r 21E=41200002 # LA R2,2 R2=Number of DRM tests >+r 222=A7390003 # LGHI R3,3 R3=DRM 3 (round down) >+r 226=B29D0314 #B LFPC FPCREG Load value into FPC register >+r 22A=B2B93000 # SRNMT 0(R3) Set DFP rounding mode from R3 >+r 22E=41A00003 # LA R10,3 R10=Requested significance >+r 232=B3FF405A # RRXTR F5,F4,R10,0 Reround FPR5,7 from FPR4,6 >+r 236=B2220080 # IPM R8 R8=Cond code and pgm mask >+r 23A=B38C0090 # EFPC R9 R9=Copy of FPC register >+r 23E=6050F000 # STD R5,0(,R15) Store FPR5 in result table >+r 242=6070F008 # STD R7,8(,R15) Store FPR7 in result table >+r 246=9089F010 # STM R8,R9,16(R15) Store CC and FPC in table >+r 24A=41F0F020 # LA R15,32(,R15) R15=>next result table >+r 24E=A7390002 # LGHI R3,2 R3=DRM 2 (round up) >+r 252=46200226 # BCT R2,B Loop for DRM 2 >+r 256=41101010 # LA R1,16(,R1) R1=>Next TESTn >+r 25A=46000210 # BCT R0,A Loop to end of TEST table >+r 25E=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=A20800000000000000000000000049C5 # TEST1 DC LD'-12345' >+r 330=A207C000000000000000000000000005 # TEST2 DC LD'-0.5' >+r 340=A2080000000000000000000000000000 # TEST3 DC LD'-0' >+r 350=2207C000000000000000000000000035 # TEST4 DC LD'3.5' >+r 360=220800000000000000000000000049C5 # TEST5 DC LD'12345' >+r 370=78123456789ABCDE0123456789ABCDEF # TEST6 DC LD'INF' >+r 380=7EABCDEF01234567890123456789ABCD # TEST7 DC LD'SNAN' >+ostailor null >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.70 >+* Display results >+r 400.1C0 >diff -Naupr hercules-3.05/tests/sieve.core hercules-20070717/tests/sieve.core >--- hercules-3.05/tests/sieve.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/sieve.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+GðEà EàÂEàÔGU`ôG@GðGðA` >+VvZpôÒPøXA%1þAFPFÒ@FÊþAPGÐð#þGð`þþ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/srdt.txt hercules-20070717/tests/srdt.txt >--- hercules-3.05/tests/srdt.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/srdt.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,50 @@ >+* SRDT test $Id: srdt.txt,v 1.2 2007/01/22 14:46:16 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=41000006 # LA R0,6 R0=Number of test data >+r 208=41100380 # LA R1,TEST1 R1=>Test data table >+r 20C=41F00400 # LA R15,RES1 R15=>Result table >+r 210=68601000 #A LD F6,0(,R1) Load FPR6=TESTn >+r 214=41200004 # LA R2,4 R2=Number of shift tests >+r 218=41300318 # LA R3,N1 R3=>Shift count table >+r 21C=58403000 #B L R4,0(,R3) Load R4=Nn >+r 220=ED6040008040 # SLDT F8,F6,0 Shift FPR6 left Nn digits >+r 226=6080F000 # STD F8,0(,R15) Store F8 in result table >+r 22A=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 22E=B3E200E8 # CUDTR R14,F8 Convert to BCD R14 from FPR8 >+r 232=E3E0F0000024 # STG R14,0(,R15) Store R14 in result table >+r 238=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 23C=ED6040008041 # SRDT F8,F6,0 Shift FPR6 right Nn digits >+r 242=6080F000 # STD F8,0(,R15) Store F8 in result table >+r 246=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 24A=B3E200E8 # CUDTR R14,F8 Convert to BCD R14 from FPR8 >+r 24E=E3E0F0000024 # STG R14,0(,R15) Store R14 in result table >+r 254=41F0F008 # LA R15,8(,R15) R15=>next result table >+r 258=41303004 # LA R3,4(,R3) R3=>Next Nn >+r 25C=4620021C # BCT R2,B Loop to end of Nn table >+r 260=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 264=46000210 # BCT R0,A Loop to end of TESTn table >+r 268=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 318=00000000 # N1 DC F'0' Shift count 0 >+r 31C=FFFFFFC1 # N2 DC F'1' Shift count 1 >+r 320=000002C4 # N3 DC F'708' Shift count 4 >+r 324=0000003F # N4 DC F'63' Shift count 63 >+r 380=2238000000000000 # TEST1 DC DD'0' Zero positive >+r 388=2238000012045078 # TEST2 DC DD'12045078' Normal positive >+r 390=ABCDEF0123456789 # TEST3 DC DD'2.989004434259709E116' Large positive >+r 398=7CABCDEF01234567 # TEST4 DC DD'QNAN' QNaN positive >+r 3A0=FE0000000000ABCD # TEST5 DC DD'-SNAN' SNaN negative >+r 3A8=78123456789ABCDE # TEST6 DC DD'INF' Infinity positive >+restart >+pause 1 >+* Display test data >+r 318.10 >+r 380.30 >+* Display results >+r 400.300 >diff -Naupr hercules-3.05/tests/st.core hercules-20070717/tests/st.core >--- hercules-3.05/tests/st.core 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/st.core 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1 @@ >+X6A P0DP0DP0DP0DP0DP0DP0DP0DP0DP0DGðÿÿÿ >\ No newline at end of file >diff -Naupr hercules-3.05/tests/tapepos.txt hercules-20070717/tests/tapepos.txt >--- hercules-3.05/tests/tapepos.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/tapepos.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,47 @@ >+panrate fast >+stopall >+archmode S/370 >+sysreset >+ >+r 00=0000000000000400 # Restart new PSW >+r 28=000200000000DEAD # Program new PSW >+ >+r 48=00000440 # CAW (addr channel pgm) >+ >+r 400=41100590 # R1 = device address 590 (tape) >+r 404=9C001000 # SIO 0(R1) >+ >+r 408=82000430 # LPSW WAITPSW >+r 430=000200000000BEEF # WAITPSW >+ >+r 440=4F00048040000004 # Locate Block CCW >+r 448=2200049040000008 # Read BlockId CCW >+r 450=4F00049040000004 # Locate Block CCW >+r 458=2200049800000008 # Read BlockId CCW >+ >+r 480=0000C0FF # Locate Block i/p (xC0FF=49407) >+r 490=0000000000000000 # Read BlockId o/p #1 >+r 498=0000000000000000 # Read BlockId o/p #2 >+ >+detach 590 # in case it already exists >+pause 1 >+ >+attach 590 3480 \\.\tape0 # note: could use AWS file instead >+pause 1 >+ >+s+ # enable instruction tracing >+t+590 # enable ccw tracing on device 590 >+pause 1 >+ >+restart # start test >+pause 1 >+ >+startall # step to SIO instruction >+pause 1 >+ >+startall # step to LPSW instruction >+pause 1 >+ >+pause 30 # give tape drive time to do its thing >+ >+r 480.20 # display results; should all be same >diff -Naupr hercules-3.05/tests/tbedr.txt hercules-20070717/tests/tbedr.txt >--- hercules-3.05/tests/tbedr.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/tbedr.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,42 @@ >+* TBEDR,TBDR tests $Id: tbedr.txt,v 1.1 2008/04/18 14:26:07 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0314 # LFAS FPCREG Load value into FPC register >+r 208=41000002 # LA R0,2 R0=Number of test data >+r 20C=41100320 # LA R1,TEST1 R1=>Test data table >+r 210=41E00400 # LA R14,EXPECT1 R14=>Expected result table >+r 214=41F00500 # LA R15,ACTUAL1 R15=>Actual result table >+r 218=78101000 #A LD F1,0(,R1) Load FPR1=long HFP test data >+r 21C=B3500001 # TBEDR F0,F1 Convert to short BFP in FPR0 >+r 220=6000F000 # STD F0,0(,R15) Store actual result >+r 224=B3510021 # TBDR F2,F1 Convert to long BFP in FPR2 >+r 228=6020F008 # STD F2,8(,R15) Store actual result >+r 22C=41E0E010 # LA R14,16(,R14) R14=>next EXPECTn >+r 230=41F0F010 # LA R15,16(,R15) R15=>next ACTUALn >+r 234=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 238=46000218 # BCT R0,A Loop to end of TEST table >+r 23C=D5FF05000400 # CLC ACTUAL1(256),EXPECT1 Compare actual results >+r 242=477002F0 # BNE DIE Branch if not equal expected >+r 246=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2F0=B2B201D0 # DIE LPSWE PGMNPSW Load disabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=427B000000000000 # TEST1 DC DH'123' Normal >+r 328=41D0000000000000 # TEST2 DC DH'13' Normal >+r 400=42F60000 # EXPECT1 DC EB'123' Normal >+r 408=405EC00000000000 # DC DB'123' >+r 410=41500000 # EXPECT2 DC EB'13' Normal >+r 418=402A000000000000 # DC DB'13' >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.40 >+* Display expected results >+r 400.80 >+* Display actual results >+r 500.80 >diff -Naupr hercules-3.05/tests/tdcdt.txt hercules-20070717/tests/tdcdt.txt >--- hercules-3.05/tests/tdcdt.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/tdcdt.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,44 @@ >+* TDCDT test $Id: tdcdt.txt,v 1.1 2007/01/03 16:05:35 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=4100000C # LA R0,12 R0=Number of tests >+r 208=41100340 # LA R1,TEST1 R1=>Test data table >+r 20C=68601000 #A LD F6,0(,R1) Load FPR6=TESTn >+r 210=68D00330 # LD F13,DFP52 Load bit number >+r 214=68F00338 # LD F15,DFP01 Load increment >+r 218=41200800 # LA R2,X'800' Set R2 bit52 = 1 >+r 21C=ED6020000054 #T TDCDT F6,0(,R2) Test FPR6 using mask in R2 >+r 222=47400232 # BM X Branch if bit is set >+r 226=B3D2F0DD # ADTR F13,F13,F15 Add 1 to bit number in FPR13 >+r 22A=8A200001 # SRA R2,1 Shift bitmask in R2 >+r 22E=4770021C # BNZ T Loop to test next bit >+r 232=60D01100 #X STD F13,RESn Store bit number in result table >+r 236=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 23A=4600020C # BCT R0,A Loop to end of table >+r 23E=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 330=2238000000000052 # DFP52 DC DD'52' >+r 338=2238000000000001 # DFP01 DC DD'1' >+r 340=2238000000000000 # TEST1 DC DD'0' Zero positive (52) >+r 348=A238000000000000 # TEST2 DC DD'-0' Zero negative (53) >+r 350=0038000000000009 # TEST3 DC DD'9E-384' Subnormal positive (54) >+r 358=8038000000000009 # TEST4 DC DD'-9E-384' Subnormal negative (55) >+r 360=2238000000000001 # TEST5 DC DD'1' Normal positive (56) >+r 368=A238000000000001 # TEST6 DC DD'-1' Normal negative (57) >+r 370=7800000000000000 # TEST7 DC DD'INF' Infinity positive (58) >+r 378=F800000000000000 # TEST8 DC DD'-INF' Infinity negative (59) >+r 380=7C00000000001234 # TEST9 DC DD'QNAN' QNaN positive (60) >+r 388=FC0000000000ABCD # TESTA DC DD'-QNAN' QNaN negative (61) >+r 390=7E00000000001234 # TESTB DC DD'SNAN' SNaN positive (62) >+r 398=FE0000000000ABCD # TESTC DC DD'-SNAN' SNaN negative (63) >+restart >+pause 1 >+* Display test data >+r 340.60 >+* Display results >+r 440.60 >diff -Naupr hercules-3.05/tests/tdgdt.txt hercules-20070717/tests/tdgdt.txt >--- hercules-3.05/tests/tdgdt.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/tdgdt.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,44 @@ >+* TDGDT test $Id: tdgdt.txt,v 1.1 2007/01/03 16:54:19 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=4100000C # LA R0,12 R0=Number of tests >+r 208=41100340 # LA R1,TEST1 R1=>Test data table >+r 20C=68601000 #A LD F6,0(,R1) Load FPR6=TESTn >+r 210=68D00330 # LD F13,DFP52 Load bit number >+r 214=68F00338 # LD F15,DFP01 Load increment >+r 218=41200800 # LA R2,X'800' Set R2 bit52 = 1 >+r 21C=ED6020000055 #T TDGDT F6,0(,R2) Test FPR6 using mask in R2 >+r 222=47400232 # BM X Branch if bit is set >+r 226=B3D2F0DD # ADTR F13,F13,F15 Add 1 to bit number in FPR13 >+r 22A=8A200001 # SRA R2,1 Shift bitmask in R2 >+r 22E=4770021C # BNZ T Loop to test next bit >+r 232=60D01100 #X STD F13,RESn Store bit number in result table >+r 236=41101008 # LA R1,8(,R1) R1=>Next TESTn >+r 23A=4600020C # BCT R0,A Loop to end of table >+r 23E=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 330=2238000000000052 # DFP52 DC DD'52' >+r 338=2238000000000001 # DFP01 DC DD'1' >+r 340=2238000000000000 # TEST1 DC DD'0' Safe zero positive (52) >+r 348=A238000000000000 # TEST2 DC DD'-0' Safe zero negative (53) >+r 350=43FC000000000000 # TEST3 DC DD'0E+369' Extreme zero positive (54) >+r 358=8000000000000000 # TEST4 DC DD'-0E-398' Extreme zero negative (55) >+r 360=0000000000000001 # TEST5 DC DD'1E-398' Extreme nonzero positive (56) >+r 368=C3FC000000000001 # TEST6 DC DD'-1E+369' Extreme nonzero negative (57) >+r 370=43F8000000000008 # TEST7 DC DD'8E+368' Safe NZ LMDZ positive (58) >+r 378=8004000000000005 # TEST8 DC DD'5E-397' Safe NZ LMDZ negative (59) >+r 380=47F8000000000055 # TEST9 DC DD'10..55E+368' Safe NZ LMDNZ positive (60) >+r 388=C7F8000000000055 # TESTA DC DD'-10..55E+368' Safe NZ LMDNZ negative (61) >+r 390=7800000000001234 # TESTB DC DD'INF' Special positive (62) >+r 398=FE0000000000ABCD # TESTC DC DD'-SNAN' Special negative (63) >+restart >+pause 1 >+* Display test data >+r 340.60 >+* Display results >+r 440.60 >diff -Naupr hercules-3.05/tests/thder.txt hercules-20070717/tests/thder.txt >--- hercules-3.05/tests/thder.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/thder.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,69 @@ >+* THDER,THDR tests $Id: thder.txt,v 1.3 2008/04/18 14:12:18 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000001800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000180000000000000000000DEAD # z/Arch pgm new PSW >+r 200=B7000310 # LCTL R0,R0,CTLR0 Set CR0 bit 45 >+r 204=B2BD0314 # LFAS FPCREG Load value into FPC register >+r 208=41000008 # LA R0,8 R0=Number of test data >+r 20C=41100320 # LA R1,TEST1 R1=>Test data table >+r 210=41E00400 # LA R14,EXPECT1 R14=>Expected result table >+r 214=41F00500 # LA R15,ACTUAL1 R15=>Actual result table >+r 218=78101000 #A LE F1,0(,R1) Load FPR1=short BFP test data >+r 21C=B3580001 # THDER F0,F1 Convert to long HFP in FPR0 >+r 220=6000F000 # STD F0,0(,R15) Store actual result >+r 224=68101008 # LD F1,8(,R1) Load FPR1=long BFP test data >+r 228=B3590001 # THDR F0,F1 Convert to long HFP in FPR0 >+r 22C=6000F008 # STD F0,8(,R15) Store actual result >+r 230=41E0E010 # LA R14,16(,R14) R14=>next EXPECTn >+r 234=41F0F010 # LA R15,16(,R15) R15=>next ACTUALn >+r 238=41101010 # LA R1,16(,R1) R1=>Next TESTn >+r 23C=46000218 # BCT R0,A Loop to end of TEST table >+r 240=D5FF05000400 # CLC ACTUAL1(256),EXPECT1 Compare actual results >+r 246=477002F0 # BNE DIE Branch if not equal expected >+r 24A=B2B20300 # LPSWE WAITPSW Load enabled wait PSW >+r 2F0=B2B201D0 # DIE LPSWE PGMNPSW Load disabled wait PSW >+r 300=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+r 310=00040000 # CTLR0 Control register 0 (bit45 AFP control) >+r 314=00000000 # FPCREG Floating point control register >+r 320=42F60000 # TEST1 DC EB'123' Normal >+r 328=405EC00000000000 # DC DB'123' >+r 330=80000000 # TEST2 DC EB'-0' Zero >+r 338=8000000000000000 # DC DB'-0' >+r 340=00000001 # TEST3 DC EB'(DMIN)' Subnormal >+r 348=0000000000000001 # DC DB'(DMIN)' >+r 350=7F800000 # TEST4 DC EB'(INF)' Infinity >+r 358=7FF0000000000000 # DC DB'(INF)' >+r 360=7FE00000 # TEST5 DC EB'(QNAN)' QNaN >+r 368=7FFC000000000000 # DC DB'(QNAN)' >+r 370=7FA00000 # TEST6 DC EB'(SNAN)' SNaN >+r 378=7FF4000000000000 # DC DB'(SNAN)' >+r 380=41500000 # TEST7 DC EB'13' Normal >+r 388=402A000000000000 # DC DB'13' >+r 390=FF7FC99E # TEST8 DC EB'-3.4E38' Normal >+r 398=C7EFF933C78CDFAD # DC DB'-3.4E38' >+r 400=427B000000000000 # EXPECT1 DC DH'123' Normal >+r 408=427B000000000000 # DC DH'123' Normal >+r 410=8000000000000000 # EXPECT2 DC DH'-0' Zero >+r 418=8000000000000000 # DC DH'-0' Zero >+r 420=0000000000000000 # EXPECT3 DC DH'0' Subnormal >+r 428=0000000000000000 # DC DH'0' Subnormal >+r 430=7FFFFFFFFFFFFFFF # EXPECT4 DC DH'(MAX)' Infinity >+r 438=7FFFFFFFFFFFFFFF # DC DH'(MAX)' Infinity >+r 440=7FFFFFFFFFFFFFFF # EXPECT5 DC DH'(MAX)' QNaN >+r 448=7FFFFFFFFFFFFFFF # DC DH'(MAX)' QNaN >+r 450=7FFFFFFFFFFFFFFF # EXPECT6 DC DH'(MAX)' SNan >+r 458=7FFFFFFFFFFFFFFF # DC DH'(MAX)' SNan >+r 460=41D0000000000000 # EXPECT7 DC DH'13' Normal >+r 468=41D0000000000000 # DC DH'13' Normal >+r 470=E0FFC99E00000000 # EXPECT8 DC DHL4'-3.4E38R5,0' >+r 478=E0FFC99E3C66FD68 # DC DH'-3.4E38R5' >+pgmtrace +7 >+restart >+pause 1 >+* Display test data >+r 320.80 >+* Display expected results >+r 400.80 >+* Display actual results >+r 500.80 >diff -Naupr hercules-3.05/tests/trte.txt hercules-20070717/tests/trte.txt >--- hercules-3.05/tests/trte.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/tests/trte.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,39 @@ >+* TRTE test $Id: trte.txt,v 1.1 2008/03/28 13:36:25 rbowler Exp $ >+sysclear >+archmode esame >+r 1a0=00000000800000000000000000000200 # z/Arch restart PSW >+r 1d0=0002000080000000000000000000DEAD # z/Arch pgm new PSW >+r 200=C018A5A5A5A5 # IIHF R1,X'A5A5A5A5' Load garbage in R1 bits 0-31 >+r 206=B9040061 # LGR R6,R1 Propagate garbage into R6 >+r 20A=B9040071 # LGR R7,R1 Propagate garbage into R7 >+r 20E=B9040081 # LGR R8,R1 Propagate garbage into R8 >+r 212=C089A5A5A5A5 # IILF R8,X'A5A5A5A5' Load garbage in R8 bits 32-63 >+r 218=41100300 # LA R1,TABLE1 R1=>Translate table >+r 21C=41600280 # LA R6,DATA1 R6=>Test data >+r 220=41700006 # LA R7,L'DATA1 R7=>Length of test data >+r 224=B9BF0068 # TRTE R6,R8 Translate and test single >+r 228=A734FFFE # BRC 3,*-4 Repeat if more data >+r 22C=B2B20270 # LPSWE WAITPSW Load enabled wait PSW >+r 270=07020001800000000000000000FED0D0 # WAITPSW Enabled wait state PSW >+* Test data >+r 280=F1F2F3F4E7F6 # DATA1 DC C'1234X6' >+r 300=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # TABLE1 DC 240X'FF',10X'00',6X'FF' >+r 310=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 320=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 330=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 340=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 350=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 360=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 370=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 380=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 390=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 3A0=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 3B0=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 3C0=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 3D0=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 3E0=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >+r 3F0=00000000000000000000FFFFFFFFFFFF >+ostailor null >+s+ >+pgmtrace +7 >+restart >diff -Naupr hercules-3.05/timer.c hercules-20070717/timer.c >--- hercules-3.05/timer.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/timer.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,9 +2,15 @@ > > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: timer.c,v 1.65 2007/06/23 00:04:18 ivan Exp $ >+// $Id: timer.c,v 1.67 2007/12/10 23:12:02 gsmith Exp $ > // > // $Log: timer.c,v $ >+// Revision 1.67 2007/12/10 23:12:02 gsmith >+// Tweaks to OPTION_MIPS_COUNTING processing >+// >+// Revision 1.66 2007/09/05 00:24:18 gsmith >+// Use integer arithmetic calculating cpupct >+// > // Revision 1.65 2007/06/23 00:04:18 ivan > // Update copyright notices to include current year (2007) > // >@@ -165,25 +171,17 @@ U32 intmask = 0; > void *timer_update_thread (void *argp) > { > #ifdef OPTION_MIPS_COUNTING >-int usecctr = 0; /* Microsecond counter */ >-int cpu; /* CPU counter */ >-REGS *regs; /* -> CPU register context */ >-U64 prev = 0; /* Previous TOD clock value */ >-U64 diff; /* Difference between new and >- previous TOD clock values */ >-U64 waittime; /* CPU wait time in interval */ >-U64 now = 0; /* Current time of day (us) */ >+int i; /* Loop index */ >+REGS *regs; /* -> REGS */ >+U64 now; /* Current time of day (us) */ > U64 then; /* Previous time of day (us) */ >-int interval; /* Interval (us) */ >-double cpupct; /* Calculated cpu percentage */ >+U64 diff; /* Interval (us) */ >+U64 mipsrate; /* Calculated MIPS rate */ >+U64 siosrate; /* Calculated SIO rate */ >+U64 cpupct; /* Calculated cpu percentage */ >+U64 total_mips; /* Total MIPS rate */ >+U64 total_sios; /* Total SIO rate */ > #endif /*OPTION_MIPS_COUNTING*/ >-#if !defined(HAVE_NANOSLEEP) && !defined(HAVE_USLEEP) >-struct timeval tv; /* Structure for select */ >-#endif >-#if defined( HAVE_NANOSLEEP ) >-struct timespec rqtp; /* requested sleep interval */ >-struct timespec rmtp; /* remaining sleep interval */ >-#endif > > UNREFERENCED(argp); > >@@ -203,133 +201,93 @@ struct timespec rmtp; > "priority=%d\n"), > thread_id(), getpid(), getpriority(PRIO_PROCESS,0)); > >+#ifdef OPTION_MIPS_COUNTING >+ then = host_tod(); >+#endif >+ > while (sysblk.cpus) > { > /* Update TOD clock */ > update_tod_clock(); > > #ifdef OPTION_MIPS_COUNTING >- /* Calculate MIPS rate and percentage CPU busy */ >- diff = (prev == 0 ? 0 : hw_tod - prev); >- prev = hw_tod; >- >- /* Shift the epoch out of the difference for the CPU timer */ >- diff <<= 8; >+ now = host_tod(); >+ diff = now - then; > >- usecctr += (int)(diff/4096); >- if (usecctr > 999999) >+ if (diff >= 1000000) > { >- U32 mipsrate = 0; /* (total for ALL CPUs together) */ >- U32 siosrate = 0; /* (total for ALL CPUs together) */ >-// logmsg("+++ BLIP +++\n"); // (should appear once per second) >- /* Get current time */ > then = now; >- now = hw_clock(); >- interval = (int)(now - then); >- if (interval < 1) >- interval = 1; >- >-#if defined(OPTION_SHARED_DEVICES) >- sysblk.shrdrate = sysblk.shrdcount; >+ total_mips = total_sios = 0; >+ #if defined(OPTION_SHARED_DEVICES) >+ total_sios = sysblk.shrdcount; > sysblk.shrdcount = 0; >- siosrate = sysblk.shrdrate; >-#endif >+ #endif > >- for (cpu = 0; cpu < HI_CPU; cpu++) >+ for (i = 0; i < HI_CPU; i++) > { >+ obtain_lock (&sysblk.cpulock[i]); > >- obtain_lock (&sysblk.cpulock[cpu]); >- >- if (!IS_CPU_ONLINE(cpu)) >+ if (!IS_CPU_ONLINE(i)) > { >- release_lock(&sysblk.cpulock[cpu]); >+ release_lock(&sysblk.cpulock[i]); > continue; > } > >- regs = sysblk.regs[cpu]; >+ regs = sysblk.regs[i]; > >- /* 0% if first time thru */ >- if (then == 0) >+ /* 0% if CPU is STOPPED */ >+ if (regs->cpustate == CPUSTATE_STOPPED) > { >- regs->mipsrate = regs->siosrate = 0; >- regs->cpupct = 0.0; >- release_lock(&sysblk.cpulock[cpu]); >+ regs->mipsrate = regs->siosrate = regs->cpupct = 0; >+ release_lock(&sysblk.cpulock[i]); > continue; > } > >- /* Calculate instructions per second for this CPU */ >- regs->mipsrate = (regs->instcount - regs->prevcount); >- regs->siosrate = regs->siocount; >- >- /* Ignore wildly high rates probably in error */ >- if (regs->mipsrate > MAX_REPORTED_MIPSRATE) >- regs->mipsrate = 0; >- if (regs->siosrate > MAX_REPORTED_SIOSRATE) >- regs->siosrate = 0; >- >- /* Total for ALL CPUs together */ >- mipsrate += regs->mipsrate; >- siosrate += regs->siosrate; >- >- /* Save the instruction counter */ >- regs->prevcount = regs->instcount; >- regs->siototal += regs->siocount; >+ /* Calculate instructions per second */ >+ mipsrate = regs->instcount; >+ regs->instcount = 0; >+ regs->prevcount += mipsrate; >+ mipsrate = (mipsrate*1000000 + diff/2) / diff; >+ if (mipsrate > MAX_REPORTED_MIPSRATE) >+ mipsrate = 0; >+ regs->mipsrate = mipsrate; >+ total_mips += mipsrate; >+ >+ /* Calculate SIOs per second */ >+ siosrate = regs->siocount; > regs->siocount = 0; >+ regs->siototal += siosrate; >+ siosrate = (siosrate*1000000 + diff/2) / diff; >+ if (siosrate > MAX_REPORTED_SIOSRATE) >+ siosrate = 0; >+ regs->siosrate = siosrate; >+ total_sios += siosrate; > > /* Calculate CPU busy percentage */ >- waittime = regs->waittime; >- if (regs->waittod) >- waittime += now - regs->waittod; >- cpupct = ((double)(interval - waittime)) / ((double)interval); >- if (cpupct < 0.0) cpupct = 0.0; >- else if (cpupct > 1.0) cpupct = 1.0; >- regs->cpupct = cpupct; >- >- /* Reset the wait values */ >+ cpupct = regs->waittime; > regs->waittime = 0; > if (regs->waittod) >+ { >+ cpupct += now - regs->waittod; > regs->waittod = now; >+ } >+ cpupct = ((diff - cpupct)*100) / diff; >+ if (cpupct > 100) cpupct = 100; >+ regs->cpupct = cpupct; > >- release_lock(&sysblk.cpulock[cpu]); >+ release_lock(&sysblk.cpulock[i]); > > } /* end for(cpu) */ > > /* Total for ALL CPUs together */ >- sysblk.mipsrate = mipsrate; >- sysblk.siosrate = siosrate; >- >- /* Reset the microsecond counter */ >- usecctr = 0; >- >- } /* end if(usecctr) */ >+ sysblk.mipsrate = total_mips; >+ sysblk.siosrate = total_sios; >+ } /* end if(diff >= 1000000) */ > #endif /*OPTION_MIPS_COUNTING*/ > > /* Sleep for another timer update interval... */ >- >-#if defined( HAVE_NANOSLEEP ) >- >- rqtp.tv_sec = 0; >- rqtp.tv_nsec = sysblk.timerint * 1000; >- >- while ( nanosleep ( &rqtp, &rmtp ) < 0 ) >- { >- // (EINTR presumed) >- rqtp.tv_sec = rmtp.tv_sec; >- rqtp.tv_nsec = rmtp.tv_nsec; >- } >- >-#elif defined( HAVE_USLEEP ) >- > usleep ( sysblk.timerint ); > >-#else >- tv.tv_sec = 0; >- tv.tv_usec = sysblk.timerint; >- >- select ( 0, NULL, NULL, NULL, &tv ); >- >-#endif /* nanosleep, usleep or select */ >- > } /* end while */ > > logmsg (_("HHCTT003I Timer thread ended\n")); >diff -Naupr hercules-3.05/trace.c hercules-20070717/trace.c >--- hercules-3.05/trace.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/trace.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* TRACE.C (c) Copyright Jan Jaeger, 2000-2007 */ > /* Implicit tracing functions */ > >-// $Id: trace.c,v 1.31 2007/06/23 00:04:19 ivan Exp $ >+// $Id: trace.c,v 1.32 2008/02/28 22:06:34 ptl00 Exp $ > > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ >@@ -19,6 +19,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: trace.c,v $ >+// Revision 1.32 2008/02/28 22:06:34 ptl00 >+// Fix mode switch trace >+// > // Revision 1.31 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -205,7 +208,7 @@ typedef struct _TRACE_F2_PR { > BYTE format; > #define TRACE_F2_PR_FMT 0x32 > BYTE pswkey; >-#define TRACE_F2_PR_FM2 0x00 >+#define TRACE_F2_PR_FM2 0x02 > HWORD newpasn; > FWORD retna; > FWORD newia; >@@ -278,7 +281,7 @@ BYTE pswkey; > #define TRACE_F9_PR_FM2 0x0F > HWORD newpasn; > DBLWRD retna; >-FWORD newia; >+DBLWRD newia; > } TRACE_F9_PR; > > typedef struct _TRACE_F1_PC { >@@ -786,8 +789,7 @@ int size; > STORE_HW(tte->newpasn, newregs->CR_LHL(4)); > STORE_FW(tte->retna, (newregs->psw.amode << 31) > | newregs->psw.IA_L | PROBSTATE(&newregs->psw)); >- STORE_FW(tte->newia, (regs->psw.amode << 31) >- | regs->psw.IA_L); >+ STORE_FW(tte->newia, regs->psw.IA_L); > } > else > if(regs->psw.amode64 && regs->psw.IA_H != 0 && !newregs->psw.amode64) >@@ -963,14 +965,14 @@ BYTE nbit = (pti ? 1 : 0); > /* */ > /* Input: */ > /* br Mode switch branch indicator */ >-/* ia updated instruction address */ >+/* baddr Branch address for mode switch branch */ > /* regs Pointer to the CPU register context */ > /* Return value: */ > /* Updated value for CR12 after adding new trace entry */ > /* */ > /* This function does not return if a program check occurs. */ > /*-------------------------------------------------------------------*/ >-CREG ARCH_DEP(trace_ms) (int br, VADR ia, REGS *regs) >+CREG ARCH_DEP(trace_ms) (int br, VADR baddr, REGS *regs) > { > RADR raddr; > RADR ag; >@@ -992,7 +994,7 @@ int size; > STORE_FW(tte->newia, regs->psw.IA | (regs->psw.amode << 31)); > } > else >- if(regs->psw.amode64 && ia <= 0x7FFFFFFF) >+ if(regs->psw.amode64 && regs->psw.IA <= 0x7FFFFFFF) > { > TRACE_F2_MS *tte; > size = sizeof(TRACE_F2_MS); >@@ -1017,7 +1019,8 @@ int size; > } > else > { >- if(!regs->psw.amode64) >+ /* if currently in 64-bit, we are switching out */ >+ if(regs->psw.amode64) > { > TRACE_F1_MSB *tte; > size = sizeof(TRACE_F1_MSB); >@@ -1026,10 +1029,10 @@ int size; > tte->format = TRACE_F1_MSB_FMT; > tte->fmt2 = TRACE_F1_MSB_FM2; > STORE_HW(tte->resv, 0); >- STORE_FW(tte->newia, ia); >+ STORE_FW(tte->newia, baddr); > } > else >- if(regs->psw.amode64 && ia <= 0x7FFFFFFF) >+ if(!regs->psw.amode64 && baddr <= 0x7FFFFFFF) > { > TRACE_F2_MSB *tte; > size = sizeof(TRACE_F2_MSB); >@@ -1038,7 +1041,7 @@ int size; > tte->format = TRACE_F2_MSB_FMT; > tte->fmt2 = TRACE_F2_MSB_FM2; > STORE_HW(tte->resv, 0); >- STORE_FW(tte->newia, ia); >+ STORE_FW(tte->newia, baddr); > } > else > { >@@ -1049,7 +1052,7 @@ int size; > tte->format = TRACE_F3_MSB_FMT; > tte->fmt2 = TRACE_F3_MSB_FM2; > STORE_HW(tte->resv, 0); >- STORE_DW(tte->newia, ia); >+ STORE_DW(tte->newia, baddr); > } > } > >diff -Naupr hercules-3.05/tuntap.c hercules-20070717/tuntap.c >--- hercules-3.05/tuntap.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/tuntap.c 2008-09-03 13:07:48.000000000 +0200 >@@ -15,9 +15,12 @@ > // that works on all platforms with (hopefully) equal results. > // > >-// $Id: tuntap.c,v 1.45 2007/06/23 00:04:19 ivan Exp $ >+// $Id: tuntap.c,v 1.46 2008/02/07 00:29:04 rbowler Exp $ > // > // $Log: tuntap.c,v $ >+// Revision 1.46 2008/02/07 00:29:04 rbowler >+// Solaris build support by Jeff Savit >+// > // Revision 1.45 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -27,6 +30,9 @@ > > #include "hstdinc.h" > >+/* jbs 1/19/2008 added ifdef on __SOLARIS__ */ >+#if !defined(__SOLARIS__) >+ > #include "hercules.h" > #include "tuntap.h" > #include "devtype.h" >@@ -981,3 +987,5 @@ void build_herc_iface_mac ( BYTE* out_ma > *(out_mac+4) = *(in_ip+2); > *(out_mac+5) = *(in_ip+3); > } >+ >+#endif /* !defined(__SOLARIS__) jbs*/ >diff -Naupr hercules-3.05/util/configure.ac hercules-20070717/util/configure.ac >--- hercules-3.05/util/configure.ac 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/util/configure.ac 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,4 @@ >+THIS IS A DUMMY FILE >+ >+This is needed so that 'autoconf --version' reports the 2.5x version >+and not the 2.13 version to cvslvlck >diff -Naupr hercules-3.05/util/.cvsignore hercules-20070717/util/.cvsignore >--- hercules-3.05/util/.cvsignore 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/util/.cvsignore 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,2 @@ >+Makefile.in >+Makefile >diff -Naupr hercules-3.05/util/cvslvlck hercules-20070717/util/cvslvlck >--- hercules-3.05/util/cvslvlck 2006-12-30 16:18:32.000000000 +0100 >+++ hercules-20070717/util/cvslvlck 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > > #**************************************************************************** > # >-# $Id: cvslvlck,v 1.12 2006/12/25 13:55:19 jj Exp $ >+# $Id: cvslvlck,v 1.13 2007/11/30 14:32:13 jmaynard Exp $ > # > # C V S L V L C K > # >@@ -13,6 +13,9 @@ > # > # ---- CHANGE LOG ---- > # $Log: cvslvlck,v $ >+# Revision 1.13 2007/11/30 14:32:13 jmaynard >+# Fixed URL to point to hercules-390.org. >+# > # Revision 1.12 2006/12/25 13:55:19 jj > # Add cvs message log > # >@@ -25,6 +28,7 @@ > # 24/10/05 Added history section in preparation for possible changes. (Fish) > # 24/10/05 According to jj, automake 1.6 is insufficient. He says 1.9 works > # though, but doesn't know about 1.7 or 1.8 yet. (Fish) >+# 30/11/07 Changed URL to point to hercules-390.org. (JRM) > #**************************************************************************** > > use strict; >@@ -47,7 +51,7 @@ my @req = qw( > sed 3.02 0 http://www.gnu.org/directory/sed.html > ); > >-my $cvsroot = ":pserver:anonymous\@cvs.conmicro.cx:/usr/cvs/hercules"; >+my $cvsroot = ":pserver:anonymous\@cvs.hercules-390.org:/usr/cvs/hercules"; > my $msg; > my $instversion; > >diff -Naupr hercules-3.05/util/Makefile.in hercules-20070717/util/Makefile.in >--- hercules-3.05/util/Makefile.in 2007-06-23 16:59:39.000000000 +0200 >+++ hercules-20070717/util/Makefile.in 1970-01-01 01:00:00.000000000 +0100 >@@ -1,418 +0,0 @@ >-# Makefile.in generated by automake 1.9.6 from Makefile.am. >-# @configure_input@ >- >-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >-# 2003, 2004, 2005 Free Software Foundation, Inc. >-# This Makefile.in is free software; the Free Software Foundation >-# gives unlimited permission to copy and/or distribute it, >-# with or without modifications, as long as this notice is preserved. >- >-# This program is distributed in the hope that it will be useful, >-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >-# PARTICULAR PURPOSE. >- >-@SET_MAKE@ >- >- >-srcdir = @srcdir@ >-top_srcdir = @top_srcdir@ >-VPATH = @srcdir@ >-pkgdatadir = $(datadir)/@PACKAGE@ >-pkglibdir = $(libdir)/@PACKAGE@ >-pkgincludedir = $(includedir)/@PACKAGE@ >-top_builddir = .. >-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >-INSTALL = @INSTALL@ >-install_sh_DATA = $(install_sh) -c -m 644 >-install_sh_PROGRAM = $(install_sh) -c >-install_sh_SCRIPT = $(install_sh) -c >-INSTALL_HEADER = $(INSTALL_DATA) >-transform = $(program_transform_name) >-NORMAL_INSTALL = : >-PRE_INSTALL = : >-POST_INSTALL = : >-NORMAL_UNINSTALL = : >-PRE_UNINSTALL = : >-POST_UNINSTALL = : >-build_triplet = @build@ >-host_triplet = @host@ >-subdir = util >-DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ >- $(srcdir)/Makefile.in >-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >-am__aclocal_m4_deps = $(top_srcdir)/autoconf/hercules.m4 \ >- $(top_srcdir)/autoconf/libtool.m4 \ >- $(top_srcdir)/autoconf/ltdl.m4 $(top_srcdir)/m4/gettext.m4 \ >- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ >- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ >- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac >-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >- $(ACLOCAL_M4) >-mkinstalldirs = $(SHELL) $(top_srcdir)/autoconf/mkinstalldirs >-CONFIG_HEADER = $(top_builddir)/config.h >-CONFIG_CLEAN_FILES = >-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" >-binSCRIPT_INSTALL = $(INSTALL_SCRIPT) >-SCRIPTS = $(bin_SCRIPTS) >-SOURCES = >-DIST_SOURCES = >-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; >-am__vpath_adj = case $$p in \ >- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ >- *) f=$$p;; \ >- esac; >-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; >-dist_pkgdataDATA_INSTALL = $(INSTALL_DATA) >-DATA = $(dist_pkgdata_DATA) >-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >-ACLOCAL = @ACLOCAL@ >-AMDEP_FALSE = @AMDEP_FALSE@ >-AMDEP_TRUE = @AMDEP_TRUE@ >-AMTAR = @AMTAR@ >-AR = @AR@ >-AS = @AS@ >-AUTOCONF = @AUTOCONF@ >-AUTOHEADER = @AUTOHEADER@ >-AUTOMAKE = @AUTOMAKE@ >-AWK = @AWK@ >-BUILD_FISHHANG_FALSE = @BUILD_FISHHANG_FALSE@ >-BUILD_FISHHANG_TRUE = @BUILD_FISHHANG_TRUE@ >-BUILD_FTHREADS_FALSE = @BUILD_FTHREADS_FALSE@ >-BUILD_FTHREADS_TRUE = @BUILD_FTHREADS_TRUE@ >-BUILD_HERCIFC_FALSE = @BUILD_HERCIFC_FALSE@ >-BUILD_HERCIFC_TRUE = @BUILD_HERCIFC_TRUE@ >-BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@ >-BUILD_SHARED_TRUE = @BUILD_SHARED_TRUE@ >-CC = @CC@ >-CCDEPMODE = @CCDEPMODE@ >-CFLAGS = @CFLAGS@ >-CONVENIENCE_LTDL_FALSE = @CONVENIENCE_LTDL_FALSE@ >-CONVENIENCE_LTDL_TRUE = @CONVENIENCE_LTDL_TRUE@ >-CPP = @CPP@ >-CPPFLAGS = @CPPFLAGS@ >-CXX = @CXX@ >-CXXCPP = @CXXCPP@ >-CXXDEPMODE = @CXXDEPMODE@ >-CXXFLAGS = @CXXFLAGS@ >-CYGPATH_W = @CYGPATH_W@ >-DEFS = @DEFS@ >-DEPDIR = @DEPDIR@ >-DLLTOOL = @DLLTOOL@ >-ECHO = @ECHO@ >-ECHO_C = @ECHO_C@ >-ECHO_N = @ECHO_N@ >-ECHO_T = @ECHO_T@ >-EGREP = @EGREP@ >-EXEEXT = @EXEEXT@ >-F77 = @F77@ >-FFLAGS = @FFLAGS@ >-GMSGFMT = @GMSGFMT@ >-INSTALL_DATA = @INSTALL_DATA@ >-INSTALL_LTDL_FALSE = @INSTALL_LTDL_FALSE@ >-INSTALL_LTDL_TRUE = @INSTALL_LTDL_TRUE@ >-INSTALL_PROGRAM = @INSTALL_PROGRAM@ >-INSTALL_SCRIPT = @INSTALL_SCRIPT@ >-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >-INTLLIBS = @INTLLIBS@ >-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ >-LDFLAGS = @LDFLAGS@ >-LIBADD_DL = @LIBADD_DL@ >-LIBICONV = @LIBICONV@ >-LIBINTL = @LIBINTL@ >-LIBOBJS = @LIBOBJS@ >-LIBS = @LIBS@ >-LIBTOOL = @LIBTOOL@ >-LIBTOOL_DEPS = @LIBTOOL_DEPS@ >-LN_S = @LN_S@ >-LTLIBICONV = @LTLIBICONV@ >-LTLIBINTL = @LTLIBINTL@ >-LTLIBOBJS = @LTLIBOBJS@ >-MAINT = @MAINT@ >-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ >-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ >-MAKEINFO = @MAKEINFO@ >-MKINSTALLDIRS = @MKINSTALLDIRS@ >-MSGFMT = @MSGFMT@ >-MSGMERGE = @MSGMERGE@ >-OBJDUMP = @OBJDUMP@ >-OBJEXT = @OBJEXT@ >-OPTION_DYNAMIC_LOAD_FALSE = @OPTION_DYNAMIC_LOAD_FALSE@ >-OPTION_DYNAMIC_LOAD_TRUE = @OPTION_DYNAMIC_LOAD_TRUE@ >-PACKAGE = @PACKAGE@ >-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >-PACKAGE_NAME = @PACKAGE_NAME@ >-PACKAGE_STRING = @PACKAGE_STRING@ >-PACKAGE_TARNAME = @PACKAGE_TARNAME@ >-PACKAGE_VERSION = @PACKAGE_VERSION@ >-PATH_SEPARATOR = @PATH_SEPARATOR@ >-POSUB = @POSUB@ >-RANLIB = @RANLIB@ >-SETUID_HERCIFC_FALSE = @SETUID_HERCIFC_FALSE@ >-SETUID_HERCIFC_TRUE = @SETUID_HERCIFC_TRUE@ >-SET_MAKE = @SET_MAKE@ >-SHELL = @SHELL@ >-STRIP = @STRIP@ >-USE_DLLTOOL_FALSE = @USE_DLLTOOL_FALSE@ >-USE_DLLTOOL_TRUE = @USE_DLLTOOL_TRUE@ >-USE_NLS = @USE_NLS@ >-VERSION = @VERSION@ >-XGETTEXT = @XGETTEXT@ >-ac_ct_AR = @ac_ct_AR@ >-ac_ct_AS = @ac_ct_AS@ >-ac_ct_CC = @ac_ct_CC@ >-ac_ct_CXX = @ac_ct_CXX@ >-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ >-ac_ct_F77 = @ac_ct_F77@ >-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ >-ac_ct_RANLIB = @ac_ct_RANLIB@ >-ac_ct_STRIP = @ac_ct_STRIP@ >-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ >-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ >-am__include = @am__include@ >-am__leading_dot = @am__leading_dot@ >-am__quote = @am__quote@ >-am__tar = @am__tar@ >-am__untar = @am__untar@ >-bindir = @bindir@ >-build = @build@ >-build_alias = @build_alias@ >-build_cpu = @build_cpu@ >-build_os = @build_os@ >-build_vendor = @build_vendor@ >-datadir = @datadir@ >-exec_prefix = @exec_prefix@ >-host = @host@ >-host_alias = @host_alias@ >-host_cpu = @host_cpu@ >-host_os = @host_os@ >-host_vendor = @host_vendor@ >-includedir = @includedir@ >-infodir = @infodir@ >-install_sh = @install_sh@ >-libdir = @libdir@ >-libexecdir = @libexecdir@ >-localstatedir = @localstatedir@ >-mandir = @mandir@ >-mkdir_p = @mkdir_p@ >-modexecdir = @modexecdir@ >-oldincludedir = @oldincludedir@ >-prefix = @prefix@ >-program_transform_name = @program_transform_name@ >-sbindir = @sbindir@ >-sharedstatedir = @sharedstatedir@ >-sysconfdir = @sysconfdir@ >-target_alias = @target_alias@ >-bin_SCRIPTS = dasdlist cvslvlck >-dist_pkgdata_DATA = cckddump.hla awswrite.jcl rawstape.jcl tapeconv.jcl\ >- zzsacard.bin awssl-v19g cckdload.hla >- >-EXTRA_DIST = dasdlist dasdlist.bat cvslvlck >-all: all-am >- >-.SUFFIXES: >-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) >- @for dep in $?; do \ >- case '$(am__configure_deps)' in \ >- *$$dep*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >- && exit 0; \ >- exit 1;; \ >- esac; \ >- done; \ >- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile'; \ >- cd $(top_srcdir) && \ >- $(AUTOMAKE) --gnu util/Makefile >-.PRECIOUS: Makefile >-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >- @case '$?' in \ >- *config.status*) \ >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >- *) \ >- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >- esac; >- >-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >- >-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) >- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >-install-binSCRIPTS: $(bin_SCRIPTS) >- @$(NORMAL_INSTALL) >- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" >- @list='$(bin_SCRIPTS)'; for p in $$list; do \ >- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ >- if test -f $$d$$p; then \ >- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ >- echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ >- $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ >- else :; fi; \ >- done >- >-uninstall-binSCRIPTS: >- @$(NORMAL_UNINSTALL) >- @list='$(bin_SCRIPTS)'; for p in $$list; do \ >- f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ >- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ >- rm -f "$(DESTDIR)$(bindir)/$$f"; \ >- done >- >-mostlyclean-libtool: >- -rm -f *.lo >- >-clean-libtool: >- -rm -rf .libs _libs >- >-distclean-libtool: >- -rm -f libtool >-uninstall-info-am: >-install-dist_pkgdataDATA: $(dist_pkgdata_DATA) >- @$(NORMAL_INSTALL) >- test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" >- @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ >- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ >- f=$(am__strip_dir) \ >- echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ >- $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ >- done >- >-uninstall-dist_pkgdataDATA: >- @$(NORMAL_UNINSTALL) >- @list='$(dist_pkgdata_DATA)'; for p in $$list; do \ >- f=$(am__strip_dir) \ >- echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ >- rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ >- done >-tags: TAGS >-TAGS: >- >-ctags: CTAGS >-CTAGS: >- >- >-distdir: $(DISTFILES) >- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >- list='$(DISTFILES)'; for file in $$list; do \ >- case $$file in \ >- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >- esac; \ >- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >- dir="/$$dir"; \ >- $(mkdir_p) "$(distdir)$$dir"; \ >- else \ >- dir=''; \ >- fi; \ >- if test -d $$d/$$file; then \ >- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >- fi; \ >- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >- else \ >- test -f $(distdir)/$$file \ >- || cp -p $$d/$$file $(distdir)/$$file \ >- || exit 1; \ >- fi; \ >- done >-check-am: all-am >-check: check-am >-all-am: Makefile $(SCRIPTS) $(DATA) >-installdirs: >- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)"; do \ >- test -z "$$dir" || $(mkdir_p) "$$dir"; \ >- done >-install: install-am >-install-exec: install-exec-am >-install-data: install-data-am >-uninstall: uninstall-am >- >-install-am: all-am >- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >- >-installcheck: installcheck-am >-install-strip: >- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >- `test -z '$(STRIP)' || \ >- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >-mostlyclean-generic: >- >-clean-generic: >- >-distclean-generic: >- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) >- >-maintainer-clean-generic: >- @echo "This command is intended for maintainers to use" >- @echo "it deletes files that may require special tools to rebuild." >-clean: clean-am >- >-clean-am: clean-generic clean-libtool mostlyclean-am >- >-distclean: distclean-am >- -rm -f Makefile >-distclean-am: clean-am distclean-generic distclean-libtool >- >-dvi: dvi-am >- >-dvi-am: >- >-html: html-am >- >-info: info-am >- >-info-am: >- >-install-data-am: install-dist_pkgdataDATA >- >-install-exec-am: install-binSCRIPTS >- >-install-info: install-info-am >- >-install-man: >- >-installcheck-am: >- >-maintainer-clean: maintainer-clean-am >- -rm -f Makefile >-maintainer-clean-am: distclean-am maintainer-clean-generic >- >-mostlyclean: mostlyclean-am >- >-mostlyclean-am: mostlyclean-generic mostlyclean-libtool >- >-pdf: pdf-am >- >-pdf-am: >- >-ps: ps-am >- >-ps-am: >- >-uninstall-am: uninstall-binSCRIPTS uninstall-dist_pkgdataDATA \ >- uninstall-info-am >- >-.PHONY: all all-am check check-am clean clean-generic clean-libtool \ >- distclean distclean-generic distclean-libtool distdir dvi \ >- dvi-am html html-am info info-am install install-am \ >- install-binSCRIPTS install-data install-data-am \ >- install-dist_pkgdataDATA install-exec install-exec-am \ >- install-info install-info-am install-man install-strip \ >- installcheck installcheck-am installdirs maintainer-clean \ >- maintainer-clean-generic mostlyclean mostlyclean-generic \ >- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ >- uninstall-binSCRIPTS uninstall-dist_pkgdataDATA \ >- uninstall-info-am >- >-# Tell versions [3.59,3.63) of GNU make to not export all variables. >-# Otherwise a system limit (for SysV at least) may be exceeded. >-.NOEXPORT: >diff -Naupr hercules-3.05/util/TMOUNT.txt hercules-20070717/util/TMOUNT.txt >--- hercules-3.05/util/TMOUNT.txt 1970-01-01 01:00:00.000000000 +0100 >+++ hercules-20070717/util/TMOUNT.txt 2008-09-03 13:07:48.000000000 +0200 >@@ -0,0 +1,225 @@ >++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ >+ Fish note: >+ >+ The length of the filename is not limted to 17 characters as the >+ below sample states. Rather, the length of the filename is limited >+ solely by the host filesystem code. On Windows, filenames can be up >+ to 260 characters long. (or even longer if "\\?\" format is used!) >+ >++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >+ >+ >+* $$ JOB JNM=TMOUNT,DISP=D,CLASS=0 >+// JOB TMOUNT COMPILE PROGRAM TMOUNT >+// LIBDEF *,CATALOG=PRD2.CONFIG >+// OPTION ERRS,SXREF,SYM,NODECK,CATAL >+ PHASE TMOUNT,* >+// EXEC ASMA90,SIZE=(ASMA90,64K),PARM='EXIT(LIBEXIT(EDECKXIT)),SIZE(MAXC >+ -200K,ABOVE)' >+TMOUNT CSECT >+ SPACE 1 >+*--------------------------------------------------------------------- >+* >+* TMOUNT - VSE VERSION II >+* >+* THE TMOUNT COMMAND IS USED FROM VSE ON THE P/390 TO TELL THE >+* AWSTAPE MANAGER WHICH OS/2 FILE TO USE WHEN THE USER WRITES TO >+* THIS DEVICE. IT CAN ALSO BE USED TO QUERY WHAT OS/2 FILE IS >+* CURRENTLY ASSOCIATED WITH THE DEVICE. >+* >+* TWO SPECIAL CCW OPCODES ARE SUPPORTED BY THE AWSTAPE EMULATOR: >+* X'4B' - ASSIGN A DOS FILEID TO THE DEVICE. (WAS '4B' 6/30) >+* X'E4' - SENSE FILEID - RETURN THE NAME OF THE ASSIGNED DOS FILE >+* >+* THE EMULATED TAPE HAS TO BE ASSIGNED TO SYS014 >+* >+* E.G // JOB TMOUNT >+* // ASSGN SYS014,580 >+* // EXEC TMOUNT,REAL,SIZE=AUTO,PARM='580 D:TEST.TAP' >+* OR >+* // EXEC TMOUNT,REAL,SIZE=AUTO,PARM='580 (QUERY' >+* /* >+* /& >+* >+* AWSTAPE HAS A LIMIT OF 17 CHARACTERS IN A DOS FILEID. THAT >+* LIMIT IS ENFORCED ENTIRELY IN AWSTAPE. >+* >+* THIS PROGRAM IS PROVIDED ON AN AS-IS BASIS. >+* IT HAS NOT BEEN TESTED ON R/390 >+* NO MAINTENANCE WILL BE DONE AND NO APARS WILL BE ACCEPTED >+* >+* COMMENTS AND SUGGESTION ARE WELCOME >+* >+* AUTHOR: CHUCK BERGHORN >+* REVISED FOR VSE: CHRISTIAN TOEPSCH (TOEPSCH@DE.IBM.COM) >+* >+*--------------------------------------------------------------------- >+* >+ SPACE 1 >+ PRINT GEN >+ BALR R8,0 >+ USING *,R8 >+ CR R15,R1 TEST FOR PARM= >+ BE NOPARM NO PARM SPECIFIED, RETURN >+ L R2,0(R1) GET PARAMETER ADDRESS >+ SR R3,R3 CLEAR R3 >+ LH R3,0(R2) GET PARMLENGTH >+ AH R3,=X'0001' ADJUST MOVE LENGTH >+ EX R3,MOVEINST DO THE MOVE >+ CLC PARMLEN,=X'0015' PARMLEN > THAN 21? >+* BH TOOLONG PARMS TOO LONG, RETURN >+ OPEN CONSOLE PREPARE TO WRITE TO CONSOLE >+ MVC MSGOUT,MSGSTART >+* PUT CONSOLE PRINT OUT THIS MESSAGE >+*--------------------------------------------------------------------- >+* >+* END OF PROLOGUE >+* >+*--------------------------------------------------------------------- >+* >+ CLI PARMDAT,C'(' ANY OPTIONS? >+ BNE NOOPT NO, DO SETFILE >+ CLC PARMDAT+1(5),=C'QUERY' IS IT A QUERY? >+ BE DOQUERY >+ B BADOPT >+*--------------------------------------------------------------------- >+* >+* QUERY THE CURRENT FILE THAT IS THE VIRTUAL TAPE >+* >+*--------------------------------------------------------------------- >+* >+DOQUERY DS 0H SET UP TO DO A QUERY >+ MVC MSGOUT,TMPQUERY >+ MVC MSGOUT+42(4),PARMDEV INSERT DEVADDR FROM PARM >+ PUT CONSOLE PRINT OUT THIS MESSAGE >+* >+* DO THE QUERY >+* >+ EXCP QDCCB FIND OUT THE CURRENT FILE >+ WAIT QDCCB WAIT FOR IT TO HAPPEN >+ MVC MSGOUT,DOSFID PREPARE MESSAGE AND DISPLAY >+ PUT CONSOLE RESULT OF QUERY >+ LA R15,0 SET RETURN CODE >+ B RETURN >+MOVEINST MVC RADDR(01),0(R2) GET PARMS >+MOVEINS2 MVC DOSFID(01),PARMDAT MOVE FILENAME >+*--------------------------------------------------------------------- >+* >+* CODE TO SET A NEW FILENAME EQUAL TO THE VIRTUAL TAPE... >+* >+*--------------------------------------------------------------------- >+* >+NOOPT DS 0H ASSUME ATTEMPT TO SET FILENAME >+ CLI PARMDAT+1,C':' WAS A DRIVE LETTER SPECIFIED >+* BNE BADFILE >+ CLC PARMDAT,MSGBLANK ANY FILENAME SPECIFIED >+ BE BADFILE NO, BAD FILENAME >+ MVC MSGOUT,TMPNOOPT >+ MVC MSGOUT+49(4),PARMDEV PUT DEVADDR IN MESSAGE >+ PUT CONSOLE >+ LH R6,PARMLEN THIS IS THE LENGTH HALFW >+ LA R4,PARMDAT THIS IS THE DATA >+ S R6,PLUS4 SUBTRACT DEVADDR LENGTH AND >+ STH R6,SDCCW+6 STORE LENGTH IN CCW >+ SH R6,=X'0001' ADJUST MOVE LENGTH >+ EX R6,MOVEINS2 DO THE MOVE >+ MVC MSGOUT,MSGBLANK CLEAR MESSAGE AREA >+ MVC MSGOUT,DOSFID FILENAME IN MESSAGE >+ PUT CONSOLE DISPLAY IT >+ EXCP SDCCB SET THE FILENAME INTO MOUNT >+ WAIT SDCCB WAIT FOR THIS TO HAPPEN >+ LA R15,0 SET RETURN CODE >+ B RETURN EXIT >+*--------------------------------------------------------------------- >+* >+* ERROR CONDITIONS >+* >+*--------------------------------------------------------------------- >+* >+NOPARM DS 0H >+ MVC MSGOUT,MSGOPT25 SUBSTITUTE VSE MSG >+ PUT CONSOLE SHOW THIS MESSAGE >+ LA R15,4 >+ B RETURN >+BADOPT DS 0H >+ MVC MSGOUT,MSGOPT24 SUBSTITUTE VSE MSG >+ PUT CONSOLE SHOW THIS MESSAGE >+ LA R15,8 >+ B RETURN >+BADFILE DS 0H >+ MVC MSGOUT,MSGNOF5 SUBSTITUTE VSE MSG >+ PUT CONSOLE SHOW THIS MESSAGE >+ LA R15,12 >+ B RETURN >+TOOLONG DS 0H >+ MVC MSGOUT,MSGLNG6 SUBSTITUTE VSE MSG >+ PUT CONSOLE SHOW THIS MESSAGE >+ LA R15,16 >+ B RETURN >+*--------------------------------------------------------------------- >+* >+* EXIT CODE >+* >+*--------------------------------------------------------------------- >+* >+RETURN DS 0H >+ MVC MSGOUT,MSGEND TMP MSG TO SHOW COMPLETION >+* PUT CONSOLE TMP - PUT OUT THIS MESSAGE >+ CLOSE CONSOLE >+ EOJ >+* >+* >+CONSOLE DTFCN DEVADDR=SYSLOG,IOAREA1=MSGOUT,RECFORM=FIXUNB, X >+ TYPEFLE=CMBND,BLKSIZE=70,INPSIZE=17 >+MSGOUT DS CL80 >+MSGSTART DC CL80'*** BEGINNING OF VSE MOUNT ***' >+MSGEND DC CL80'*** END OF VSE MOUNT ***' >+MSGNOF5 DC CL80'AWSMNT001E NO OR INCORRECT FILEID SPECIFIED' >+MSGLNG6 DC CL80'AWSMNT002E DOS FILENAME TOO LONG' >+MSGOPT24 DC CL80'AWSMNT003E NO OR INVALID OPTION SPECIFIED' >+MSGOPT25 DC CL80'AWSMNT004E NO PARM= GIVEN' >+TMPQUERY DC CL80'AWSMNT005E QUERY VIRTUAL TAPE AT ADDRESS ' >+TMPNOOPT DC CL80'AWSMNT006E ASSIGNING TO VIRTUAL TAPE AT ADDRESS ' >+MSGBLANK DC CL216' ' >+* >+RADDR DS 0CL256 USED TO SAVE PARMS >+PARMLEN DC CL2' ' PARAMETER LENGTH >+PARMDEV DC CL4' ' DEVADDR FROM PARMS >+PARMDAT DC CL216' ' DATA FROM PARMS (QUERY >+* OR FULL QUALIFIED FILENAME >+DOSFID DC CL80' ' >+* >+* >+QDCCB CCB SYS014,QDCCW >+SDCCB CCB SYS014,SDCCW >+QDCCW CCW X'4B',DOSFID,X'60',1 >+ CCW X'E4',DOSFID,X'20',L'DOSFID >+SDCCW CCW X'4B',DOSFID,X'20',L'DOSFID >+* >+* >+PLUS4 DC F'4' >+R0 EQU 0 >+R1 EQU 1 >+R2 EQU 2 >+R3 EQU 3 >+R4 EQU 4 >+R5 EQU 5 >+R6 EQU 6 >+R7 EQU 7 >+R8 EQU 8 >+R9 EQU 9 >+R10 EQU 10 >+R11 EQU 11 >+R12 EQU 12 >+R13 EQU 13 >+R14 EQU 14 >+R15 EQU 15 >+ END >+/* >+// IF $MRC GT 4 THEN >+// GOTO NOLNK >+// EXEC LNKEDT >+/. NOLNK >+/& >+* $$ EOJ >diff -Naupr hercules-3.05/util/zzsacard.bin hercules-20070717/util/zzsacard.bin >--- hercules-3.05/util/zzsacard.bin 2006-03-12 19:22:08.000000000 +0100 >+++ hercules-20070717/util/zzsacard.bin 1970-01-01 01:00:00.000000000 +0100 >@@ -1,327 +0,0 @@ >-z~@P~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@~Ø@P(@Px@PÈ@P@Ph@P¸@P@PX@P¨@Pø@PH@P@Pè@P8@P@PØ@P(@Px@PÈ@P @P h@P ¸@P@PX@P¨@Pø@PH@P@Pè@P8@P@PØ@P(@Px@PÈ@P`X`(`(è@P8@P@PØ@P(@Px@PÈ@P@Ph@P¸@P@PX@P¨@Pø@PH@P@Pè@P8@P@PØ@P (@P x@P È@P >-@P >-h@P >-¸@P@PX@P¨@Pø@PH@P@Pè@P 8@P @P Ø@P(@Px@PÈ@P@Ph@P¸@P@PX@P¨@Pø@PH@P@Pè@P8@P@PØ@P(@Px@PÈ@P@Ph@P¸@P@PX@P¨@Pø@PH@P@Pè@P8@P@PØ@P(@Px@PÈ@P@Ph@P¸@P@PX@P¨@Pø@PH@P@Pè@P8@P@PØ@P(@Px@PÈ@P@Ph`8@P@PØ@P (`'¸@P(@P(X@P(¨@P(ø@P)H@P)@P)è@P*8@P*@P*Ø@P+(@P+x@P+È@P,@P,h@P,¸@P-@P-X@P-¨@P-ø@P.H@P.@P.è@P/8@P/@P/Ø@P0(@P0x@P0È@P1@P1h@P1¸@P2@P2X@P2¨@P2ø@P3H@P3@P3è@P48@P4@P4Ø@P5(`(5ð@P6@@P6@P6à@P70@P7@P7Ð@P8 @P8p@P8À@P9@P9`@P9°@P:@P:P@P: @P:ð@P;@@P;@P;à@P<0@P<@P<Ð@P= @P=p@P=À@P>@P>`@P>°@P?@P?P@P? @P?ð@P@@@P@@P@à@PA0@PA@PAÐ@PB @PBp@PBÀ@PC@PC`@PC°@PD@PDP@PD @PDð@PE@@PE@PEà@PF0@PF@PFÐ@PG @PGp@PGÀ@PH@PH`@PH°@PI@PIP@PI @PIð@PJ@@PJ@PJà@PK0@PK@PKÐ@PL @PLp@PLÀ@PM`V@PVf@PV¶@PW@PWV@PW¦@PWö@PXF@PX@PXæ@PY6@PY@PYÖ@PZ&@PZv@PZÆ@P[@P[f@P[¶@P\@P\V@P\¦@P\ö@P]F@P]@P]æ@P^6@P^@P^Ö@P_&@P_v@P_Æ@P`@P`f@P`¶`,b@PbØ@Pc(@Pcx@PcÈ@Pd@Pdh@Pd¸@Pe@PeX@Pe¨@Peø@PfH@Pf@Pfè@Pg8@Pg@PgØ@Ph(@Phx@PhÈ@Pi@Pih@Pi¸@Pj@PjX@Pj¨@Pjø@PkH@Pk@Pkè@Pl8@Pl@PlØ`n@Pnè@Po8@Po@PoØ@Pp(@Ppx@PpÈ@Pq@Pqh@Pq¸@Pr@PrX@Pr¨@Prø@PsH@Ps@Psè@Pt8@Pt@PtØ@Pu(@Pux@PuÈ@Pv@Pvh@Pv¸`x@PxÐ@Py @Pyp@PyÀ@Pz@Pz`@Pz°@P{@P{P@P{ @P{ð@P|@@P|@P|à@P}0@P}@P}Ð@P~ @P~p \:~ >-Þ >-ÞÐÑKÑÁÅÇÅÙ`ééâÁÉ×Óð`ðòaò÷aðö`òðKôôééâÅÃÙÅã ~H@ÿÿÿÿÿÿÿÿ@@@@@@@@@@@@@@@ðñòóôõö÷øùÁÂÃÄÅÆþ(H``Xf æ.4 ¸Òjðö(JÂØHpþh!X0¼X¸0ÜG6²50è0ñGpâ0ðG2ï0Ü1CGö1/Gpö1AGpöX<_ Õ PGp#GpñhGð.²50@0ÜG20IGpâ0HGàV 0Ü0HGàÕ GpY0GpX<_ Õ RGö0@Gpª0HGª0HG0HGª0HGà0ÜG0ÜX<_ Õ PGp#GpÏ:0@Gpâ0HGê :Gðö0HGö: 0ÜGý9 0ÜGà2ß0Ü0Ü0à 0áÒ0â TA1(P0äAð0àMàþh8þ¨5 Õ0GP4BX`0 æþ¨@zxþ0ýþ²@X0_0 Õ P0~YÜ0ýþÒhø% xÒfÐGðf$4ðhÒh Xü²40Pü^ ,GðähXP 0X 4×ÿ00×G11A²40G@0GY¸Gp,P0P0P000²204¿ V!^ 8½,üGpCP0^0P0_@ôP@øþ5ð½0G4nAðþX0Að0ÿþ1×0404P004ÿ0:À09Pð0<0Ü÷0ÜX0²304Gpâ²8GpØX (^ 8P 8²8!þÏ" "þ!þX0P3!DU$þXP!0DU$þ5ðÕ0G@4,AðþX0ÿþ Q 0#¾XCBPUoArðA §´AÃpÔ¬GЪ¡³ÆÓ¬¦³AÃ`Ó¬A£`³ÁÓ¬csFvFj!4DU$þX@dX0$T0 <T@ 04GðôX0$SX@0T@ 0TP <TPP$^0 @X Ò DP0 Ò? (^ HP þX _ HÕ DGp8Ò34 X0 P0$P þ@ >-Þ L X! 0ÿCòðCó¿ô Zþ/ "0] LA0A þ@ÁÂÃÄÅÆÇÈÉJKLMNOPÑÒÓÔÕÖרÙZ[\]^_`aâãäåæçèéjklmnoðñòóôõö÷øùz{|}~ >- >- KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþK@@@@@@@@@@@@@@@@@@@@@@@@@@É¥@£É¥@¤£@ ¨@@@@@É¥@@@@@@@ä¦@ ¥ @@@@@@ä¦@¥¤ Ä ¥ @£@óóçç@ÄÁâÄ@@@@@@Õ@åÖÓñ@ @@@@Ä ¥ @ÉaÖ@Å@@@Ä£¢ £@£@¤@@@@@@åãÖÃ@ÉaÖ@Å@@@@@@Ä£¢ £@£@×Ö@Ä £¨@ÉaÖ@ @@×Äâ@¢@@ ¢@@@@Ô @£@¤@@@@@@@É¥@ÄâÖÙÇ@@@@@@@É¥@ÙÅÃÆÔ@@@@@@@É¥@ÓÙÅÃÓ@@@Å£ @ @ @@@@@@@@@@Ä£@¢¥ @@@@@@Ä£@£@¢¥ @@ÅÖÆ@ @ÒÓNÄÓ~ð V@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ >-Þpÿÿøô`hÿÿÿÿÿé[âÁHP >- >- ÿÿP¿G lX P ¸«è×··f >-w >- >-xØÒÒÕGp ¬ÕG ¸ ° >-Þ×PPXG >- >-yÖA00Gp àA0 ñ!R0ñ!PótXPð_ÜXwÒ¤ßXÒ¤ä\×PPXA00Gp"A0 ñ!R0ñ!PótXPð_ÜXwÒ¤ÄXÒ¤É\×PP²$ñ!P$ó2XPð[ÜXwÒ¤úX×PP²0ñeP0ó¶XPðcÜXwÒ¥XÒ¥$ZÒ¥<`²8Gp |8G@ û8G 8_º8G0È_º<]º@P8 ]ºDP<X8]ºHL»^<P<]ºHL»^<P<]ºLP8 \º@^<X8N8V8X<P< ]ºPL»P8 ]ºTI»GphXºTA»½» Gp~A»"^8P8½G@AGðK_8P8H8L»L»J:^ºXX<N8P88ñ2P8óSXPð]Ò¥nXÒ¥qZÒ¥t\×88úD;»\ótX;ð_Ò¥R^Ò¥U\Ò¥XXXAð¢À >- >-XAð >-Gp "AVKJ@Ò¥£ >-ÒÒ;¢ÿº\û¢ÈI»<G n5ºÕ0G f4 XX`0Gð ¾ÿÖO ¹èA H K »<@~ G @ Gp ¦ÒO ¡F Gð 5º¤C0D ÌG º4 ªX`0 æIð»G nGð Õ0 ¿÷ >- 5º°Y0G ì4 ÜÿþX`0öc eÊ >-nð/àV+b8d@b)l n k m }Ò)¬K@@@@@@@@@@ ð@@@@@@@@@@c ÓÉâãÄÅå@@@@c ñ@@@@@@@@@@eÊÂÙÖæâÅ@@@@@eÊò@@@@@@@@@@nðÅÄÉã@@@@@@@nðó@@@@@@@@@@/àÓÉâãåãÖÃ@@@/àô@@@@@@@@@@VÓÉâã×Äâ@@@@Võ@@@@@@@@@@+bÄÉâ×åÖÓ@@@@+bö@@@@@@@@@@8dÄäÔ×@@@@@@@8d÷@@@@@@@@@@@béÁ×@@@@@@@@@bÙÅâãÁÙã@@@@zÅçÉã@@@@@@@)ç@@@@@@@@@@)@@@@@@@@@@@)¸ïÈC`ééâÁ×ÙÉÔ@]â£@Á @䣣 ¢Â``Ö£è~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÆÔèð`Ó¢£Ä ¥@@`@Ó¢£@@ ¥ ¢Èôèñ`¦¢ @@@`@¦¢ @£¢ £@@ KÔèò`Å£@@@@@`@Å£@£¢ £@@ Môèó`Ó¢£åãÖÃ@`@Ó¢£@å¤ @ã @Ö@ã £¢PÔèô`Ó¢£×Äâ@@`@Ó¢£@×Äâ@ £¨Òôèõ`Ä¢å@@`@Ä¢¨@ÄÁâÄ@¥¤ @ ÕÔèö`Ĥ@@@@@`@Ĥ@ÄÁâÄ@ @¨@ÃÃÈÈÙ×ôè÷`é@@@@@@`@Á£ @ÄÁâÄ@ @¨@ÃÃÈÈÙZÔèç`ŧ£@@@@@`@ã £ @Éé`â @@@@èooooaooooLÉ`É×Ó@Ä ¥ @èooooaooooNé`É×Ó@Ã×ä@@@@èooooÑÉ`Ã×ä@å ¢èooÓé`Ã×ä@â @èooooooÖÉ`Ã×ä@Ô @@èooooØé`Ä£ @MãÖÄ]@èooaooaoooo[É`ã @MãÖÄ]@èoozoozoo]\`Ñ@Ñ @`@å ¢@ðòaò÷aðö`òðKôô@{è@@@@@@@@@@@@@@@@@@@@ >- ñ®Ò®»>Ò¯} >-Òû¯@×®®×¯4¯4®Gð¦ >- >- Ýñ®Ò®»>Ò¯} >-Òû¯@×®®×¯4¯4®ñ®I®G°¦Mà«^Ò°6»@Ò¯Gº¼®G¦:Ò°6»BÒ¯GºÀH ®N Pó2XUð[ÜXwÒ¯àXH ®N Pó2XUð[ÜXwÒ¯ëXpaK`®Lp®wG¦pA``Jp®pA@AwðA øA0°8Õ®»DGp¦â®G¦Ò_0ºÄ_ ºÄÒT0¸ >-A UA00U@Gð¦âÒQ0·¸A RA00R@fG§$@0ÒN00Xð®ïIð»FGЧAðPðDð®hÜO0 ÒA00PA P~`F@¦âGð§L®G§>ÒQ0¸±A RA00RGð§LÒQ0¸_A RA00R®G§^Ò0¹A @ ¯:XAð¯8 >-Ò¯} >-Òû¯@ >-®G§ >- >-Gð§¦XAð >-Gp§AVKJ@HÒ°/¹I»<G §Ô5ºÈÕ0G§Ê4§¼X`0 æGð¦ >-ÖO ¹èA H K »<@~ G@ Gp¨ >-ÒO ¡F §ìGð¦ >-Õ¹Gp¦ >-5ºÔC0D ÌG¨(4¨X`0 æGð¦ >-òÂóÃõÄÅÄ÷2Ç2øÈzJ{ÖKÖl >-n >-k >-m >-} >-nÔÁç@@@@@@@@®Ô@@@@@@@@@@®ãÖ×@@@@@@@@tã@@@@@@@@@@tÂÖããÖÔ@@@@@^ÂÖã@@@@@@@@^Â@@@@@@@@@@^ä×@@@@@@@@@2ä@@@@@@@@@@2ÄÖæÕ@@@@@@@Ä@@@@@@@@@@ÆÉÕÄ@@@@@@@ZÆ@@@@@@@@@@ZÙÆÉÕÄ@@@@@@ÄÙÆ@@@@@@@@@ÄÓÅÆã@@@@@@@Ó@@@@@@@@@@ÙÉÇÈã@@@@@@ÖÙ@@@@@@@@@@ÖâÖÙã@@@@@@@âÁåÅ@@@@@@@ÆÉÓÅ@@@@@@@ÅÕÄ@@@@@@@@ÃÁÕÃÅÓ@@@@@ÃÁÕ@@@@@@@@ÅçÉã@@@@@@@@@@@@@@@@@@z®Gz >- ¯@ÝGª¦ íÒ¯}NÿGª¬Ò¯}b >-5ºàÕ0GªÄ4ª²GðnXð0ÿ÷tÇtø^È^J|z|KÀ{ÀA0¿÷ >- K»HGЫ&G «&0H ®#@ ®þA0¿÷ >- K»JGЫN0G «NA0H ®#G@«t@ ®þX ®I »LG@«tK »L@ ®þ×®®þA @ ®þA0P¿÷ >- I»HG@«¨I»NG°«¨G«¨1H ®#I »PG «ºA @ ®þX ®K »FGЫ¶A @ ®þA@P¿÷ >- I»HG@«úI»NG°«úG«úAX ®K »FGЫ¶A H0®42G@¬2@0®þA@P¿÷ >- I »HG@¬JI »NG°¬JJ®K»RV®X®Xð® >-þTºìA! A0P1@ Gp¬zA F0¬hþA@®Ò@ A@@A @ G¬ G¬ F0¬~_@ºð@B@®H0®3G¬¶0L0®^0®0P0¯4DC@®X0¯43A00XP®X ®L ®ARPTPA@C ®D ®nD ®tD ®zG4¬òX0®0P0¯4þP0¯4_0®"] ®A00@0®X@®K@»FGÐTA0 T0ºôK0»TGÐTA@@4G@X4GðXA0@0®A A >-¾÷°/þÒ¯} >-ú¯@þÒ¯}¯@þÿ >-Að >-Xºø >-!P®dXAð®` >-GpX`ºøK`J@`I`»VGÐÄÒ»VÒU 2A@AV0[Pºü0Gp®R5G°®V¿÷0 >- I»HG@®RAp0APA igH®G®L®J®^®(Y ®GЮ.X ®ig bG°®<&D ®L^®x® Gð®VÒp4ØXºø >- >- Ò0pÒ®â0Ö®â¹èÕ®â®@C`ééâÁÂÙÖæ@Éè@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@{è@@@@@@@@@@@@@@@@@@@@ÁP`Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÂL`Ó èoooo`Ãèoooo\ð`\zèÆó~Å]ÆÆõ~ÙÆ]ׯ÷~ä@Æø~Ħ]æÆñð~Ó £@Æññ~Ù£Á^Â_`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\èã@@Ä£`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`@\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\èã@@Ä£`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\@`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\裣@@Ä£`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\裣@@Ä£`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Á^\ñèÆò~⥠XAð¹ >- >-)(G`ééâÁæÁÉã@]`â£@Á @䣣 ¢KkèÓ@¢ @¦£@×âæNNè×@£ £ K]\`Ñ@Ñ @`@å ¢@ðòaò÷aðö`òðKôôÒ¥£ >-ú¢ÈþÒ¥£ >-æ¢ÈHK»XÞI»ZGйØA;D¹ÞþÒ¢ÿ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@{ÆÊB@'<µm >-µ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<\lô4ÅÄÉãÂÙÖæ4ÄÔdÌÿÿÿÿÀd';ZxµÔó0Nm<[y¶Õô1On@`PV; >- ÀÒÃ{ >-ÒÒÄÄrûÃJ@ÃGÀÃJXAðÃB >- >-XAð >-GpÀ(AVKJ@IÄvGÐÀ GpÀ`ÒO KÄxGðÀ>ÖO Ä"ÕÄGÀ¼Að~ GÁìÒÃ{GðÀÿóGÁìÃGÁì}GpÀ²@ÄGpÀÂÒÃ{ >-ÒGðÀÒÃ{ >-úGðÀÒÄ ÒXÄÜXÒA CWF ÀÔ >-ÿGÀöÒÃ{"GðÀ1 >- >-yÖ30GÁÒÃ{JGðÀ >- >-zÒ'¯PÃ×PPñ!P0ó2XPð[ÜXwÒ¯iXA, >-ñÒ1ÁîÒ0A2Ò1 Ò0A2Ò1ÂRÒ0A2Ò1ÂñTP0óXPðaÜ XwÒ XA2Ò1¶ñP0ó!XPðZÜXwÒ YA2Ò1ÂèÒ 0±A2AMà¥âA, >-ÒÃ{ >-ÒÿGÀ >-å¤ @Ó @É £ @@@@@@@ooo@@@@@@@@@@@@@@@@@å¤ @Ó @Õ¤ @@@@@@@@@@@o@@@@@@@@@@@@@@@@@@@å¤ @â @Õ¤ @@@@@@@@@@oooooo@@@@@@@@@@@@@@åãÖÃ@×£ @MÃÃÈÈÙ]@@@@@@@@@@oooooooooo@@@@@@@@@@å¤ @â ¤£¨@@@@@@@@@@@@@@@ç}oo}@@@@@@@@@@@@@@@Ö¦ @Õ @@Á ¢¢@à @@@oooooooooooooo@@@@@@ÄÁâÄ@ @ó@@ ¥ @oooo@@@@@@@@@@@Ï.°C`ééâÁÇåÖÓ@ÉèÄ¢¨@ÄÁâÄ@Ù @ó@MåÖÓñ]@{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`JJ`Å£ @ô@£@ÄÁâÄ@ ¥ @¤ zOJè~~~nÈ@@@@`OP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ >- ÀÒÆ: >-ÒÒÆÑÈ<ÒÆýÈtÒÇÛÇßûÆ@ÆMGÀ(ÆXAðÆ >- >-XAð >-GpÀ4AVKJÒÇÛÇß@IÈzGÐÀ¨ GpÀrÒO KÈ|GðÀPÜO ÒÖO ÇìÕÇßGÀÞÕÇâGÁ$Að~ GÄªÒÆ:GðÀÿóGĪÃGĪ}GpÀÔ@ÆÑGpÀäÒÆ: >-ÒGðÀÒÆ: >-úGðÀÒÆÑ ÒXÆÑÜXÒA CWF Àö >-ÿGÁLÒÆýÈtÒÆ:"ÒÇÛÇßGðÀÒÆý A >-ÿGÁLÒÆÑÈ<ÒÆ:6ÒÇÛÇâGðÀ1 >- >-yÖ30GÁrÒÆýÈtÒÆ:JÒÇÛÇßGðÀ >- >-zÕÈ@0GÁÒÆ:^GðÀÒ'¯PÅDÒ¯]0ܯ] ÒÒÆý0ÜÆý Ò×PPñ!P0ó2XPð[ÜXwÒ¯dXÒÆÑX >- >-zXGĬ0_P"DC@0J@0A@@ñ04GpÄzA® >-aÒ`ĶÒ+`0XàÈD0VGÂ|XàÈH0VGÂ|XàÈL0VGÂ|XàÈP0[GÂ|XàÈT0ZGÂ|XàÈX@0ZGÂ|XàÈ\ 0ZGÂ|XàÈ`0ZGÂ|XàÈd0ZG¿âÈ~Pà`3Aà`>À0\Gà¦ÒàÈhAààGðÂÊ0\Gà¸ÒàÈlAàà@0\GàÂÊÒàÈpAàà 0\GàÂÚãàAàà0\GàÂêÂàAàà0\GàÂúâàAàà0\Gàà >-ÁàAàà0\GàÃÔàAààHà0^NàPóBXUð\Ò`KXHà0`NàPóBXUð\Ò`WXîCà0=NàPó!XVðZÒ`dY¿ã0>NàPóBXUð\Ò`fZîCà0SNàPó!XVðZÒ`rY¿ã0TNàPóBXUð\Ò`tZîCà0@NàPó!XVðZÒ`~Y¿ã0ANàPóBXUð\Ò`ZîCà0CNàPó!XVðZÒ`X@`Òÿ``ÒaaAà0PàÅlAðÅl >- >-{>AAàÅlAð`àGÄv×PPñCPàótðPððÜðw`ð ñCPàótð >-PððÜð >-wAàà >-AððFÄ,A 4ÁìA®AðP >-A®AðPMà¥â >-ÒÆ: >-ÒÿGÀ >-ÒÆ:GðÀoooooooooooooooooooooooooooooooooooooooooooo@ÄâÖÙÇ~oooo@ÙÅÃÆÔ~oooo@ÂÓÒâÉéÅ~ooooo@ÓÙÅÃÓ~ooooo@ÃÙÄÁãÅ~ooooo@ÙÅÆÄÁãÅ~ooooo@Åç×Äã~ooooo@ÅçãÅÕã~oooåãÖÃ@¢£@ooooooMoooo]@@@@@@@@@@@@@@@Ë5øC`ééâÁÇÄÅå@ÉèåãÖÃ@Ó¢£@䣣¨@{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Çj`Å£ @ô@£@ÄÁâÄ@ ¥ @¤ zJJè~~~nÈ@@@@`Lj`@ÄÁâÄ@¥¤ @¢ zOJè~~~nÈ@@@@@@`ÔJèÕ£ z`ã @ÄÁâÄ@¥¤ @¤¢£@¥ @ @ ¢¢ @ ¥¤¢¨Õa@ @£@ @ @£@¢ ¨@£ @¥¤ @¢ KÖñÉ@£ @ ¥ @¤ @¢@¤¦@¤¢ @¨@ ¤ØÁ£@ð@£@ @@ÄÁâÄ@¥¤ @ ¢@¢£KJPJPOP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@åÖÓñ×Ö`ÅâãÙ×ÈÆâ@åâ@@Éâ@@×â@@ÄÁ@@×Ö@@oo@@ä@@@Æ@@@å@@@@@@@@@ä >- ÀÒÆµ >-ÒÒÇLÇÐÒ ÇÇàÒÇÇûÆ@ÆÈGÀ(ÆXAðÆ >- >-XAð >-GpÀ4AVKJÒÇÇ@IÇêGÐÀ GpÀrÒO KÇìGðÀPÕÇGÀòÕÇ¡GÁAð~ GÅPÒÆµGðÀÿóGÅPÃGÅP}GpÀâÒÆµ >-ÒÒÇÇ@ÇLGÀÒÇÇ¡@ÇGÀÒÇÇGðÁ&ÒÇÇÒÆµ >-úGðÀÒÇL ÜÇL ÒÒK ¤KÇîGðÀPÒ Ç Ü Ç ÒÒE ªKÇðGðÀPÒXÇLÖXÇÐÜXÒA CWF Á> >-ÿGÁ`ÒÆµ"GðÀPÅTׯÆÒ XÇÖ XÇàÜ XÒA CWF ÁPÆA C_F ÁBÆXÅT >- >-zXÇÔ >-PÆt1X ÅTAðÆX >-GpÁòCÆABÆÕÆ0GpÁò¿ J >-GðÂXÇÔ >-ÒÆµrÒÇÇ¡GðÀAð >-PÅ\ÒÅ`ÇòqÒïpÅb×PPñ!P ó2XPð[ÜXwÒpXÒp ×PPñ!P0ó2XPð[ÜXwÒp\X×PPñ!P0ó2XPð[ÜXwÒpaX×PPñP0ó!XPðZÜXwÒpfYîCàÅXNàPó!XVðZÒpzX×PPñPÅXó!XPðZÜXwÒpwYîCà0NàPó!XVðZÒp¯X×PPñP0ó!XPðZÜXwÒp¬YHà0NàPóBXUð\ÒpÌX×PPñ!P0ó2XPð[ÜXwÒpÇX¿0GÄ>A]ÇØH Å`!@ Å`LÇô >-@ÒNApPA@0UCP0f@pÒNpp@`H×PPñ!PHó2XPð[ÜXwÒpXfGpÃÜÒpÇöApAp:ñP@ó!XPðZÜXwÒYÒ@A@@A``AAB`HHGpÄ&AHGpÄ:AppPFPà GðÄ>FPÃä¿0GÅ"A]ÇØH Å`!@ Å`LÇô >-@ÒNApPA@0UCP0E¿S0f@pÒNpp@`H×PPñ!PHó2XPð[ÜXwÒpXfGpÄÀÒpÇÜApAp:ñP@ó!XPðZÜXwÒYÒ@A@@A``AAB`HHGpÅ >-AHGpÅAppPFPÄGðÅ"FPÄÈAPHÅ`XðÅ\Ò'¯PǨMà¥â >-_Æt >-ÒÆµ >-ÒÿGÀ >-Ä ¥ @@@@@@ooooMoooooo]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÃÃÈÈÙ@@@@@@@oooo@oooo@oo@@@â £@@@@@@ooMooo]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Ò ¨@ £@@ooMooo]@@@@@@@@Ä£@ £@ooooMooooo]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>è1@>ê>È`ÿÿ"=À>øC`ééâÁÄäÔ×@ÉèĤ@ÄÁâÄ@ @{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Çj`Å£ @ô@£@ÄÁâÄ@ ¥ @¤ zJJè~~~nÈ@@@@`Lj`@ @ ¢¢@@ñð@£@ÃÃÈÈÙ@£zOJè~~~nÈ@@@@@@@@@@`JPJPOPÄÁâÄ@ @¤@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÿÄ£@@@@@@@@@@ >-PÒ ¨ >- ÀÒÃOÂBÒ ÃÂJÒ¸ >-ÒÒÃäûÂ@ÂËGÀ(ÂXAð >- >-XAð >-GpÀ4AVKJÒÃä@IÂTGÐÀ GpÀrÒO KÂVGðÀPÕäGÀòÕçGÁAð~ GÂ6Ò¸GðÀÿóGÂ6ÃGÂ6}GpÀâÒ¸ >-ÒÒÃä@ÃOGÀÒÃç@ÃGÀÒÃäGðÁ&ÒÃäÒ¸ >-úGðÀÒÃO ÜÃO ÒÒK ¤KÂXGðÀPÒ Ã Ü Ã ÒÒE ªKÂZGðÀPÒXÃOÖXÂBÜXÒA CWF Á> >-ÿGÁ`Ò¸"GðÀPÂ:×ÂÂÒ XÃÖ XÂJÜ XÒA CWF ÁPÂA C_F ÁBÂXÂ: >- >-zXÂF >-PÂ~1X Â:AðÂb >-GpÁöCÂABÂÕÂ0GpÁöÕÂ\0GÂGðÂ"XÂF >-Ò¸rÒÃçGðÀXÂF >-Ò¸vÒÃçGðÀ >- >-DXÂF >-ÿGÀ >-@@@@ÿþ@@@@@@@@@@ >-@Bè1@BêBÐ ÿÿBøC`ééâÁÁÓãÙ@ÉèÁ£ @ÄÁâÄ@ @{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`Çj`Å£ @ô@£@ÄÁâÄ@ ¥ @¤ zJJè~~~nÈ@@@@`Lj`@ @ ¢¢@@ñð@£@ÃÃÈÈÙ@£zOJè~~~nÈ@@@@@@@@@@`JPÁ^JPOPÒÌ >-Ò×Ë&Ë&cXpËzghX Â:ÒHË(×PPñ!PHó2ÌPðÌÜÌw×PPñ!P ó2ËýPðÌÜËýwñTPÂóÌPðÌÜ ÌwA@̯APA`0^`Ë&wCp0[pË&GÐÅVAPPA >-¾÷@A@@@Ë"Ò@ËÆA@@Ò@ËÔA@@Ò@ËÆA@@A> >-¾÷@A@@Ò@ËÆA@@YË~GÐÄADÊ.DÊ4AA@A >-¾÷@A@@A0@H×PPñ!PHó2@Pð@Ü@wA@@A >-¾÷@A@@AÒ@ËÈ^ËzÕ`GÅÒ@ËÊA@@ñP`ó!XPðZÜXwÒ@YA@@A``FpÅBGðÅVFÄöAPPYPËGÐÄfGðÆ¿0GÆpGÐÆAPPYPËG ÆÒ@ËÆA@@A >-¾÷@A@@@Ë$Ò@ËÆA@@Ò@ËA@@Ò@ËÆA@@A> >-¾÷@A@@Ò@ËÆA@@YË~GÐÅÖADÊ.DÊ4AA@A >-¾÷@A@@A0C0@H×PPñ!PHó2@Pð@Ü@wA@@A >-¾÷@A@@AÒ@ËÈ^ËzÕ`GÆXÒ@ËÊA@@ñP`ó!XPðZÜXwÒ@YA@@A``FpÆGðÆFÆ<APPYPËGÐŤGðÆÒ@ËÆA@@_@Ë@@ËÜûËâ@Ì*GƾËâXAðËÚ >-ÒÌ >-ÒûËâ >-XË& >- >-J HIËÌG Ç >-yËÕpGÇxÆòX`p æGðÃÄÖO Ë*A H K ËÌ@~ GÈþ@ GpÇ@ÒO ¡F Ç"GðÃÄÕáGpÃÄyËCpDÇhGÇ^xÇNX`p æGðÃÄÕp òInÂInóIjÃIj÷IàÇIàøIòÈIòlD*nD*kD*mD*}D*J|ÔÁç@@@@@@@@J@Ô@@@@@@@@@@J@ãÖ×@@@@@@@@Jã@@@@@@@@@@JÂÖããÖÔ@@@@@J ÂÖã@@@@@@@@J Â@@@@@@@@@@J ä×@@@@@@@@@Iàä@@@@@@@@@@IàÄÖæÕ@@@@@@@IòÄ@@@@@@@@@@IòâÁåÅ@@@@@@@InÆÉÓÅ@@@@@@@InÅÕÄ@@@@@@@@IjÃÁÕÃÅÓ@@@@@IjÃÁÕ@@@@@@@@IjÅçÉã@@@@@@@Ij@@@@@@@@@@@JAð >-ÿ >- >- A0PÉvC0¿0@ÉtÒÂ0XÂ:AðÉZ >-GpÉNcXpËzghÒÌN >-ÒÌb >-@Bè1@BêIÈ X Ë&[ ˦G@ɲP Ë&þC0¿0T˪X Ë&^ ˦!G°ÉºP Ë&þ×Ë&Ë&þC0¿0T˪[˦G@ɲPË&þyË®ÕpGÉðxÉÞGðÊXðpÿ÷JÇJøJ ÈJ ÒÌ >-úËâþÒÌËâþÒ@`Ü@ ÒX˺ >-!PËXAðË >-GpÊHX`˺K`J@`I`ËÎGÐÊpÒËÎÒU 2A@AV0[P˾0GpË >-5G°Ë¿÷0 >- IËÐG@Ë >-IË$G°ÊÂKË"qfKpËÒ]`ËÂGðÊÞKË$qfKpËÒ]`ËÂC`AÒX0ÜXÒfC`Y`C`X`^Ë&Bp4ÊX˺ >- >- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÿÄ£LHGÔH4HDIDÿÿðJ\Jt`@ÈV Ò ¨LHC`ééâÁÄéÁ×@ÉèÁ£ @ÄÁâÄ@oooo@ÃÃÈÈÙ@oooooooooo@{è@@@@@@@@@@@@@@@@@@@@ÁP`Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÂÓ`Ö¢ £èoooo`\ñèÆò~⥠\{Æó~Å]ׯ÷~ä@Æø~Ħ >- ÀÒÇ >-ÒÒ+ÈÌvÒÈsÌ¢ÒÈÌÊÒÉ}ÉÊÈûÇf@Ç GÀ2ÇfXAðÇ^ >- >-XAð >-GpÀ>AVKJÒÉ}É@IÌÐGÐÀ° GpÀ|ÒO KÌÒGðÀZÕÉGÁÕÉGÁ(ÕÉGÁLAð~ GâÒÇGðÀÿóGâÃGâ}GpÀþÒÇ >-ÒÒÉ}É@ÈGÀÒÉ}É@ÈsGpÁp@ÈGÀÒÉ}ÉGðÁpÒÇ >-úGðÀÒ+È Ü+È ÒÖ+ÈÌvÒ# ÌKÌÔGðÀZÒÈs ÜÈs ÒÖÈsÌ¢ÒK ¤KÌÖÊÈGðÀZÒÈ ÜÈ ÒÖÈÌÊÒI ¦KÌØ@ÊÈGðÀZ@ÈsGÂ@ÊÈGÂÒXÈsÜXÒA CWF Á >-ÿGÁÀÒÈÌÊÒÇ"ÒÉ}ÉGðÀ >- >-yÖGpÁè3GpÁþ >- >-zGpÁèÒÈGðÂLÒÈÌÊÒÇrÒÉ}ÉGðÀÒÈÌÊÒÇJÒÉ}ÉGðÀAÈ >-ÿGÂ6ÒÈsÌ¢ÒÇ6ÒÉ}ÉGðÀñ!Pó2ÈsPðÈvÜÈswPÊÊÕ̦Gpä >- >-zXGô Ò_Ì 4AðÊâÒÊâ̪ >- >-zöA >-×ÊÞÊÞÕÌ®ÊâGÃÄËÔGÃÔX̲ >-AApÊâPÊÚpGÃfPɪX`pP`ɰXÊÊAðÉ >-GpÃä9U¿Sɨ¿JPYPDC@0J@0GÃfA@@5ÊÎH 0AR0A00ÕÌn0GÃf >- >-Z,C@0T@̶@A@@4Ã5ÊÎ4ÂðA``½cÌ"G@ÃV`A```Y`pGÐÂÊApp >-FºAXðÊÚXÊÞGÃôÒ ¯PÇTÒ¯ZÈMà¥âXÊÞLÌÚ^̲ >-ÒÇ >-ÒÿGÀ >-ÒÇ^ÒÉ}ÉGðÀÒÇÒÉ}ÉGðÀÒÇÒÉ}ÉGðÀÒÇ®ÒÉ}ÉGðÀÒÇÂÒÉ}ÉGðÀÒÇÖÒÉ}ÉXÊÞLÌÚ^̲ >-GðÀA >-X ÊÞA P ÊÞÀËÖGÄ6ÒÉ´GðÄ<ÒÊ6Ò0×PPñ2P0óS PðÜ wA@APÊâ¿0f¿cPL`Ì"J`Phw¿sPLpÌ"JpPgGÐÄAPP >-F@Äl` HÌ"`¾sX¾cZÒ\0 >-ñTPXóPð#Ü wÀËÖGŬ0GÅ0GàÅ"C 0N Pó)Vð*C 0 N Pó,Vð-óBX0ð\Ò6XÒ9ZóBX0ð\ÒDXÒGZñR0ñ!P0óSXPð]ÒRXÒUZÒX\H 0N Pó2`UðcH 0N Pó2jUðmH 0N Pó2sUðvÒ{0 GðÇR@%Ò[&%GðÇR×PPñ2P0óS*Pð/Ü*w×PPñ2P0óS4Pð9Ü4wÒQʸ0GÅøÒQÊÄCP0TP̺PAUʸÒGPAPU0GÆA 0!0GÆ*A 0GÆFÒPÌâÒP APPA 0GÆZ^ ̾T ÌÂA GpÆ×PPñP ó!XPðZÜXwÒ>YAPPe0GÆÒPÌçAPP@0GÆ®ÒPÌêAPP 0GÆÀÒPÌíAPP0GÆÒÒPÌðAPP0GÆäÒPÌóAPP0GÆöÒPÌöAPP0GÇÒPÌùAPP0GÇÒPÌüAPP0GÇ,ÒPÌÿAPP0GÇ>ÒPÍAPPVGÇR_`ÌÆÒ`ÌÜ]P >-Ä £¨@]C`ééâÁÓ×Äâ@ÉèÓ¢£@×Äâ@Ä £¨@{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÆZ`Å£ @£¢ £@ zÈzè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`KZ`@ô@£@ÄÁâÄ@ ¥ @¤ zMzè~~~nÈ@@@@`PZ`@ÄÁâÄ@¥¤ @¢ zÒzè~~~nÈ@@@@@@`×zèÕ£ z`ã @ÄÁâÄ@¥¤ @¤¢£@¥ @ @ ¢¢ @ ¥¤¢¨ÙÑ@ @£@ @ @£@¢ ¨@£ @¥¤ @¢ KZaÉ@£ @ ¥ @¤ @¢@¤¦@¤¢ @¨@ ¤[ñ£@ð@£@ @@ÄÁâÄ@¥¤ @ ¢@¢£KÉ@É@N@Ó@@_È9@_Ê_°^ ÿÿoooooooo@ããÙ~oooooo@ÃÃÈÈÙ~oooooooooo@åÅÙ~ooKoo@ÃÙÄÁãÅ~ooKooo@ÃÈÄÁãÅ~ooKooo@ÃÈãÉÔÅ~oozoozoo@âÉéÅ~oooo@ÉÕÉã~oooo@ÔÖÄ~oooo@ÉÄ~ooooooooooooooo@ããÙ~oooooo@ÃÃÈÈÙ~oooooooooo@âÉéÅ~oooooo@Å×~oooooo@ÁÃ~oo@ÁÔÖÄÅ~ooo@ÙÔÖÄÅ~ooo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@òô@@\\\@óñ@@ÁÕè@ÿÿÿÿÿÿÿÿ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@åÖÓñ^0ÿÿÿÿÿþ@@@@@@,ÁããÙ~MÔÁÉÕ~kÙÕkÙäkÖåkãâkÖÓkâÃkÕçkÆÖkÕÅkÙÆ >- À >-PÂd5ðf0GàÁÞ >- >-yÖA``A` >-qÒ_pÂX0BXðXÜXwÒpX×PPñ!P0ó2XPð[ÜXwÒpX×PPñ!P0ó2XPð[ÜXwÒpXX0T0T0¾HApA A0D ÂGÀÜ×PPñPó!XPðZÜXwÒYAA GpÀ®0 GÁÞÒp0Âñ!P0 ó2XPð[ÜXwÒp3X0GÁÞ`p7×PPñP0ó!XPðZÜXwÒp8Y0GÁÞÒp;Âñ!P0ó2XPð[ÜXwÒp>X0GÁÞ`pB×PPñP0ó!XPðZÜXwÒpCY30GpÁÞ >- >-z0GÁÞÒpFÂÒpJ0ÒpQ ñTP0óXPðaÜ XwÒ pVX4ÀA`XðÂdÒ'¯PÂlMà¥âL` >- >-HâÃÈ~ozoooo@ÄÅå~oooo@ÃÈ×~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Ä ¥ @Ó¢£@@@@@@@@@@@@@@@@@@@@@@@@@@@@@åÖÓ~`Ãã~Äã~åãÖÃ~ >- ÀÒÄß >-ÒÒ+ÅhÈÒÒÅÃÈÊÒÅüÈþÒÆ(ÉÒÇÇ >-ÇûIJ@ÄòGÀ8IJXAðĪ >- >-XAð >-GpÀDAVKJÒÇÇ >-@IÉGÐÀÀ GpÀÒO KÉGðÀ`ÕÇ >-GÁÕÇ GÁ8ÕÇGÁXÕÇGÁ|Að~ GÄÒÄßGðÀ$ÿóGÄÃGÄ}GpÁÒÄß >-ÒÒÇÇ >-@ÅhGÀ$ÒÇÇ@ÅüGpÁ @Æ(GÀ$ÒÇÇ >-GðÁ ÒÄß >-úGðÀ$Ò+Åh Ü+Åh ÒÖ+ÅhÈÒÒ# ÌKÉGðÀ`ÒÅà ÜÅà ÒÖÅÃÈÊÒG ¨KÉGðÀ`ÒÅü ÜÅü ÒÖÅüÈþÒK ¤KÉÇGðÀ`ÒÆ( ÜÆ( ÒÖÆ(ÉÒI ¦KÉ@ÇGðÀ`@ÅüGÂD@ÇGÂDÒXÅüÜXÒA CWF Á >-ÿGÁðÒÆ(ÉÒÄß"ÒÇÇGðÀ$ >- >-yÖGpÂ3GpÂ. >- >-zGpÂÒÆ(GðÂ|ÒÆ(ÉÒÄßrÒÇÇGðÀ$ÒÆ(ÉÒÄßJÒÇÇGðÀ$AÆ( >-ÿGÂfÒÅüÈþÒÄß6ÒÇÇGðÀ$ñ!Pó2ÅüPðÅÿÜÅüwPÇÕÉGpÄ >- >-zXGÄ* Ò_Èb 4AðÇ6ÒÇ6É >- >-zöA >-×Ç&Ç&ÕÉ >-Ç6GÄ:bÈ(GÄZÈ*GÄjÀÈ*GÄjÕÈ.É G ÄzÒÈÄÇ8ÈÈÈ(GÃ8@ÅÃGÄXÇAÇ6ÒÇ*ÈvÒÇ,ÅÃAðÇ* >- >-{ÿGpÄJPÈÄBÈÈXÇAÇ6ÒÈÂÈvAðÈ >- >-|þÿGpÄ >-×Ç&Ç&PÇPÇ"Gð0QPHÈ.( wDCp0¿C0GAspA@A@@XÇ&APÇ& >-D ÄxÃ4ÃzHÈ.XðÇ"XÇ&Ò¯PÄ Ò ¯WÅhÈ(GÃìA ¯n @ GÃÔM Ò ÅÃ] >-Mà¥â >-_Ç >-ÒÄß >-ÒÿGÀ$ >-ÒÄßrÒÇÇGðÀ$ÒÄß^ÒÇÇGðÀ$ÒÄßÒÇÇGðÀ$ÒÄßÒÇÇ >-GðÀ$ÒÄßêÒÇÇ GðÀ$ÒÄßþÒÇÇ >-GðÀ$ÒÄßÒÇÇ >-GðÀ$ÒÄß&ÒÇÇ >-GðÀ$ÒÄß:ÒÇÇ GðÀ$Òp¦¢ @XjC`ééâÁÂÙÄâ@É覢 @£¢ £@@ @{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÆZ`Å£ @£¢ £@ zÇjè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`JJ`Å£ @ @ @M×Äâ@¨]zKZè~~~nÈ@@@@@@@@`Mz`@ô@£@ÄÁâÄ@ ¥ @¤ zOJè~~~nÈ@@@@`Ñj`@ÄÁâÄ@¥¤ @¢ zÒzè~~~nÈ@@@@@@`×zèÕ£ z`ã @ÄÁâÄ@¥¤ @¤¢£@¥ @ @ ¢¢ @ ¥¤¢¨ÙÑ@ @£@ @ @£@¢ ¨@£ @¥¤ @¢ KZaÉ@£ @ ¥ @¤ @¢@¤¦@¤¢ @¨@ ¤[ñ£@ð@£@ @@ÄÁâÄ@¥¤ @ ¢@¢£KÇðÇðK`OPÓ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@åÖÓñk6@@@@@@, >- ÀÒÅ >-ÒÒ+Æ(ÉÒÆÉÒÆ¼ÉÀÒÆèÉÐÒÇÆÇÊÇÖûÅt@ŲGÀ8ÅtXAðÅl >- >-XAð >-GpÀDAVKJÒÇÆÇÊ@IÉÖGÐÀÀ GpÀÒO KÉØGðÀ`ÕÇÊGÁÕÇÍGÁ8ÕÇÐGÁXÕÇÓGÁ|Að~ GÄÒÅGðÀ$ÿóGÄÃGÄ}GpÁÒÅ >-ÒÒÇÆÇÊ@Æ(GÀ$ÒÇÆÇÐ@ƼGpÁ @ÆèGÀ$ÒÇÆÇÊGðÁ ÒÅ >-úGðÀ$Ò+Æ( Ü+Æ( ÒÖ+Æ(ÉÒ# ÌKÉÚGðÀ`ÒÆ ÜÆ ÒÖÆÉÒG ¨KÉÜGðÀ`ÒÆ¼ ÜÆ¼ ÒÖÆ¼ÉÀÒK ¤KÉÞÇÖGðÀ`ÒÆè ÜÆè ÒÖÆèÉÐÒI ¦KÉà@ÇÖGðÀ`@ƼGÂF@ÇÖGÂFÒXƼÜXÒA CWF Á >-ÿGÁðÒÆèÉÐÒÅ"ÒÇÆÇÐGðÀ$ >- >-yÖGpÂ3GpÂ0 >- >-zGpÂÒÆèGðÂ~ÒÆèÉÐÒÅrÒÇÆÇÐGðÀ$ÒÆèÉÐÒÅJÒÇÆÇÐGðÀ$AÆè >-ÿGÂhÒÆ¼ÉÀÒÅ6ÒÇÆÇÓGðÀ$ñ!Pó2ƼPðÆ¿ÜÆ¼wPÇØÕÉÄGpÄ >- >-zXGÄ0 Ò_É 4AðÇôÒÇôÉÈ >- >-zöA >-×ÇäÇäÕÉÌÇôGÄ@bÈæGÄ`ÈèGÄpÀÈèGÄpÕÈìÉâG ÄÒÉÇöÉÈæGÃ:@ÆGÄXÇØAÇôÒÇèÉ4ÒÇêÆAðÇè >- >-{ÿGpÄPPÉBÉXÇØAÇôÒÉÉ4AðÉ >- >-|þÿGpÄ×ÇäÇäPÇÜPÇàGò0QPHÈì( wDCp0¿C0GAspA@A@@XÇäAPÇä >-D Ä xÃ4Ã|HÈìXðÇàXÇäÒ¯PÅcÒ"¯UÆ(ÈæGÃîA ¯n @ GÃÖM Ò Æ] >-AÐĦMॸ >-_ÇÜ >-ÒÅ >-ÒÿGÀ$ >-ÒÅrÒÇÆÇÐGðÀ$ÒÅ^ÒÇÆÇÐGðÀ$ÒÅÒÇÆÇÐGðÀ$ÒÅÒÇÆÇÊGðÀ$ÒÅêÒÇÆÇÍGðÀ$ÒÅþÒÇÆÇÊGðÀ$ÒÅÒÇÆÇÊGðÀ$ÒÅ&ÒÇÆÇÊGðÀ$ÒÅ:ÒÇÆÇÍGðÀ$Òp >- ÀAªÀÕÇäÉÌGÅ&X0ÇÜXPÇà¥PHÈì( wDCp0¿C0GAspA@A@@ºD Å2GÅP ÅXÒÅV0ÒÅ^0XÇØAðÅ< >-GpÅ*GðŸxÄê¿0¡4ÄÎÿ >-AðGðÅ(Õ°p@tP1@tRt8Å£@VthC`ééâÁÅÄÄâ@ÉèÅ£@£¢ £@@ @{è@@@@@@@@@@@@@@@@@@@@Â``Ãè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`ÆZ`Å£ @£¢ £@ zÇjè~~~nÈ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`JJ`Å£ @ @ @M×Äâ@¨]zKZè~~~nÈ@@@@@@@@`Mz`@ô@£@ÄÁâÄ@ ¥ @¤ zOJè~~~nÈ@@@@`Ñj`@ÄÁâÄ@¥¤ @¢ zÒzè~~~nÈ@@@@@@`×zèÕ£ z`ã @ÄÁâÄ@¥¤ @¤¢£@¥ @ @ ¢¢ @ ¥¤¢¨ÙÑ@ @£@ @ @£@¢ ¨@£ @¥¤ @¢ KZaÉ@£ @ ¥ @¤ @¢@¤¦@¤¢ @¨@ ¤[ñ£@ð@£@ @@ÄÁâÄ@¥¤ @ ¢@¢£KÇðÇðK`OPÓ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@åÖÓñu@@@@@@, À >-X¼@ÜGÀ0 >- >-yÖGpÀ5ÀjÕ0 GÀP4ÀGðÀÒO ÅAð >-GpÀÖO ÅÕ GÀ^@ÜAðÀ~ >-GðÀÒO ÅP >-yPyV1t2p2w2tuy`G`ééâÁ×âæÄ@]â£@Á @䣣 ¢JØ`Å£ @×¢¢¦zOØè~~~nL@@@@@@@@`]\`Ñ@Ñ @`@å ¢@ðòaò÷aðö`òðKôô À×((A(PÀ4AðÀ0 >-×APÀ<AðÀ8 >- >- ä ÀAðPðÀ2×OAðÀ >- >-@zP1@zRz8 P À1ÒÀ0 >-AXÄ >-PÀAðÀv >-GpÀhô@4GpÀh¿0J >-ÕÀ@5G°ÀnH ÀA @ ÀI @HG@ÀH ÀA @ À×ÀÀGðÀXÄ >-ñ >-@zð9@zòzØ^ ÿÿ ÀX ð×ðð0QDC@0J@0A@@Õ+0 GÀ.4ÀGðÀDÒð 0A@0P@ð >- >-{> >- ÀX ð×ððÒð iÕ Ã8GÀJ0QDC@0J@0A@@Õ0 GÀ>4À,GðÀJÒ'ð0ÒYðF05 >- À ¿qÑXÂâ >-ApGÁ(PÁfX`pP`ÁlAðÁJ >-GpÁ09U¿SÁd¿ JPYPDC@0J@0GÁ(A@@5Á:H 0AR0A00ÕÂÚ0GÁ(Õ°0GÀÆC@0T@Âæ@A@@4Àj5Á:4ÀHA``½c°G@À²`A```Y`pGÐÀ$App >-FÀGðÁ(A@]¿0f¿cPL`°J`Phw¿sPLp°JpPgGÐÁAPP >-F@ÀÒ` H`pg"C 0 >-ÿXÂâ >- >-AðGðÁAðGðÁ@|ø9@|ú|à^ ÿÿ ÀAqpGÀüÕðpG@À"ÕðpGÐÀ6App >-pGÁFÀGðÀüïÒÁZð CÁ^BÁ^XÁp >-PÁ4PÁTAðÁ >-GpÀü¿ JXPÁpP >-IPÁG@ÀüX0ÁTASPPÕÁ0GÁC0D¿C0AA@4ÀpGÁX`ÁZA``½càG@ÀÆ`A```Y`pGÐÀæApp >-pGÁX`pFÀæGðÁP`ÁZXÁp >-PÁTAðÁ8GðÀ\AðGðÁAP >-ÿXÁ4 >-@~X1@~Z~ ^ ÿÿ@~X9@~Z~@^ ÿÿ@@@@@@@@ÿÿÿÿÿÿÿÿÿÿ >\ No newline at end of file >diff -Naupr hercules-3.05/version.c hercules-20070717/version.c >--- hercules-3.05/version.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/version.c 2008-09-03 13:07:48.000000000 +0200 >@@ -1,7 +1,7 @@ > /* VERSION.C (c) Copyright Roger Bowler, 1999-2007 */ > /* Hercules Version Display Module */ > >-// $Id: version.c,v 1.49 2007/06/23 00:04:19 ivan Exp $ >+// $Id: version.c,v 1.50 2007/12/07 12:50:22 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module displays the Hercules program name, version, build */ >@@ -9,6 +9,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: version.c,v $ >+// Revision 1.50 2007/12/07 12:50:22 rbowler >+// Show multi_byte assist status at startup >+// > // Revision 1.49 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -146,7 +149,8 @@ static const char *build_info[] = { > && !defined( ASSIST_CMPXCHG8 ) \ > && !defined( ASSIST_CMPXCHG16 ) \ > && !defined( ASSIST_FETCH_DW ) \ >- && !defined( ASSIST_STORE_DW ) >+ && !defined( ASSIST_STORE_DW ) \ >+ && !defined( MULTI_BYTE_ASSIST) > " (none)", > #else > #if defined( ASSIST_CMPXCHG1 ) >@@ -167,6 +171,9 @@ static const char *build_info[] = { > #if defined( ASSIST_STORE_DW ) > " store_dw" > #endif >+ #if defined( MULTI_BYTE_ASSIST ) >+ " multi_byte" >+ #endif > , > #endif > >diff -Naupr hercules-3.05/vm.c hercules-20070717/vm.c >--- hercules-3.05/vm.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/vm.c 2008-09-03 13:07:48.000000000 +0200 >@@ -3,7 +3,7 @@ > > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: vm.c,v 1.45 2007/06/23 00:04:19 ivan Exp $ >+// $Id: vm.c,v 1.46 2007/08/07 19:47:59 ivan Exp $ > > /*-------------------------------------------------------------------*/ > /* This module implements miscellaneous diagnose functions */ >@@ -14,6 +14,9 @@ > /*-------------------------------------------------------------------*/ > > // $Log: vm.c,v $ >+// Revision 1.46 2007/08/07 19:47:59 ivan >+// Fix a couple of gcc-4.2 warnings >+// > // Revision 1.45 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -821,7 +824,7 @@ int j,k; > dresp=""; > freeresp=0; > >- if(buf && *buf) >+ if(*buf) > { > #ifdef FEATURE_HERCULES_DIAGCALLS > int shcmd = 0; >diff -Naupr hercules-3.05/vstore.h hercules-20070717/vstore.h >--- hercules-3.05/vstore.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/vstore.h 2008-09-03 13:07:48.000000000 +0200 >@@ -4,7 +4,7 @@ > /* Interpretive Execution - (c) Copyright Jan Jaeger, 1999-2007 */ > /* z/Architecture support - (c) Copyright Jan Jaeger, 1999-2007 */ > >-// $Id: vstore.h,v 1.78 2007/06/23 00:04:19 ivan Exp $ >+// $Id: vstore.h,v 1.83 2008/04/02 21:52:19 rbowler Exp $ > > /*-------------------------------------------------------------------*/ > /* This module contains various functions which store, fetch, and */ >@@ -23,6 +23,7 @@ > /* vfetch8 Fetch an eight-byte integer from virtual storage */ > /* instfetch Fetch instruction from virtual storage */ > /* move_chars Move characters using specified keys and addrspaces */ >+/* move_charx Move characters with optional specifications */ > /* validate_operand Validate addressing, protection, translation */ > /*-------------------------------------------------------------------*/ > /* And provided by means of macro's address wrapping versions of */ >@@ -34,6 +35,21 @@ > /*-------------------------------------------------------------------*/ > > // $Log: vstore.h,v $ >+// Revision 1.83 2008/04/02 21:52:19 rbowler >+// Fix PIC4 when MVCOS operand finishes on page boundary >+// >+// Revision 1.82 2008/03/23 06:13:07 rbowler >+// Add MVCOS instruction (part 3) >+// >+// Revision 1.81 2008/03/23 03:03:45 gsmith >+// 22 Mar 2008 fix unbalanced comment - Peter J Farley III - by Greg >+// >+// Revision 1.80 2008/03/16 00:09:57 rbowler >+// Add MVCOS instruction (part 2) >+// >+// Revision 1.79 2008/02/20 23:47:22 ptl00 >+// Fix branch to odd address so pgm old is bumped >+// > // Revision 1.78 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -643,8 +659,10 @@ int len; > > /* Program check if instruction address is odd */ > if ( unlikely(offset & 0x01) ) >+ { >+ if (!exec) regs->instinvalid = 1; > regs->program_interrupt(regs, PGM_SPECIFICATION_EXCEPTION); >- >+ } > pagesz = unlikely(addr < 0x800) ? 0x800 : PAGEFRAME_PAGESIZE; > > #if defined(FEATURE_PER) >@@ -860,6 +878,8 @@ int len2, len3; > * (a) dest and source boundary cross at the same time > * (b) dest boundary crossed first > * (c) source boundary crossed first >+ * Note: since the operand length is limited to 256 bytes, >+ * neither operand can cross more than one 2K boundary. > */ > > if ( NOCROSS2K(addr1,len) ) >@@ -930,6 +950,104 @@ int len2, len3; > } /* end function ARCH_DEP(move_chars) */ > > >+#if defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS) >+/*-------------------------------------------------------------------*/ >+/* Move characters with optional specifications */ >+/* */ >+/* Input: */ >+/* addr1 Effective address of first operand */ >+/* space1 Address space for first operand: */ >+/* USE_PRIMARY_SPACE */ >+/* USE_SECONDARY_SPACE */ >+/* USE_ARMODE + access register number */ >+/* USE_HOME_SPACE */ >+/* key1 Bits 0-3=first operand access key, 4-7=zeroes */ >+/* addr2 Effective address of second operand */ >+/* space1 Address space for second operand (values as space1) */ >+/* key2 Bits 0-3=second operand access key, 4-7=zeroes */ >+/* len Operand length (range 0-4096) */ >+/* regs Pointer to the CPU register context */ >+/* */ >+/* This function implements the MVCOS instruction which moves */ >+/* up to 4096 characters using the address space and key */ >+/* specified by the caller for each operand. Results are */ >+/* unpredictable if destructive overlap exists. */ >+/* */ >+/* The space1 and space2 parameters force the use of the */ >+/* specified address space, or the use of the specified */ >+/* access register, regardless of the current PSW addressing */ >+/* mode. */ >+/* */ >+/* A program check may be generated if either logical address */ >+/* causes an addressing, protection, or translation exception, */ >+/* and in this case the function does not return. */ >+/*-------------------------------------------------------------------*/ >+_VSTORE_C_STATIC void ARCH_DEP(move_charx) (VADR addr1, int space1, >+ BYTE key1, VADR addr2, int space2, BYTE key2, >+ int len, REGS *regs) >+{ >+BYTE *main1, *main2; /* Main storage pointers */ >+int len1, len2, len3; /* Work areas for lengths */ >+ >+ /* Ultra quick out if copying zero bytes */ >+ if (unlikely(len == 0)) >+ return; >+ >+ ITIMER_SYNC(addr2,len-1,regs); >+ >+ /* Quick out if copying just 1 byte */ >+ if (unlikely(len == 1)) >+ { >+ main2 = MADDR (addr2, space2, regs, ACCTYPE_READ, key2); >+ main1 = MADDR (addr1, space1, regs, ACCTYPE_WRITE, key1); >+ *main1 = *main2; >+ ITIMER_UPDATE(addr1,len-1,regs); >+ return; >+ } >+ >+ /* Translate addresses of leftmost operand bytes */ >+ main2 = MADDR (addr2, space2, regs, ACCTYPE_READ, key2); >+ main1 = MADDR (addr1, space1, regs, ACCTYPE_WRITE, key1); >+ >+ /* Copy the largest chunks which do not cross a 2K >+ boundary of either source or destination operand */ >+ while (len > 0) >+ { >+ /* Calculate distance to next 2K boundary */ >+ len1 = NOCROSS2KL(addr1,len) ? len : >+ (int)(0x800 - (addr1 & 0x7FF)); >+ len2 = NOCROSS2KL(addr2,len) ? len : >+ (int)(0x800 - (addr2 & 0x7FF)); >+ len3 = len1 < len2 ? len1 : len2; >+ >+ /* Copy bytes from source to destination */ >+ concpy (regs, main1, main2, len3); >+ >+ /* Calculate virtual addresses for next chunk */ >+ addr1 = (addr1 + len3) & ADDRESS_MAXWRAP(regs); >+ addr2 = (addr2 + len3) & ADDRESS_MAXWRAP(regs); >+ >+ /* Adjust remaining length */ >+ len -= len3; >+ >+ /* Exit if no more bytes to move */ >+ if (len == 0) break; >+ >+ /* Adjust addresses for start of next chunk, or >+ translate again if a 2K boundary was crossed */ >+ main2 = (addr2 & 0x7FF) ? main2 + len3 : >+ MADDR (addr2, space2, regs, ACCTYPE_READ, key2); >+ main1 = (addr1 & 0x7FF) ? main1 + len3 : >+ MADDR (addr1, space1, regs, ACCTYPE_WRITE, key1); >+ >+ } /* end while(len) */ >+ >+ ITIMER_UPDATE(addr1,len-1,regs); >+ >+} /* end function ARCH_DEP(move_charx) */ >+#endif /*defined(FEATURE_MOVE_WITH_OPTIONAL_SPECIFICATIONS)*/ >+ >+ > /*-------------------------------------------------------------------*/ > /* Validate operand for addressing, protection, translation */ > /* */ >diff -Naupr hercules-3.05/w32chan.c hercules-20070717/w32chan.c >--- hercules-3.05/w32chan.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32chan.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // w32chan.c Fish's new i/o scheduling logic > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2001-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32chan.c,v 1.27 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32chan.c,v 1.28 2007/11/30 14:54:33 jmaynard Exp $ > // > // $Log: w32chan.c,v $ >+// Revision 1.28 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.27 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/w32chan.h hercules-20070717/w32chan.h >--- hercules-3.05/w32chan.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32chan.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // w32chan.h Fish's new i/o scheduling logic > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2001-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32chan.h,v 1.14 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32chan.h,v 1.15 2007/11/30 14:54:33 jmaynard Exp $ > // > // $Log: w32chan.h,v $ >+// Revision 1.15 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.14 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/w32ctca.c hercules-20070717/w32ctca.c >--- hercules-3.05/w32ctca.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32ctca.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // w32ctca.c CTCI-W32 (Channel to Channel link to Win32 TCP/IP stack) > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2002-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32ctca.c,v 1.25 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32ctca.c,v 1.26 2007/11/30 14:54:33 jmaynard Exp $ > // > // $Log: w32ctca.c,v $ >+// Revision 1.26 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.25 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/w32ctca.h hercules-20070717/w32ctca.h >--- hercules-3.05/w32ctca.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32ctca.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,15 @@ > // w32ctca.h CTCI-W32 (Channel to Channel link to Win32 TCP/IP stack) > //////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2002-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32ctca.h,v 1.15 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32ctca.h,v 1.16 2007/11/30 14:54:33 jmaynard Exp $ > // > // $Log: w32ctca.h,v $ >+// Revision 1.16 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.15 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/w32mtio.h hercules-20070717/w32mtio.h >--- hercules-3.05/w32mtio.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32mtio.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > // W32MTIO.H -- Win32 'mtio.h' (Magnetic Tape structures) > // > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under >-// the Q Public License (http://www.conmicro.cx/hercules/herclic.html) >+// the Q Public License (http://www.hercules-390.org/herclic.html) > // as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > // >@@ -15,9 +15,19 @@ > // > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32mtio.h,v 1.5 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32mtio.h,v 1.7 2008/03/25 11:41:31 fish Exp $ > // > // $Log: w32mtio.h,v $ >+// Revision 1.7 2008/03/25 11:41:31 fish >+// SCSI TAPE MODS part 1: groundwork: non-functional changes: >+// rename some functions, comments, general restructuring, etc. >+// New source modules awstape.c, omatape.c, hettape.c and >+// tapeccws.c added, but not yet used (all will be used in a future >+// commit though when tapedev.c code is eventually split) >+// >+// Revision 1.6 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.5 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -65,6 +75,10 @@ struct mtop { > #define MTRAS2 15 /* run self test 2 (destructive) */ > #define MTRAS3 16 /* reserved for self test 3 */ > >+#define MTEOTWARN 17 /* Fish: Warning Zone size (0 bytes == disable) */ >+ /* Some BSD's only support an "MTEWARN" boolean */ >+#define MTEWARN MTEOTWARN /* (for transparency/portability) */ >+ > #define MTSETBLK 20 /* set block length (SCSI) */ > #define MTSETDENSITY 21 /* set tape density (SCSI) */ > #define MTSEEK 22 /* seek to block (Tandberg, etc.) */ >diff -Naupr hercules-3.05/w32stape.c hercules-20070717/w32stape.c >--- hercules-3.05/w32stape.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32stape.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > // W32STAPE.C -- Hercules Win32 SCSI Tape handling module > // > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under >-// the Q Public License (http://www.conmicro.cx/hercules/herclic.html) >+// the Q Public License (http://www.hercules-390.org/herclic.html) > // as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > // >@@ -14,9 +14,24 @@ > // > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32stape.c,v 1.13 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32stape.c,v 1.18 2008/03/31 06:36:49 fish Exp $ > // > // $Log: w32stape.c,v $ >+// Revision 1.18 2008/03/31 06:36:49 fish >+// (untab) >+// >+// Revision 1.17 2008/03/30 02:51:34 fish >+// Fix SCSI tape EOV (end of volume) processing >+// >+// Revision 1.16 2007/11/30 14:54:33 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// >+// Revision 1.15 2007/07/24 22:36:33 fish >+// Fix tape Synchronize CCW (x'43') to do actual commit >+// >+// Revision 1.14 2007/07/24 21:57:29 fish >+// Fix Win32 SCSI tape "Locate" and "ReadBlockId" SNAFU >+// > // Revision 1.13 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -413,6 +428,102 @@ int w32_internal_rc ( U32* pStat ) > > case ERROR_BEGINNING_OF_MEDIA: *pStat |= GMT_BOT (0xFFFFFFFF); errno = EIO; break; > case ERROR_END_OF_MEDIA: *pStat |= GMT_EOT (0xFFFFFFFF); errno = ENOSPC; break; >+ >+ // "ERROR_END_OF_MEDIA" >+ // >+ // Msg: "The physical end of the tape has been reached." >+ // >+ // The EOT warning reflector has been reached or passed (i.e. you're >+ // now/still in the "EOT Warning Zone" area). Writing additional data >+ // and/or tapemarks may still be possible depending on the size of the >+ // EOT Warning Zone (as set by a SetTapeParameters call with a non-zero >+ // EOTWarningZoneSize value (if supported; see further below)) and >+ // how much data you've already written to the EOT Warning Zone area >+ // (i.e. once you're in the warning area, this "error" occurs after >+ // EACH and EVERY I/O [in the warning zone area] until the ABSOLUTE >+ // physical end-of-tape (ERROR_EOM_OVERFLOW) is reached; see below). >+ // >+ // >+ // *********************** >+ // ** IMPORTANT NOTE! ** >+ // *********************** >+ // >+ // This is NOT actually an "error"!!! >+ // >+ // >+ // When this "error" occurs, your "ReadFile" and/or "WriteFile" call >+ // returns 'FALSE' even though ALL of your requested data was actually >+ // written successfully!! This can be verified by checking to ensure >+ // the returned "number of bytes written" actually matches the amount >+ // you asked to be written. If they're the same (and they ALWAYS will >+ // be for this specific "error" code), then it means this "error" is >+ // NOT actually an error at all, but rather just a WARNING instead!! >+ // (Had it been an actual i/o error, the error code would have been >+ // some other DIFFERENT error code value instead!!) >+ // >+ // >+ // *********************** >+ // ** ALSO IMPORTANT! ** >+ // *********************** >+ // See also: >+ // >+ // http://fixunix.com/storage/205622-bug-dlttape-sys-no-eot-warning.html >+ // >+ // for ADDITIONAL IMPORTANT INFORMATION regarding always having to >+ // specifically request that this "error" code be returned to you: >+ // >+ // Even when a drive reports it does not support the setting of the >+ // the 'EOTWarningZoneSize' value (i.e. the FeaturesLow field of the >+ // GetTapeParameters call returns '0' for TAPE_DRIVE_SET_EOT_WZ_SIZE >+ // field), it may still be possible for "ERROR_END_OF_MEDIA" warnings >+ // to be generated anyway by simply calling SetTapeParameters with a >+ // non-zero 'EOTWarningZoneSize' value anyway. >+ // >+ // The reason for this is because some drives may not allow CHANGING >+ // the value (thus the reason for it reporting that setting the value >+ // is not supported), but may nevertheless still support the ENABLING >+ // of their own hard-coded internal value. That is to say, while the >+ // size of the warning zone may not be modifiable (as it may be hard- >+ // coded and thus unchangeable), the drive may still have the ability >+ // to REPORT reaching the EOT Warning zone IF SPECIFICALLY REQUESTED >+ // TO DO SO! (which is presumably what requesting a non-zero Warning >+ // Zone size would end up doing: i.e. even though such calls APPEAR >+ // to fail, they actually DO succeed in accomplishing SOMETHING, just >+ // not what you originally/specifically requested). >+ // >+ // Thus calling SetTapeParameters with a non-zero 'EOTWarningZoneSize' >+ // value might very well succeed anyway even though GetTapeParameters >+ // reports that doing so is not supported, and by so doing, may cause >+ // the drive to begin reporting of "ERROR_END_OF_MEDIA" (whereas not >+ // attempting to do so would end up leaving the drive in its default >+ // non-reporting mode. That is to say, you should ALWAYS try setting >+ // a non-zero 'EOTWarningZoneSize' value, ignoring any "unsupported" >+ // error code that may be returned from such a call.) >+ >+ case ERROR_EOM_OVERFLOW: *pStat |= GMT_EOT (0xFFFFFFFF); errno = EIO; break; >+ >+ // "ERROR_EOM_OVERFLOW" >+ // >+ // Msg: "Physical end of tape encountered." >+ // >+ // This error code means that the actual physical end-of-media has been >+ // reached, and no more data can be written to the tape. This includes >+ // tapemarks as well. >+ // >+ // *********************** >+ // ** IMPORTANT NOTE! ** >+ // *********************** >+ // >+ // This is a HARD (UNRECOVERABLE) error!! >+ // >+ // To be programmatically informed of when you are coming close to the >+ // physical end-of-the-tape (such that you could be assured room still >+ // remained to write logical end-of-volume labels for example), simply >+ // call SetTapeParameters with a non-zero 'EOTWarningZoneSize' value >+ // and treat any "ERROR_END_OF_MEDIA" "errors" received when writing >+ // as warnings instead. (See prior discussion of "ERROR_END_OF_MEDIA" >+ // return code further above) >+ > case ERROR_NO_DATA_DETECTED: *pStat |= GMT_EOD (0xFFFFFFFF); errno = EIO; break; > case ERROR_FILEMARK_DETECTED: *pStat |= GMT_EOF (0xFFFFFFFF); errno = EIO; break; > case ERROR_SETMARK_DETECTED: *pStat |= GMT_SM (0xFFFFFFFF); errno = EIO; break; >@@ -428,7 +539,8 @@ int w32_internal_rc ( U32* pStat ) > > int w32_internal_mtop ( HANDLE hFile, U32* pStat, struct mtop* mtop, ifd_t ifd ); > int w32_internal_mtget ( HANDLE hFile, U32* pStat, struct mtget* mtget, ifd_t ifd ); >-int w32_internal_mtpos ( HANDLE hFile, U32* pStat, DWORD* pdwPos, ifd_t ifd ); // "GetTapePosition()" >+int w32_internal_mtpos ( HANDLE hFile, U32* pStat, DWORD* pdwLogPos, >+ DWORD* pdwAbsPos, ifd_t ifd ); > > //////////////////////////////////////////////////////////////////////////////////// > // Close tape device... >@@ -482,6 +594,7 @@ ssize_t w32_read_tape ( ufd_t ufd, void > { > BOOL bSuccess; > DWORD dwBytesRead; >+ DWORD dwLastError; > > ifd_t ifd = W32STAPE_UFD2IFD( ufd ); > U32* pStat = NULL; >@@ -516,24 +629,35 @@ ssize_t w32_read_tape ( ufd_t ufd, void > > do > { >- bSuccess = ReadFile( hFile, buf, nbyte, &dwBytesRead, NULL ); >- errno = GetLastError(); >- errno = w32_internal_rc ( pStat ); >+ dwBytesRead = 0; >+ bSuccess = ReadFile( hFile, buf, nbyte, &dwBytesRead, NULL ); >+ errno = (dwLastError = GetLastError()); >+ errno = w32_internal_rc ( pStat ); > } > while ( !bSuccess && EINTR == errno ); > >- if (bSuccess) >+ // Success? (see: "ERROR_END_OF_MEDIA" in function 'w32_internal_rc') >+ >+ if (bSuccess || ERROR_END_OF_MEDIA == dwLastError) >+ { >+ ASSERT( bSuccess || ENOSPC == errno ); > return ( (ssize_t) dwBytesRead ); >+ } > >- // The i/o failed. Check if >- // just a tapemark was read... >+ ASSERT( !bSuccess && ERROR_END_OF_MEDIA != dwLastError && ENOSPC != errno ); > >- if ( EIO != errno || !GMT_EOF( *pStat ) ) >- return -1; >+ // The i/o "failed". Check to see if it was just a tapemark... > >- // EIO == errno && GMT_EOF( *pStat ) --> i.e. tapemark... >+ if ( EIO == errno && GMT_EOF( *pStat ) ) >+ { >+ ASSERT( ERROR_FILEMARK_DETECTED == dwLastError ); >+ return 0; // (tapemark) >+ } >+ >+ // EIO != errno || !GMT_EOF( *pStat ) --> bona fide i/o error... > >- return 0; // (tapemark) >+ ASSERT( ERROR_FILEMARK_DETECTED != dwLastError ); >+ return -1; > } > > //////////////////////////////////////////////////////////////////////////////////// >@@ -544,6 +668,7 @@ ssize_t w32_write_tape ( ufd_t ufd, con > { > BOOL bSuccess; > DWORD dwBytesWritten; >+ DWORD dwLastError; > > ifd_t ifd = W32STAPE_UFD2IFD( ufd ); > U32* pStat = NULL; >@@ -578,16 +703,26 @@ ssize_t w32_write_tape ( ufd_t ufd, con > > do > { >- bSuccess = WriteFile( hFile, buf, nbyte, &dwBytesWritten, NULL ); >- errno = GetLastError(); >- errno = w32_internal_rc ( pStat ); >+ dwBytesWritten = 0; >+ bSuccess = WriteFile( hFile, buf, nbyte, &dwBytesWritten, NULL ); >+ errno = (dwLastError = GetLastError()); >+ errno = w32_internal_rc ( pStat ); > } > while ( !bSuccess && EINTR == errno ); > >- if (!bSuccess) >- return -1; >+ // Success? (see: "ERROR_END_OF_MEDIA" in function 'w32_internal_rc') > >- return ( (ssize_t) dwBytesWritten ); >+ if (bSuccess || ERROR_END_OF_MEDIA == dwLastError) >+ { >+ ASSERT( bSuccess || ENOSPC == errno ); >+ ASSERT( ((size_t)dwBytesWritten) == nbyte ); // (MUST be true!!) >+ return ( (ssize_t) dwBytesWritten ); >+ } >+ >+ // I/O error... >+ >+ ASSERT( !bSuccess && ERROR_END_OF_MEDIA != dwLastError && ENOSPC != errno ); >+ return -1; > } > > //////////////////////////////////////////////////////////////////////////////////// >@@ -651,7 +786,7 @@ int w32_ioctl_tape ( ufd_t ufd, int requ > { > struct mtpos* mtpos = ptr; > memset( mtpos, 0, sizeof(*mtpos) ); >- rc = w32_internal_mtpos( hFile, pStat, &mtpos->mt_blkno, ifd ); >+ rc = w32_internal_mtpos( hFile, pStat, &mtpos->mt_blkno, NULL, ifd ); > } > break; > >@@ -724,7 +859,7 @@ int w32_internal_mtop ( HANDLE hFile, U3 > { > do > { >- errno = SetTapePosition( hFile, TAPE_ABSOLUTE_BLOCK, 0, mtop->mt_count, 0, FALSE ); >+ errno = SetTapePosition( hFile, TAPE_LOGICAL_BLOCK, 0, mtop->mt_count, 0, FALSE ); > errno = w32_internal_rc ( pStat ); > } > while ( EINTR == errno ); >@@ -819,9 +954,28 @@ int w32_internal_mtop ( HANDLE hFile, U3 > } > break; > >+ case MTEOTWARN: // (set EOT Warning Zone size in bytes) >+ { >+ TAPE_SET_DRIVE_PARAMETERS set_drive_parms; >+ >+ set_drive_parms.ECC = g_drive_parms[ifd].ECC; >+ set_drive_parms.Compression = g_drive_parms[ifd].Compression; >+ set_drive_parms.DataPadding = g_drive_parms[ifd].DataPadding; >+ set_drive_parms.ReportSetmarks = g_drive_parms[ifd].ReportSetmarks; >+ set_drive_parms.EOTWarningZoneSize = mtop->mt_count; >+ >+ do >+ { >+ errno = SetTapeParameters( hFile, SET_TAPE_DRIVE_INFORMATION, &set_drive_parms ); >+ errno = w32_internal_rc ( pStat ); >+ } >+ while ( EINTR == errno ); >+ } >+ break; >+ > case MTWEOF: // (write TAPEMARK) > { >- if ( mtop->mt_count < 1 ) >+ if ( mtop->mt_count < 0 ) > { > errno = EINVAL; > rc = -1; >@@ -870,27 +1024,12 @@ int w32_internal_mtop ( HANDLE hFile, U3 > } > else > { >- DWORD dwEraseType; // (type of erase to perform) >- BOOL bImmediate; // (wait for complete option) >- >- // PROGRAMMING NOTE: note that we request the "return immediately >- // after starting the i/o" (i.e. the "don't wait for the i/o to >- // finish first before returning back to me") variety of i/o for >- // the "data security erase" (erase rest of tape) type request. >- // >- // This matches the usual behavior of mainframe tape i/o wherein >- // the erase operation begins as soon as the i/o request is made >- // to the drive and the channel/device completes the operation >- // asynchronously and presents its final device status later at >- // the time when the operation eventually/finally completes... >- >- // ** 1 ** ** 0 ** >- dwEraseType = mtop->mt_count ? TAPE_ERASE_LONG : TAPE_ERASE_SHORT; >- bImmediate = mtop->mt_count ? TRUE : FALSE; >+ DWORD dwEraseType = >+ mtop->mt_count ? TAPE_ERASE_LONG : TAPE_ERASE_SHORT; > > do > { >- errno = EraseTape( hFile, dwEraseType, bImmediate ); >+ errno = EraseTape( hFile, dwEraseType, FALSE ); > errno = w32_internal_rc ( pStat ); > } > while ( EINTR == errno ); >@@ -913,7 +1052,7 @@ int w32_internal_mtop ( HANDLE hFile, U3 > break; > } > >- return (rc = errno ? -1 : 0); >+ return (rc = (0 == errno || ENOSPC == errno) ? 0 : /* errno != 0 && errno != ENOSPC */ -1); > } > > //////////////////////////////////////////////////////////////////////////////////// >@@ -923,7 +1062,7 @@ static > int w32_internal_mtget ( HANDLE hFile, U32* pStat, struct mtget* mtget, ifd_t ifd ) > { > TAPE_GET_MEDIA_PARAMETERS media_parms; >- DWORD dwRetCode, dwSize, dwPosition; >+ DWORD dwRetCode, dwSize, dwLogicalPosition; > > ASSERT( pStat && mtget ); > >@@ -997,15 +1136,15 @@ int w32_internal_mtget ( HANDLE hFile, U > > // Lastly, attempt to determine if we are at BOT (i.e. load-point)... > >- if ( 0 != ( errno = w32_internal_mtpos( hFile, pStat, &dwPosition, ifd ) ) ) >+ if ( 0 != ( errno = w32_internal_mtpos( hFile, pStat, &dwLogicalPosition, NULL, ifd ) ) ) > { > mtget->mt_gstat = *pStat; > return -1; > } > >- mtget->mt_blkno = dwPosition; >+ mtget->mt_blkno = dwLogicalPosition; > >- if ( ( dwPosition & g_BOTmsk[ ifd ] ) == g_BOTbot[ ifd ] ) >+ if ( ( dwLogicalPosition & g_BOTmsk[ ifd ] ) == g_BOTbot[ ifd ] ) > *pStat |= GMT_BOT (0xFFFFFFFF); > else > *pStat &= ~GMT_BOT (0xFFFFFFFF); >@@ -1018,11 +1157,12 @@ int w32_internal_mtget ( HANDLE hFile, U > // Private internal helper function... return 0 == success, -1 == failure > > static >-int w32_internal_mtpos ( HANDLE hFile, U32* pStat, DWORD* pdwPos, ifd_t ifd ) >+int w32_internal_mtpos ( HANDLE hFile, U32* pStat, DWORD* pdwLogPos, >+ DWORD* pdwAbsPos, ifd_t ifd ) > { > DWORD dwDummyPartition, dwDummyPositionHigh; > >- ASSERT( pStat && pdwPos ); // (sanity check) >+ ASSERT( pStat && pdwLogPos ); // (sanity check) > > // PROGRAMMING NOTE: the SDK docs state that for the 'lpdwOffsetHigh' > // parameter (i.e. dwDummyPositionHigh, the 5th paramater): >@@ -1042,9 +1182,9 @@ int w32_internal_mtpos ( HANDLE hFile, > errno = GetTapePosition > ( > hFile, >- TAPE_ABSOLUTE_POSITION, >+ TAPE_LOGICAL_POSITION, > &dwDummyPartition, >- pdwPos, >+ pdwLogPos, > &dwDummyPositionHigh > ); > errno = w32_internal_rc ( &dummy_stat ); >@@ -1054,26 +1194,41 @@ int w32_internal_mtpos ( HANDLE hFile, > if (errno) > return -1; > >- // PROGRAMMING NOTE: the absolute tape position that Windows appears to >- // return in response to a GetTapePosition call appears to correspond to >- // the SCSI "READ POSITION" command's "first block location" value: >- // >- // Small Computer System Interface-2 (SCSI-2) >- // >- // ANSI INCITS 131-1994 (R1999) >- // (formerly ANSI X3.131-1994 (R1999)) >- // >- // 10.2.6 READ POSITION command >- // >- // page 234: READ POSITION data >- // >- // "The first block location field indicates the block address >- // associated with the current logical position. The value shall >- // indicate the block address of the next data block to be >- // transferred between the initiator and the target if a READ >- // or WRITE command is issued." >+ if (pdwAbsPos) // (may be NULL if they're not interested in it) >+ { >+ do >+ { >+ U32 dummy_stat = 0; >+ errno = GetTapePosition >+ ( >+ hFile, >+ TAPE_ABSOLUTE_POSITION, >+ &dwDummyPartition, >+ pdwAbsPos, >+ &dwDummyPositionHigh >+ ); >+ errno = w32_internal_rc ( &dummy_stat ); >+ } >+ while ( EINTR == errno ); >+ >+ if (errno) >+ return -1; >+ } >+ >+ // PROGRAMMING NOTE: the Windows 'GetTapePosition' API returns either >+ // a LOGICAL position value or an ABSOLUTE position value. Based on >+ // trial and error it was determined the LOGICAL position corresponds >+ // to the SCSI "READ POSITION" command's "first block location" value, >+ // and the ABSOLUTE tape position appears to correspond to the SCSI >+ // "last block location". >+ >+ // Since what we want is what IBM calls the "Channel block ID" (which >+ // itself appears to correspond to what the SCSI documentation refers >+ // to as the "First block location"), then what we want here is what >+ // Windows refers to as the LOGICAL position, not the ABSOLUTE (i.e. >+ // device-relative) position I originally thought we needed/wanted. > >- if ( ( *pdwPos & g_BOTmsk[ ifd ] ) == g_BOTbot[ ifd ] ) >+ if ( ( *pdwLogPos & g_BOTmsk[ ifd ] ) == g_BOTbot[ ifd ] ) > *pStat |= GMT_BOT (0xFFFFFFFF); > else > *pStat &= ~GMT_BOT (0xFFFFFFFF); >diff -Naupr hercules-3.05/w32stape.h hercules-20070717/w32stape.h >--- hercules-3.05/w32stape.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32stape.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > // W32STAPE.H -- Hercules Win32 SCSI Tape handling module > // > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under >-// the Q Public License (http://www.conmicro.cx/hercules/herclic.html) >+// the Q Public License (http://www.hercules-390.org/herclic.html) > // as modifications to Hercules. > //////////////////////////////////////////////////////////////////////////////////// > // >@@ -11,9 +11,12 @@ > // > //////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32stape.h,v 1.7 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32stape.h,v 1.8 2007/11/30 14:54:34 jmaynard Exp $ > // > // $Log: w32stape.h,v $ >+// Revision 1.8 2007/11/30 14:54:34 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// > // Revision 1.7 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >diff -Naupr hercules-3.05/w32util.c hercules-20070717/w32util.c >--- hercules-3.05/w32util.c 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32util.c 2008-09-03 13:07:48.000000000 +0200 >@@ -2,7 +2,7 @@ > // w32util.c Windows porting functions > ////////////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > ////////////////////////////////////////////////////////////////////////////////////////// > // > // IMPORTANT PROGRAMMING NOTE! >@@ -12,9 +12,15 @@ > // > ////////////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32util.c,v 1.29 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32util.c,v 1.31 2007/11/30 14:54:34 jmaynard Exp $ > // > // $Log: w32util.c,v $ >+// Revision 1.31 2007/11/30 14:54:34 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// >+// Revision 1.30 2007/08/04 19:04:33 fish >+// gethostid >+// > // Revision 1.29 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -1580,6 +1586,18 @@ DLL_EXPORT int socket_deinit ( void ) > } > > ////////////////////////////////////////////////////////////////////////////////////////// >+// Retrieve unique host id >+ >+DLL_EXPORT long gethostid( void ) >+{ >+ char szHostName[ WSADESCRIPTION_LEN ]; >+ struct hostent* pHostent = NULL; >+ return (gethostname( szHostName, sizeof(szHostName) ) == 0 >+ && (pHostent = gethostbyname( szHostName )) != NULL) ? >+ (long)pHostent->h_addr : 0; >+} >+ >+////////////////////////////////////////////////////////////////////////////////////////// > > DLL_EXPORT int w32_socket( int af, int type, int protocol ) > { >diff -Naupr hercules-3.05/w32util.h hercules-20070717/w32util.h >--- hercules-3.05/w32util.h 2007-06-23 14:58:07.000000000 +0200 >+++ hercules-20070717/w32util.h 2008-09-03 13:07:48.000000000 +0200 >@@ -2,12 +2,18 @@ > // w32util.h Windows porting functions > ////////////////////////////////////////////////////////////////////////////////////////// > // (c) Copyright "Fish" (David B. Trout), 2005-2007. Released under the Q Public License >-// (http://www.conmicro.cx/hercules/herclic.html) as modifications to Hercules. >+// (http://www.hercules-390.org/herclic.html) as modifications to Hercules. > ////////////////////////////////////////////////////////////////////////////////////////// > >-// $Id: w32util.h,v 1.10 2007/06/23 00:04:19 ivan Exp $ >+// $Id: w32util.h,v 1.12 2007/11/30 14:54:34 jmaynard Exp $ > // > // $Log: w32util.h,v $ >+// Revision 1.12 2007/11/30 14:54:34 jmaynard >+// Changed conmicro.cx to hercules-390.org or conmicro.com, as needed. >+// >+// Revision 1.11 2007/08/04 19:04:34 fish >+// gethostid >+// > // Revision 1.10 2007/06/23 00:04:19 ivan > // Update copyright notices to include current year (2007) > // >@@ -175,6 +181,9 @@ W32_DLL_IMPORT BYTE *hostpath( BYTE *out > // (only returns access-mode flags and not any others) > W32_DLL_IMPORT int get_file_accmode_flags( int fd ); > >+// Retrieve unique host id >+W32_DLL_IMPORT long gethostid( void ); >+ > // Initialize/Deinitialize sockets package... > W32_DLL_IMPORT int socket_init ( void ); > W32_DLL_IMPORT int socket_deinit ( void );
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 461044
:
315661
| 315772