[netcdf] 03/09: Imported Upstream version 4.4.0~rc2

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat Jul 25 00:22:10 UTC 2015


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

sebastic pushed a commit to branch master
in repository netcdf.

commit 2167e1ab81ed478087ce14ef4bc3ead8d537d829
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat Jul 25 01:50:56 2015 +0200

    Imported Upstream version 4.4.0~rc2
---
 CMakeLists.txt                   |  21 +--
 Doxyfile.developer               |   6 +-
 README.md                        |  28 ++--
 RELEASE_NOTES.md                 |  66 ++++----
 cf                               | 203 +++++++++++++++++++++++
 cf.cmake                         |  14 ++
 configure                        |  38 ++---
 configure.ac                     |  14 +-
 docs/FAQ.md                      |  36 ++---
 docs/footer.html                 |  20 +--
 docs/old/netcdf.texi             |   2 +-
 docs/software.md                 |  17 +-
 docs/windows-binaries.md         |  26 +--
 libdap2/env                      |   2 +-
 libdap2/nccommon.h               |   1 -
 libsrc/CMakeLists.txt            |   6 +-
 libsrc/attr.c                    | 339 ---------------------------------------
 libsrc5/nc5dispatch.c            |   8 -
 ljna                             |  33 ++++
 mclean                           |  10 ++
 nc-config.in                     |   2 +-
 ncdap_test/test_vara.c           |   2 +-
 ncdap_test/testdata3/Makefile.am |   7 +-
 ncdap_test/testdata3/Makefile.in |   6 +-
 ncdap_test/testdata3/synth9.dds  |   2 +-
 ncdap_test/testdata3/synth9.dods |   2 +-
 ncdap_test/tst_ncdap.sh          |   8 +-
 ncdap_test/tst_ncdap_shared.sh   |   6 +-
 ncgen/generate.c                 |   9 +-
 ncgen/ncgen.y                    |  91 ++++++-----
 ncgen/ncgentab.c                 |  83 +++++-----
 oc2/occurlflags.c                |  34 ++--
 oc2/occurlfunctions.c            |   2 +-
 wjna                             |  43 +++++
 34 files changed, 595 insertions(+), 592 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 02cc3a0..fa5bebc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,7 @@ set(PACKAGE "netCDF" CACHE STRING "")
 SET(NC_VERSION_MAJOR 4)
 SET(NC_VERSION_MINOR 4)
 SET(NC_VERSION_PATCH 0)
-SET(NC_VERSION_NOTE "-rc1")
+SET(NC_VERSION_NOTE "-rc2")
 SET(netCDF_VERSION ${NC_VERSION_MAJOR}.${NC_VERSION_MINOR}.${NC_VERSION_PATCH}${NC_VERSION_NOTE})
 SET(VERSION ${netCDF_VERSION})
 SET(NC_VERSION ${netCDF_VERSION})
@@ -678,7 +678,7 @@ ELSE()
 ENDIF()
 
 # Enable some developer-only tests
-OPTION(ENABLE_EXTRA_TESTS "Enable Extra tests. Some may not work because of known issues. Developers only." OFF)
+OPTION(ENABLE_EXTRA_TESTS "Enable Extra tests. Some may not work because of known issues. Developers only." ON)
 IF(ENABLE_EXTRA_TESTS)
   SET(EXTRA_TESTS ON)
 ENDIF()
@@ -1055,22 +1055,25 @@ ENDMACRO()
 
 # A basic script used to convert m4 files
 FIND_PROGRAM(NC_M4 NAMES m4)
-IF(NOT MSVC)
-  IF(NOT NC_M4)
-    MESSAGE(FATAL "Cannot find 'm4' utility. Install m4 and try again.")
-  ENDIF(NOT NC_M4)
-ENDIF(NOT MSVC)
+IF(NC_M4)
+    SET(HAVE_M4 TRUE)
+ENDIF()
+#IF(NOT MSVC)
+  #IF(NOT NC_M4)
+  #  MESSAGE(FATAL "Cannot find 'm4' utility. Install m4 and try again.")
+  # ENDIF(NOT NC_M4)
+#ENDIF(NOT MSVC)
 
 MACRO(GEN_m4 filename)
 #  IF(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c)
-IF(NC_M4)
+IF(HAVE_M4)
   ADD_CUSTOM_COMMAND(
     OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c
     COMMAND ${NC_M4}
     ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.m4 > ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c
     VERBATIM
     )
-ENDIF(NC_M4)
+ENDIF(HAVE_M4)
 ENDMACRO(GEN_m4)
 
 # Binary tests, but ones which depend on value of 'TEMP_LARGE' being defined.
diff --git a/Doxyfile.developer b/Doxyfile.developer
index 47dcecb..c403316 100755
--- a/Doxyfile.developer
+++ b/Doxyfile.developer
@@ -38,7 +38,7 @@ PROJECT_NAME           = netCDF-C
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 4.4.0-rc1
+PROJECT_NUMBER         = 4.4.0-rc2
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
@@ -2264,7 +2264,7 @@ DIRECTORY_GRAPH        = YES
 # The default value is: png.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-DOT_IMAGE_FORMAT       = svg
+DOT_IMAGE_FORMAT       = png
 
 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
 # enable generation of interactive SVG images that allow zooming and panning.
@@ -2276,7 +2276,7 @@ DOT_IMAGE_FORMAT       = svg
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-INTERACTIVE_SVG        = YES
+INTERACTIVE_SVG        = NO
 
 # The DOT_PATH tag can be used to specify the path where the dot tool can be
 # found. If left blank, it is assumed the dot tool can be found in the path.
diff --git a/README.md b/README.md
index 48f713c..273287b 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,10 @@
-Unidata NetCDF
-==============
+# Unidata NetCDF
 
 [![Build Status](https://travis-ci.org/Unidata/netcdf-c.svg?branch=master)](https://travis-ci.org/Unidata/netcdf-c)
+[![Coverity Scan Build Status](https://scan.coverity.com/projects/157/badge.svg)](https://scan.coverity.com/projects/157)
 
-<a href="https://scan.coverity.com/projects/157">
-  <img alt="Coverity Scan Build Status"
-       src="https://scan.coverity.com/projects/157/badge.svg"/>
-</a>
-
-The Unidata network Common Data Form (netCDF) is an interface for
+### About
+The Unidata network Common Data Form (**netCDF**) is an interface for
 scientific data access and a freely-distributed software library that
 provides an implementation of the interface.  The netCDF library also
 defines a machine-independent format for representing scientific data.
@@ -19,6 +15,7 @@ distributions available from Unidata provide Java, Fortran, Python,
 and C++ interfaces.  They have been tested on various common
 platforms.
 
+#### Properties
 NetCDF files are self-describing, network-transparent, directly
 accessible, and extendible.  `Self-describing` means that a netCDF file
 includes information about the data it contains.  `Network-transparent`
@@ -29,6 +26,7 @@ large dataset may be accessed efficiently, without first reading through
 all the preceding data.  `Extendible` means that data can be appended to
 a netCDF dataset without copying it or redefining its structure.
 
+#### Use
 NetCDF is useful for supporting access to diverse kinds of scientific
 data in heterogeneous networking environments and for writing
 application software that does not depend on application-specific
@@ -38,23 +36,27 @@ netCDF form, see
 
 * http://www.unidata.ucar.edu/netcdf/software.html
 
+##### More informations
 For more information about netCDF, see the netCDF Web page at
 
 * http://www.unidata.ucar.edu/netcdf/
 
+### Latest releases
 You can obtain a copy of the latest released version of netCDF software
 from
 
-* http://github.com/Unidata/netcdf-c
-* http://github.com/Unidata/netcdf-fortran
-* http://github.com/Unidata/netcdf-cxx4
-* http://github.com/Unidata/netcdf4-python
+* C - http://github.com/Unidata/netcdf-c
+* Fortan - http://github.com/Unidata/netcdf-fortran
+* Libraries and utilities in C - http://github.com/Unidata/netcdf-cxx4
+* Python - http://github.com/Unidata/netcdf4-python
 
+### Copyright
 Copyright and licensing information can be found here, as well as in
 the COPYRIGHT file accompanying the software
 
 * http://www.unidata.ucar.edu/software/netcdf/copyright.html
 
+### Install
 To install this package, please see the file INSTALL in the
 distribution, or the (usually more up-to-date) document:
 
@@ -66,6 +68,7 @@ pages at
 * http://www.unidata.ucar.edu/netcdf/docs/netcdf-man-3.html
 * http://www.unidata.ucar.edu/netcdf/docs/netcdf-man-3f.html
 
+### User's Guides
 User's Guides are also available in several forms from the same
 location.
 
@@ -75,6 +78,7 @@ enhancements.  For information about how to subscribe, see the URL
 
 * http://www.unidata.ucar.edu/netcdf/mailing-lists.html
 
+### Feedback
 We appreciate feedback from users of this package.  Please send
 comments, suggestions, and bug reports to
 <support-netcdf at unidata.ucar.edu>.  Please identify the version of the
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index f01d2cd..1971c28 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -7,6 +7,10 @@ This file contains a high-level description of this package's evolution. Release
 
 ## 4.4.0 Released TBD
 
+### 4.4.0-RC2 Released 2015-07-09
+
+* Minor bug fixes and cleanup of issues reported with first release candidate.
+
 ### 4.4.0-RC1 Released 2015-06-09
 
 * The pre-built Windows binaries are now built using `Visual Studio 2012`, instead of `Visual Studio 2010`.  Source-code compilation remains function with `Visual Studio 2010`, this is just a change in the pre-built binaries.
@@ -331,7 +335,7 @@ This is a bug-fix-only release for version 4.3.1.
 
 * Integrated a fix by Quincey Koziol which addressed a variation of [NCF-250], *Fix issue of netCDF-4 parallel independent access with unlimited dimension hanging*.
 
-[NCF-250]:https://www.unidata.ucar.edu/jira/browse/NCF-250
+[NCF-250]:https://bugtracking.unidata.ucar.edu/browse/NCF-250
 
 * Integrated change contributed by Orion Poplawski which integrated GNUInstallDirs into the netCDF-C CMake system; this will permit systems that install into lib64 (such as Fedora) to `make install` without problem.
 
@@ -353,7 +357,7 @@ This is a bug-fix-only release for version 4.3.1.
 
 * Added a `NC_HAVE_RENAME_GRP` macro to netcdf.h, [as per a request by Charlie Zender][cz1]. This will allow software compiling against netcdf to easily query whether or not nc\_rename\_grp() is available.
 
-[cz1]: https://www.unidata.ucar.edu/esupport/staff/index.php?_m=tickets&_a=viewticket&ticketid=22442
+[cz1]: https://bugtracking.unidata.ucar.edu/browse/NCF-204
 
 * Added Greg Sjaardema's contributed optimization for the nc4\_find\_dim\_len function in libsrc4/nc4internal.c. The patch eliminates several malloc/free calls that exist in the original coding.
 
@@ -361,7 +365,7 @@ This is a bug-fix-only release for version 4.3.1.
 	* autotools-based builds: --enable-dynamic-loading
 	* cmake-based builds: -DENABLE\_DYNAMIC\_LOADING=ON
 
-[NCF-258]: https://www.unidata.ucar.edu/jira/browse/NCF-258
+[NCF-258]: https://bugtracking.unidata.ucar.edu/browse/NCF-258
 
 * Fix issue of netCDF-4 parallel independent access with unlimited dimension hanging.  Extending the size of an unlimited dimension in HDF5 must be a collective operation, so now an error is returned if trying to extend in independent access mode. [NCF-250]
 
@@ -382,138 +386,138 @@ This is a bug-fix-only release for version 4.3.1.
 * fsync: Changed default in autotools config file; fsync must now be
 explicitely enabled instead of explicitely disabled. [NCF-239]
 
-[NCF-239]: https://www.unidata.ucar.edu/jira/browse/NCF-239
+[NCF-239]: https://bugtracking.unidata.ucar.edu/browse/NCF-239
 
 * Fixed netCDF-4 bug where odometer code for libdap2 mishandled stride \> 1. Bug reported by Ansley Manke. [NCF-249]
 
-[NCF-249]: https://www.unidata.ucar.edu/jira/browse/NCF-249
+[NCF-249]: https://bugtracking.unidata.ucar.edu/browse/NCF-249
 
 * Fixed netCDF-4 bug so netCDF just ignores objects of HDF5 reference type in
 the file, instead of rejecting the file. [NCF-29]
 
-[NCF-29]: https://www.unidata.ucar.edu/jira/browse/NCF-29
+[NCF-29]: https://bugtracking.unidata.ucar.edu/browse/NCF-29
 
 * Fixed netCDF-4 bug with particular order of creation of dimensions,
 coordinate variables, and subgroups resulting in two dimensions with the
 same dimension ID. [NCF-244]
 
-[NCF-244]: https://www.unidata.ucar.edu/jira/browse/NCF-244
+[NCF-244]: https://bugtracking.unidata.ucar.edu/browse/NCF-244
 
 * Fixed netCDF-4 bug with a multidimensional coordinate variable in a
 subgroup getting the wrong dimension IDs for its dimensions. [NCF-247]
 
-[NCF-247]: https://www.unidata.ucar.edu/jira/browse/NCF-247
+[NCF-247]: https://bugtracking.unidata.ucar.edu/browse/NCF-247
 
 * Fixed bug with incorrect fixed-size variable offsets in header getting
 written when schema changed for files created by parallel-netcdf. Thanks
 to Wei-keng Liao for developing and contributing the fix. [NCF-234]
 
-[NCF-234]: https://www.unidata.ucar.edu/jira/browse/NCF-234
+[NCF-234]: https://bugtracking.unidata.ucar.edu/browse/NCF-234
 
 * Fixed bug in handling old servers that do not do proper Grid to
 Structure conversions. [NCF-232]
 
-[NCF-232]: https://www.unidata.ucar.edu/jira/browse/NCF-232
+[NCF-232]: https://bugtracking.unidata.ucar.edu/browse/NCF-232
 
 * Replaced the oc library with oc2.0
 
 * Fix bug with nc\_get\_var1\_uint() not accepting unsigned ints larger
 than 2\*\*31. [NCF-226]
 
-[NCF-226]: https://www.unidata.ucar.edu/jira/browse/NCF-226
+[NCF-226]: https://bugtracking.unidata.ucar.edu/browse/NCF-226
 
 * Fix to convert occurrences of '/' in DAP names to %2f. [NCF-223]
 
-[NCF-223]: https://www.unidata.ucar.edu/jira/browse/NCF-223
+[NCF-223]: https://bugtracking.unidata.ucar.edu/browse/NCF-223
 
 * Fix bug in netCDF-4 with scalar non-coordinate variables with same name
 as dimensions. [NCF-222]
 
-[NCF-222]: https://www.unidata.ucar.edu/jira/browse/NCF-222
+[NCF-222]: https://bugtracking.unidata.ucar.edu/browse/NCF-222
 
 * Fix bug in which calling netCDF-4 functions in which behavior that
 should not depend on order of calls sometimes produces the wrong
 results. [NCF-217]
 
-[NCF-217]: https://www.unidata.ucar.edu/jira/browse/NCF-217
+[NCF-217]: https://bugtracking.unidata.ucar.edu/browse/NCF-217
 
 * Merged in nccopy additions from Martin van Driel to support -g and -v
 options for specifying which groups or variables are to be copied.
 [NCF-216]
 
-[NCF-216]: https://www.unidata.ucar.edu/jira/browse/NCF-216
+[NCF-216]: https://bugtracking.unidata.ucar.edu/browse/NCF-216
 
 * Merged in parallel-netcdf bugs fixes from Greg Sjaardema. [NCF-214]
 
-[NCF-214]: https://www.unidata.ucar.edu/jira/browse/NCF-214
+[NCF-214]: https://bugtracking.unidata.ucar.edu/browse/NCF-214
 
 * Modify ncgen so that if the incoming file has a special attribute, then
 it is used to establish the special property of the netcdf file, but the
 attribute is not included as a real attribute in the file. [NCF-213].
 
-[NCF-213]: https://www.unidata.ucar.edu/jira/browse/NCF-213
+[NCF-213]: https://bugtracking.unidata.ucar.edu/browse/NCF-213
 
 * Added library version info to the user-agent string so that the server
 logs will be more informative. [NCF-210]
 
-[NCF-210]: https://www.unidata.ucar.edu/jira/browse/NCF-210
+[NCF-210]: https://bugtracking.unidata.ucar.edu/browse/NCF-210
 
 * Added work around for bad servers that sometimes sends DAP dataset with
 duplicate field names. [NCF-208]
 
-[NCF-208]: https://www.unidata.ucar.edu/jira/browse/NCF-208
+[NCF-208]: https://bugtracking.unidata.ucar.edu/browse/NCF-208
 
 * Fixed bug with strided access for NC\_STRING type. [NCF-206]
 
-[NCF-206]: https://www.unidata.ucar.edu/jira/browse/NCF-206
+[NCF-206]: https://bugtracking.unidata.ucar.edu/browse/NCF-206
 
 * Prevented adding an invalid \_FillValue attribute to a variable (with
 nonmatching type or multiple values), to avoid later error when any
 record variable is extended. [NCF-190]
 
-[NCF-190]: https://www.unidata.ucar.edu/jira/browse/NCF-190
+[NCF-190]: https://bugtracking.unidata.ucar.edu/browse/NCF-190
 
 * Fix bug in which some uses of vlen within compounds causes HDF5 errors.
 [NCF-155]
 
-[NCF-155]: https://www.unidata.ucar.edu/jira/browse/NCF-155
+[NCF-155]: https://bugtracking.unidata.ucar.edu/browse/NCF-155
 
 * Fixed ncdump bug in display of data values of variables that use
 multiple unlimited dimensions. [NCF-144]
 
-[NCF-144]: https://www.unidata.ucar.edu/jira/browse/NCF-144
+[NCF-144]: https://bugtracking.unidata.ucar.edu/browse/NCF-144
 
 * Fix bug in which interspersing def\_var calls with put\_var calls can
 lead to corrupt metadata in a netCDF file with groups and inherited
 dimensions. [NCF-134]
 
-[NCF-134]: https://www.unidata.ucar.edu/jira/browse/NCF-134
+[NCF-134]: https://bugtracking.unidata.ucar.edu/browse/NCF-134
 
 * Building shared libraries works with DAP and netCDF4 functionality.
 [NCF-205] [NCF-57]
 
-[NCF-205]: https://www.unidata.ucar.edu/jira/browse/NCF-205
-[NCF-57]: https://www.unidata.ucar.edu/jira/browse/NCF-57
+[NCF-205]: https://bugtracking.unidata.ucar.edu/browse/NCF-205
+[NCF-57]: https://bugtracking.unidata.ucar.edu/browse/NCF-57
 
 * 32-and-64-bit builds are working under MinGW on Windows. [NCF-112]
 
-[NCF-112]: https://www.unidata.ucar.edu/jira/browse/NCF-112
+[NCF-112]: https://bugtracking.unidata.ucar.edu/browse/NCF-112
 
 * Config.h for Windows compiles are included in the build. [NCF-98]
 
-[NCF-98]: https://www.unidata.ucar.edu/jira/browse/NCF-98
+[NCF-98]: https://bugtracking.unidata.ucar.edu/browse/NCF-98
 
 * NetCDF-4 dependency on NC\_MAX\_DIMS has been removed. [NCF-71]
 
-[NCF-71]: https://www.unidata.ucar.edu/jira/browse/NCF-71
+[NCF-71]: https://bugtracking.unidata.ucar.edu/browse/NCF-71
 
 * 64-bit DLL's are produced on Windows. [NCF-65]
 
-[NCF-65]: https://www.unidata.ucar.edu/jira/browse/NCF-65
+[NCF-65]: https://bugtracking.unidata.ucar.edu/browse/NCF-65
 
 * DLL Packaging issues are resolved. [NCF-54]
 
-[NCF-54]: https://www.unidata.ucar.edu/jira/browse/NCF-54
+[NCF-54]: https://bugtracking.unidata.ucar.edu/browse/NCF-54
 
 * The CMake build system (with related ctest and cdash systems for
 testing) has been integrated into netCDF-C. This allows for Visual
diff --git a/cf b/cf
new file mode 100644
index 0000000..170d95f
--- /dev/null
+++ b/cf
@@ -0,0 +1,203 @@
+#!/bin/bash
+#X="-x"
+#NB=1
+#DB=1
+
+if test $# != 0 ; then
+cmds=$@
+fi
+
+HDF5=1
+DAP=1
+#HDF4=1
+#PNETCDF=1
+
+#PAR=1
+
+if test "x$PNETCDF" = x1 ; then
+PAR=1
+fi
+
+#RPC=1
+#PGI=1
+#M32=1
+#M64=1
+
+CFLAGS=""
+#CFLAGS="-Wall -Wno-unused-variable -Wno-unused-parameter -Wconversion ${CFLAGS}"
+CFLAGS="-Wall ${CFLAGS}"
+#CFLAGS="-Wconversion"
+
+stddir="/usr/local"
+PREFIX=/usr/local
+
+if test "x${cmds}" = x ; then
+  cmds=""
+else
+for f in $cmds ; do
+  if test "x$f" = "xdistcheck" ; then
+    PREFIX=/tmp/$HOST
+  fi
+done
+fi
+
+# HDF4=>HDF5
+if test "x$HDF4" = x1 ; then
+HDF5=1
+fi
+
+# Test pgi compiler
+if test "x$PGI" = x1 ; then
+PATH="/opt/pgi/linux86/11.1/bin:$PATH"
+CC=pgcc
+else
+CC=gcc
+fi
+
+MALLOC_CHECK=""
+
+CPPFLAGS=""
+LDFLAGS=""
+
+CFLAGS="-g -O0 $CFLAGS"
+
+case "$HOST" in
+  mort)
+	CFLAGS="-std=c99 $CFLAGS"
+	;;
+  yakov)
+	CFLAGS="-std=c99 $CFLAGS"
+	;;
+  spock)
+	if test "x$PGI" = x ; then
+  	  CFLAGS="-Wdeclaration-after-statement -Wall $CFLAGS"
+	fi
+	;;
+  spike)
+	CFLAGS="-Wall $CFLAGS"
+	;;
+  *)
+	;;
+esac
+
+MAKE=make
+IGNORE="test 0 = 1"
+
+if test "x$HDF5" = "x1" ; then
+CPPFLAGS="-I${stddir}/include $CPPFLAGS"
+LDFLAGS="-L${stddir}/lib -lhdf5_hl -lhdf5 -lz $LDFLAGS"
+LD_LIBRARY_PATH="${stddir}/lib:$LD_LIBRARY_PATH"
+fi
+
+if test "x$HDF4" = "x1" ; then
+LDFLAGS="$LDFLAGS -ljpeg"
+fi
+
+if test "x$DAP" = "x1" -o "x$CDMR" = "x1" -o "x$RPC" = "x1" ; then
+if curl-config --version >/dev/null ; then
+TMP=`curl-config --cflags`
+CPPFLAGS="$TMP $CPPFLAGS"
+TMP=`curl-config --libs`
+LDFLAGS="$TMP $LDFLAGS"
+TMP=`curl-config --prefix`
+LD_LIBRARY_PATH="$TMP/lib:$LD_LIBRARY_PATH"
+else
+  echo "Cannot find curl-config"
+  exit 1
+fi
+fi
+
+CXXFLAGS="$CPPFLAGS $CXXFLAGS"
+
+FLAGS="--prefix ${PREFIX}"
+#FLAGS="$FLAGS --disable-f77 --disable-f90"
+#FLAGS="$FLAGS --disable-cxx"
+FLAGS="$FLAGS --disable-examples"
+#FLAGS="$FLAGS --disable-utilities"
+#FLAGS="$FLAGS --enable-cxx-4"
+#FLAGS="$FLAGS --enable-dap-long-tests"
+#FLAGS="$FLAGS --enable-ffio"
+#FLAGS="$FLAGS --enable-benchmarks"
+#FLAGS="$FLAGS --enable-extra-tests"
+#FLAGS="$FLAGS --enable-large-file-tests"
+#FLAGS="$FLAGS --disable-testsets"
+#FLAGS="$FLAGS --disable-dap-remote-tests"
+FLAGS="$FLAGS --enable-dap-auth-tests"
+#FLAGS="$FLAGS --enable-doxygen"
+#FLAGS="$FLAGS --enable-logging"
+#FLAGS="$FLAGS --disable-diskless"
+#FLAGS="$FLAGS --enable-mmap"
+#FLAGS="$FLAGS --with-udunits"
+#FLAGS="$FLAGS --with-libcf"
+#valgrind => not shared
+#FLAGS="$FLAGS --enable-valgrind-tests"
+FLAGS="$FLAGS --enable-jna"
+
+if test "x${DB}" = x1 ; then
+FLAGS="$FLAGS --disable-shared"
+else
+FLAGS="$FLAGS --enable-shared"
+fi
+
+if test "x${PAR}" != x ; then
+FLAGS="$FLAGS --enable-parallel"
+fi
+
+if test "x$HDF5" = "x" ; then
+FLAGS="$FLAGS --disable-netcdf-4"
+fi
+if test "x$HDF4" = x1 ; then
+FLAGS="$FLAGS --enable-hdf4 --enable-hdf4-file-tests"
+fi
+if test "x$DAP" = "x" ; then
+FLAGS="$FLAGS --disable-dap"
+fi
+if test "x$CDMR" = "x1" ; then
+FLAGS="$FLAGS --enable-cdmremote"
+fi
+if test "x$RPC" = "x1" ; then
+FLAGS="$FLAGS --enable-rpc"
+fi
+
+if test "x$PNETCDF" = x1 ; then
+if test -f /machine/local_mpich2 ; then
+MPI1=/machine/local_mpich2
+MPI2=/machine/local_par7
+MPI3=/machine/local_par
+else
+MPI1=/usr/local
+MPI2=${MPI1}
+MPI3=${MPI1}
+fi
+PATH=${PATH}:${MPI1}/bin
+CC="${MPI1}/bin/mpicc"
+CPPFLAGS="-I${MPI2}/include -I${MPI1}/include -I${MPI3}/include"
+LDFLAGS="-L${MPI2}/lib -L${MPI1}/lib -L${MPI3}/lib"
+LDLIBS="-lmpich -lmpl"
+FLAGS="$FLAGS --enable-pnetcdf"
+FLAGS="$FLAGS --enable-parallel-tests"
+fi
+
+export PATH
+export CC
+export CPPFLAGS
+export CFLAGS
+export LDFLAGS
+export LD_LIBRARY_PATH
+export MALLOC_CHECK
+export CXXFLAGS
+
+DISTCHECK_CONFIGURE_FLAGS="$FLAGS"
+export DISTCHECK_CONFIGURE_FLAGS
+
+if test -z "$NB" ; then
+${MAKE} maintainer-clean >/dev/null 2>&1
+if autoreconf -i --force ; then ok=1; else exit ; fi
+fi
+
+if test -f Makefile ; then ${MAKE} distclean >/dev/null 2>&1 ; fi
+sh $X ./configure ${FLAGS}
+for c in $cmds; do
+  ${MAKE} ${FORCE} $c
+done
+exit 0
diff --git a/cf.cmake b/cf.cmake
new file mode 100644
index 0000000..1267498
--- /dev/null
+++ b/cf.cmake
@@ -0,0 +1,14 @@
+rm -fr build
+mkdir build
+cd build
+UL=/usr/local
+PPATH="$UL"
+HDF5="-DHDF5_LIB=${UL}/lib/libhdf5.so -DHDF5_HL_LIB=${UL}/lib/libhdf5_hl.so -DHDF5_INCLUDE_DIR=${UL}/include"
+FLAGS="-DCMAKE_PREFIX_PATH=$PPATH"
+FLAGS="$FLAGS -DCMAKE_INSTALL_PREFIX=${UL}"
+FLAGS="$FLAGS -DCMAKE_PREFIX_PATH="$PPATH"
+FLAGS="$FLAGS -DENABLE_DAP_REMOTE_TESTS=true
+FLAGS="$FLAGS -DENABLE_DAP_AUTH_TESTS=true"
+cmake $FLAGS ${HDF5} ..
+cmake --build .
+make test
diff --git a/configure b/configure
index 0787f3d..e349182 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.ac Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF 4.3.3.1.
+# Generated by GNU Autoconf 2.69 for netCDF 4.4.0-rc2.
 #
 # Report bugs to <support-netcdf at unidata.ucar.edu>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF'
 PACKAGE_TARNAME='netcdf'
-PACKAGE_VERSION='4.3.3.1'
-PACKAGE_STRING='netCDF 4.3.3.1'
+PACKAGE_VERSION='4.4.0-rc2'
+PACKAGE_STRING='netCDF 4.4.0-rc2'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -1492,7 +1492,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures netCDF 4.3.3.1 to adapt to many kinds of systems.
+\`configure' configures netCDF 4.4.0-rc2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1563,7 +1563,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF 4.3.3.1:";;
+     short | recursive ) echo "Configuration of netCDF 4.4.0-rc2:";;
    esac
   cat <<\_ACEOF
 
@@ -1632,8 +1632,8 @@ Optional Features:
   --enable-dap-auth-tests enable dap remote authorization tests
   --disable-dap-groups    disable [netcdf4] dap group names
   --enable-dap-long-tests enable dap long tests
-  --enable-extra-tests    run some extra tests that may not pass because of
-                          known issues
+  --disable-extra-tests   disable some extra tests that may not pass because
+                          of known issues
   --enable-ffio           use ffio instead of posixio (ex. on the Cray)
   --disable-examples      don't build the netCDF examples during make check
                           (examples are treated as extra tests by netCDF)
@@ -1780,7 +1780,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF configure 4.3.3.1
+netCDF configure 4.4.0-rc2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2489,7 +2489,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF $as_me 4.3.3.1, which was
+It was created by netCDF $as_me 4.4.0-rc2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2842,9 +2842,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
  NC_VERSION_MAJOR=4
- NC_VERSION_MINOR=3
- NC_VERSION_PATCH=3
- NC_VERSION_NOTE=".1"
+ NC_VERSION_MINOR=4
+ NC_VERSION_PATCH=0
+ NC_VERSION_NOTE="-rc2"
 
 #####
 # Set some variables used to generate a libnetcdf.settings file,
@@ -2853,11 +2853,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo 4.3.3.1>VERSION
+echo 4.4.0-rc2>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.3.3.1" >&5
-$as_echo "$as_me: netCDF 4.3.3.1" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.4.0-rc2" >&5
+$as_echo "$as_me: netCDF 4.4.0-rc2" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -3498,7 +3498,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf'
- VERSION='4.3.3.1'
+ VERSION='4.4.0-rc2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5364,7 +5364,7 @@ if test "${enable_extra_tests+set}" = set; then :
   enableval=$enable_extra_tests;
 fi
 
-test "x$enable_extra_tests" = xyes || enable_extra_tests=no
+test "x$enable_extra_tests" = xno || enable_extra_tests=yes
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
@@ -19140,7 +19140,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF $as_me 4.3.3.1, which was
+This file was extended by netCDF $as_me 4.4.0-rc2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -19206,7 +19206,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF config.status 4.3.3.1
+netCDF config.status 4.4.0-rc2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index ac3fa14..a6a7d0d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,12 +15,12 @@ AC_REVISION([$Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp $])
 AC_PREREQ([2.59])
 
 # Initialize with name, version, and support email address.
-AC_INIT([netCDF], [4.3.3.1], [support-netcdf at unidata.ucar.edu])
+AC_INIT([netCDF], [4.4.0-rc2], [support-netcdf at unidata.ucar.edu])
 
 AC_SUBST([NC_VERSION_MAJOR]) NC_VERSION_MAJOR=4
-AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=3
-AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=3
-AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE=".1"
+AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=4
+AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=0
+AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="-rc2"
 
 #####
 # Set some variables used to generate a libnetcdf.settings file,
@@ -427,9 +427,9 @@ AM_CONDITIONAL(INTERNAL_OCLIB,[test "x" = "x"])
 # Does the user want to do some extra tests?
 AC_MSG_CHECKING([whether netCDF extra tests should be run (developers only)])
 AC_ARG_ENABLE([extra-tests],
-              [AS_HELP_STRING([--enable-extra-tests],
-                              [run some extra tests that may not pass because of known issues])])
-test "x$enable_extra_tests" = xyes || enable_extra_tests=no
+              [AS_HELP_STRING([--disable-extra-tests],
+                              [disable some extra tests that may not pass because of known issues])])
+test "x$enable_extra_tests" = xno || enable_extra_tests=yes
 AC_MSG_RESULT($enable_extra_tests)
 if test "x$enable_extra_tests" = xyes; then
    AC_DEFINE([EXTRA_TESTS], [1], [if true, run extra tests which may not work yet])
diff --git a/docs/FAQ.md b/docs/FAQ.md
index cddbf5c..f42b8a3 100644
--- a/docs/FAQ.md
+++ b/docs/FAQ.md
@@ -11,7 +11,7 @@ What Is netCDF?  {#What-Is-netCDF}
 
 
 NetCDF (network Common Data Form) is a set of interfaces for
-array-oriented data access and a [freely](http://www.unidata.ucar.edu/netcdf/docs/COPYRIGHT) distributed
+array-oriented data access and a [freely](http://www.unidata.ucar.edu/software/netcdf/docs/COPYRIGHT) distributed
 collection of data access libraries for C, Fortran, C++, Java, and other
 languages. The netCDF libraries support a machine-independent format for
 representing scientific data. Together, the interfaces, libraries, and
@@ -64,8 +64,8 @@ How do I convert netCDF data to ASCII or text? {#How-do-I-convert-netCDF-data-to
 
 One way to convert netCDF data to text is to use the **ncdump** tool
 that is part of the netCDF software distribution. It is a command line
-tool that provides a text representation of all the netCDF data, just
-the structure of a netCDF file, or just the data for specified
+tool that provides a text representation of a netCDF file's data, just its
+metadata, or just the data for specified
 variables, depending on what arguments you use. For more information,
 see the [ncdump documentation](http://www.unidata.ucar.edu/software/netcdf/docs/ncdump-man-1.html).
 
@@ -245,7 +245,7 @@ To cite use of netCDF software, please use this Digital Object Identifier (DOI):
 [http://dx.doi.org/10.5065/D6H70CW6](http://dx.doi.org/10.5065/D6H70CW6)
 
 Current online and downloadable documentation is available from the
-[documentation directory](http://www.unidata.ucar.edu/netcdf/docs/).
+[documentation directory](http://www.unidata.ucar.edu/software/netcdf/docs/).
 
 Other references include:
 
@@ -286,9 +286,9 @@ Is there a document describing the actual physical format for a Unidata netCDF f
 A short document that specifies the [format of netCDF classic and 64-bit offset files](http://earthdata.nasa.gov/sites/default/files/esdswg/spg/rfc/esds-rfc-011/ESDS-RFC-011v2.00.pdf) has been approved as a standard by the NASA ESDS Software Process Group.
 
 In addition, the NetCDF User's Guide contains an
-[appendix](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#File-Format) with the same format specification.
+[appendix](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#File-Format) with the same format specification.
 
-The ["NetCDF File Structure and Performance"](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#Structure) chapter provides a less formal explanation of the format of netCDF data to help clarify the performance implications of different data organizations.
+The ["NetCDF File Structure and Performance"](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#Structure) chapter provides a less formal explanation of the format of netCDF data to help clarify the performance implications of different data organizations.
 
 If users only access netCDF data through the documented interfaces, future changes to the format will be transparent.
 
@@ -324,7 +324,7 @@ How can I use current versions of netCDF-4 with Windows? {#HowcanIusecu}
 ------------------
 
 
-See [http://www.unidata.ucar.edu/netcdf/docs/winbin.html](http://www.unidata.ucar.edu/netcdf/win_netcdf).
+See [http://www.unidata.ucar.edu/software/netcdf/docs/winbin.html](http://www.unidata.ucar.edu/software/netcdf/win_netcdf).
 
 How can I use netCDF-4.1 with Windows? {#HowcanIusenetCDF41withWindows}
 -----------------
@@ -471,7 +471,7 @@ How do I build and install netCDF for a specific development environment? {#How-
 You have to build and install the netCDF C library first, before you build and install other language libraries that depend on it, such as Fortran, C++, or Python netCDF libraries. The netCDF Java library is mostly independent of the netCDF C library, unless you need to write netCDF-4 files from Java, in which case you will also need an installed netCDF C library.
 
 For more details, see
-[Getting and Building netCDF](http://www.unidata.ucar.edu/netcdf/docs/getting_and_building_netcdf.html).
+[Getting and Building netCDF](http://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html).
 
 
 ----------
@@ -604,7 +604,7 @@ distinguish between netCDF-4 and netCDF-4 classic model files, using the
 
 
 In a program, you can call the function
-[nc_inq_format](http://www.unidata.ucar.edu/netcdf/docs/netcdf-c.html#nc_005finq-Family)(or [nf90_inq_format](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f90.html#Compiling-and-Linking-with-the-NetCDF-Library) for the Fortran-90 interface) to determine the format variant of an open netCDF file.
+[nc_inq_format](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c.html#nc_005finq-Family)(or [nf90_inq_format](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html#Compiling-and-Linking-with-the-NetCDF-Library) for the Fortran-90 interface) to determine the format variant of an open netCDF file.
 
 Finally, on a Unix system, one way to display the first four bytes of a
 file, say foo.nc, is to run the following command:
@@ -702,7 +702,7 @@ the following situations:
     compression or chunking
 -   you need to access data in all netCDF formats including netCDF-4 or
     netCDF-4 classic model formats
--   you need to write non-record variables larger than 4GiB or record variables with more than 4GiB per record (see ["Have all netCDF size limits been eliminated?"](http://www.unidata.ucar.edu/netcdf/docs/faq.html#Large%20File%20Support10))
+-   you need to write non-record variables larger than 4GiB or record variables with more than 4GiB per record (see ["Have all netCDF size limits been eliminated?"](http://www.unidata.ucar.edu/software/netcdf/docs/faq.html#Large%20File%20Support10))
 -   you are installing netCDF to support other software packages that
     require netCDF-4 features
 -   you want to write data that takes advantage of compression,
@@ -780,7 +780,7 @@ To do this within a program, or if you want different variables to have
 different levels of deflation, define compression properties when each
 variable is defined. The function to call is
 [nc_def_var_deflate](/netcdf-c.html#nc_005fdef_005fvar_005fdeflate)
-for C programs, [nf90_def_var_deflate](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fDEFLATE) for Fortran 90 programs, [NF_DEF_VAR_DEFLATE](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fDEFLATE) for Fortran 77. For C++ programs, the experimental cxx4 API may be used,
+for C programs, [nf90_def_var_deflate](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fDEFLATE) for Fortran 90 programs, [NF_DEF_VAR_DEFLATE](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fDEFLATE) for Fortran 77. For C++ programs, the experimental cxx4 API may be used,
 assuming you have configured with --enable-cxx-4.
 
 Although default variable chunking parameters may be adequate,
@@ -793,11 +793,11 @@ compression than chunks that included multiple horizontal slices. There
 are other factors in choosing chunk sizes, especially matching how the
 data will be accessed most frequently. Chunking properties may only be
 specified when a variable is first defined. The function to call is
-[nc_def_var_chunking](http://www.unidata.ucar.edu/netcdf/docs/netcdf-c.html#nc_005fdef_005fvar_005f)
+[nc_def_var_chunking](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c.html#nc_005fdef_005fvar_005f)
 for C programs,
-[nf90_def_var_chunking](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fCHUNKING)
+[nf90_def_var_chunking](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fCHUNKING)
 for Fortran 90 programs, and
-[NF_DEF_VAR_CHUNKING](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fCHUNKING)
+[NF_DEF_VAR_CHUNKING](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fCHUNKING)
 for Fortran 77 programs. For C++ programs, the experimental cxx4 API may
 be used, assuming you have configured with --enable-cxx-4.
 
@@ -852,7 +852,7 @@ model format file foo4c.nc, you could use:
   nccopy -k netCDF-4-classic foo3.nc foo4c.nc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-If you have installed [NCO](http://www.unidata.ucar.edu/netcdf/docs/software.html#NCO), the NCO
+If you have installed [NCO](http://www.unidata.ucar.edu/software/netcdf/docs/software.html#NCO), the NCO
 utility "ncks" can be used to accomplish the same task, as follows:
 
 ~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
@@ -902,7 +902,7 @@ classic format file foo3.nc, use:
   nccopy -k classic foo4c.nc foo3.nc
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
-If you have installed [NCO](http://www.unidata.ucar.edu/netcdf/docs/software.html#NCO), the NCO utility "ncks" can be used to accomplish the same task, as follows:
+If you have installed [NCO](http://www.unidata.ucar.edu/software/netcdf/docs/software.html#NCO), the NCO utility "ncks" can be used to accomplish the same task, as follows:
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
   ncks -3 foo4c.nc foo3.nc
@@ -1200,7 +1200,7 @@ This first netCDF format variant, the only format supported in versions
 32-bit file offset in the classic format limits the total sizes of all
 but the last non-record variables in a file to less than 2 GiB, with a
 similar limitation for the data within each record for record variables.
-For more information see [Classic Format Limitations](http://www.unidata.ucar.edu/netcdf/docs/netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations).
+For more information see [Classic Format Limitations](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations).
 
 The netCDF classic format is also identified as *version 1* or *CDF1* in
 reference to the format label at the start of a file.
@@ -1473,7 +1473,7 @@ variables. This means that subsequently adding a small variable to an
 existing file may be invalid, because it makes what was previously the
 last variable now in violation of the format size constraints. For
 details on the format size constraints, see the Users Guide sections
-[NetCDF Classic Format Limitations](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#Classic-Limitations) and [NetCDF 64-bit Offset Format Limitations](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#64-bit-Offset-Limitations).
+[NetCDF Classic Format Limitations](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#Classic-Limitations) and [NetCDF 64-bit Offset Format Limitations](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#64-bit-Offset-Limitations).
 
 If you get the netCDF library error "Invalid dimension size" for a
 non-negative size, you are exceeding the size limit of netCDF
diff --git a/docs/footer.html b/docs/footer.html
old mode 100644
new mode 100755
index ae3ba5e..e51a0f1
--- a/docs/footer.html
+++ b/docs/footer.html
@@ -1,10 +1,10 @@
-<hr size="2"/>
-<address style="text-align: center;">
-<a href="http://www.unidata.ucar.edu/software/netcdf/">Return to the Main Unidata NetCDF page.</a><br>
-<img src="http://www.unidata.ucar.edu/img/v3/logos/uniLogo.png">
-
-<address style="text-align: right;"><small>
-Generated on $datetime for $projectname. NetCDF is
-a <a href="http://www.unidata.ucar.edu/">Unidata</a> library.</small></address>
-</body>
-</html>
+<hr size="2"/>
+<address style="text-align: center;">
+<a href="http://www.unidata.ucar.edu/software/netcdf/">Return to the Main Unidata NetCDF page.</a><br>
+<img src="http://www.unidata.ucar.edu/images/logos/uniLogo.png">
+
+<address style="text-align: right;"><small>
+Generated on $datetime for $projectname. NetCDF is
+a <a href="http://www.unidata.ucar.edu/">Unidata</a> library.</small></address>
+</body>
+</html>
diff --git a/docs/old/netcdf.texi b/docs/old/netcdf.texi
index 6e11b77..4ff2e81 100644
--- a/docs/old/netcdf.texi
+++ b/docs/old/netcdf.texi
@@ -5062,7 +5062,7 @@ unit algebra on the binary form. Though the units library is
 self-contained and there is no dependency between it and the netCDF
 library, it is nevertheless useful in writing generic netCDF programs
 and we suggest you obtain it. The library and associated documentation
-is available from @uref{http://www.unidata.ucar.edu/packages/udunits/}.
+is available from @uref{http://www.unidata.ucar.edu/software/udunits/}.
 
 The following are examples of units strings that can be interpreted by
 the utScan() function of the Unidata units library:
diff --git a/docs/software.md b/docs/software.md
index fed0596..22f1047 100644
--- a/docs/software.md
+++ b/docs/software.md
@@ -126,6 +126,7 @@ Other useful guides to utilities that can handle netCDF data include ARM's list
 -   [PPLUS](#PPLUS)
 -   [PV-Wave](#PV-Wave)
 -   [Slicer Dicer](#SlicerDicer)
+-   [Surfer](#Surfer)
 -   [vGeo](#vGeo)
 -   [VISAGE and Decimate](#VISAGE_and_Decimate)
 -   [Voyager](#Voyager)
@@ -915,7 +916,7 @@ The program and source are available from
 Java interface {#Java_interface}
 -----------------------------------------------
 
-The [NetCDF-Java 4.2 Library](/packages/netcdf-java/) is a Java
+The [NetCDF-Java 4.2 Library](/software/netcdf-java/) is a Java
 interface to netCDF files, as well as to many other types of scientific
 data formats. It is freely available and the source code is released
 under the (MIT-style) netCDF C library license. Previous versions use
@@ -1249,7 +1250,7 @@ command line operators that work on generic netCDF or HDF4 files:
 -   ncrename - renamer
 -   ncwa - weighted averager
 
-All operators may now be [OPeNDAP](/packages/dods) clients. OPeNDAP
+All operators may now be [OPeNDAP](www.opendao.org) clients. OPeNDAP
 enables network transparent data access to any OPeNDAP server. Thus
 OPeNDAP-enabled NCO can operate on remote files accessible through any
 OPeNDAP server without transferring the files. Only the required data
@@ -2658,6 +2659,18 @@ Slicer Dicer output. Visualizations features include:
 -   Any data level or range of levels can be rendered as either opaque
     or transparent.
 
+Surfer {#Surfer}
+------------------------------------------
+
+[Surfer](http://www.goldensoftware.com/products/surfer) is a 3D
+visualization, contouring, and surface modeling package that runs
+under Microsoft Windows. Surfer is useful for terrain modeling,
+bathymetric modeling, landscape visualization, surface analysis,
+contour mapping, watershed and 3D surface mapping, gridding,
+volumetrics, and more. A sophisticated interpolation engine transforms
+XYZ data into publication-quality maps. Surfer imports from and
+exports to a multitude of file formats, including NetCDF grids.
+
 vGeo {#vGeo}
 ---------------------------
 
diff --git a/docs/windows-binaries.md b/docs/windows-binaries.md
index 457e947..59bf724 100644
--- a/docs/windows-binaries.md
+++ b/docs/windows-binaries.md
@@ -32,14 +32,14 @@ The included dependencies and versions are as follows:
 * `libcurl`: 7.35.0
 * `zlib`:    1.2.8
 
-## Latest Release (netCDF-C 4.4.0-rc1) {#msvc-latest-release}
+## Latest Release (netCDF-C 4.4.0-rc2) {#msvc-latest-release}
 
 Configuration		| 32-bit 						| 64-bit |
 :-------------------|:--------							|:-------|
-netCDF 3		| [netCDF4.4.0-rc1-NC3-32.exe][r1]		| [netCDF4.4.0-rc1-NC3-64.exe][r6]
-netCDF3+DAP		| [netCDF4.4.0-rc1-NC3-DAP-32.exe][r2]	| [netCDF4.4.0-rc1-NC3-DAP-64.exe][r6]
-netCDF4			| [netCDF4.4.0-rc1-NC4-32.exe][r3]		| [netCDF4.4.0-rc1-NC4-64.exe][r7]
-netCDF4+DAP		| [netCDF4.4.0-rc1-NC4-DAP-32.exe][r4]	| [netCDF4.4.0-rc1-NC4-DAP-64.exe][r8]
+netCDF 3		| [netCDF4.4.0-rc2-NC3-32.exe][r1]		| [netCDF4.4.0-rc2-NC3-64.exe][r6]
+netCDF3+DAP		| [netCDF4.4.0-rc2-NC3-DAP-32.exe][r2]	| [netCDF4.4.0-rc2-NC3-DAP-64.exe][r6]
+netCDF4			| [netCDF4.4.0-rc2-NC4-32.exe][r3]		| [netCDF4.4.0-rc2-NC4-64.exe][r7]
+netCDF4+DAP		| [netCDF4.4.0-rc2-NC4-DAP-32.exe][r4]	| [netCDF4.4.0-rc2-NC4-DAP-64.exe][r8]
 
 # Using the netCDF-C Libraries with Visual Studio {#msvc-using}
 
@@ -60,11 +60,11 @@ When installed, the netCDF libraries are placed in the specified locations, alon
 1. When building the netCDF-C libraries with netCDF4 support, using the `Debug` libraries may cause extraneous warnings. These warnings are related to cross-dll memory management, and appear to be harmless. You can safely ignore them by using the `Release` libraries. [NCF-220]
 
 
-[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC3-32.exe
-[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC3-DAP-32.exe
-[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC4-32.exe
-[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC4-DAP-32.exe
-[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC3-64.exe
-[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC3-DAP-64.exe
-[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC4-64.exe
-[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc1-NC4-DAP-64.exe
+[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC3-32.exe
+[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC3-DAP-32.exe
+[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC4-32.exe
+[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC4-DAP-32.exe
+[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC3-64.exe
+[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC3-DAP-64.exe
+[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC4-64.exe
+[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.4.0-rc2-NC4-DAP-64.exe
diff --git a/libdap2/env b/libdap2/env
index fd751e0..97d8030 100644
--- a/libdap2/env
+++ b/libdap2/env
@@ -6,7 +6,7 @@ alias xx="cd ..;make; cd libdap2"
 PARMS=""; ARGS=""; CON="" ; CE="";  OCON="" ; VAR=""; SHARP='#'
 alias q0=;alias qq=;alias qv=;alias q=;alias  qh=;alias qqh=;alias qall=;alias qv=;alias qo=;
 
-F="file://${TOP}/ncdap_test/testdata3/synth9"
+F="http://remotetest.unidata.ucar.edu/dts/test.01"
 
 if test -f ./ncd ; then
 PROG=./ncd
diff --git a/libdap2/nccommon.h b/libdap2/nccommon.h
index 9ffeec4..6ef8f24 100644
--- a/libdap2/nccommon.h
+++ b/libdap2/nccommon.h
@@ -19,7 +19,6 @@
 #define nullfree(m) {if((m)!=NULL) {free(m);} else {}}
 #endif
 
-
 /* Misc. code controls */
 #define FILLCONSTRAINT TRUE
 
diff --git a/libsrc/CMakeLists.txt b/libsrc/CMakeLists.txt
index 3168913..c2e87c2 100644
--- a/libsrc/CMakeLists.txt
+++ b/libsrc/CMakeLists.txt
@@ -4,7 +4,9 @@
 # Process these files with m4.
 SET(m4_SOURCES attr ncx putget t_ncxx)
 foreach (f ${m4_SOURCES})
+IF(HAVE_M4)
   GEN_m4(${f})
+ENDIF()
 endforeach(f)
 
 SET(libsrc_SOURCES v1hpg.c putget.c attr.c nc3dispatch.c nc3internal.c var.c dim.c ncx.c lookup3.c ncio.c)
@@ -45,13 +47,13 @@ IF (BUILD_PARALLEL)
 ENDIF(BUILD_PARALLEL)
 
 # Generate the man page.
-IF(NOT MSVC)
+IF(HAVE_M4)
 
   FILE(GLOB libsrc_MANPAGE ${CMAKE_SOURCE_DIR}/docs/netcdf.m4)
   FILE(COPY ${libsrc_MANPAGE} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
 
   ADD_CUSTOM_TARGET(manpage ALL
-    COMMAND m4 ${ARGS_MANPAGE} ${CMAKE_CURRENT_BINARY_DIR}/netcdf.m4 > ${CMAKE_CURRENT_BINARY_DIR}/netcdf.3
+    COMMAND ${NC_M4} ${ARGS_MANPAGE} ${CMAKE_CURRENT_BINARY_DIR}/netcdf.m4 > ${CMAKE_CURRENT_BINARY_DIR}/netcdf.3
     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
     )
 
diff --git a/libsrc/attr.c b/libsrc/attr.c
index 22a961d..3c1c668 100644
--- a/libsrc/attr.c
+++ b/libsrc/attr.c
@@ -1,6 +1,4 @@
-#line 5 "attr.m4"
 /* Do not edit this file. It is produced from the corresponding .m4 source */
-#line 7
 /*
  *	Copyright 1996, University Corporation for Atmospheric Research
  *      See netcdf/COPYRIGHT file for copying and redistribution conditions.
@@ -613,704 +611,367 @@ NC3_del_att(int ncid, int varid, const char *uname)
 	return NC_NOERR;
 }
 
-#line 674
 
 static int
-#line 675
 ncx_pad_putn_Iuchar(void **xpp, size_t nelems, const uchar *tp, nc_type type)
-#line 675
 {
-#line 675
 	switch(type) {
-#line 675
 	case NC_CHAR:
-#line 675
 		return NC_ECHAR;
-#line 675
 	case NC_BYTE:
-#line 675
 		return ncx_pad_putn_schar_uchar(xpp, nelems, tp);
-#line 675
 	case NC_SHORT:
-#line 675
 		return ncx_pad_putn_short_uchar(xpp, nelems, tp);
-#line 675
 	case NC_INT:
-#line 675
 		return ncx_putn_int_uchar(xpp, nelems, tp);
-#line 675
 	case NC_FLOAT:
-#line 675
 		return ncx_putn_float_uchar(xpp, nelems, tp);
-#line 675
 	case NC_DOUBLE:
-#line 675
 		return ncx_putn_double_uchar(xpp, nelems, tp);
-#line 675
 	default:
-#line 675
                 assert("ncx_pad_putn_Iuchar invalid type" == 0);
-#line 675
 	}
-#line 675
 	return NC_EBADTYPE;
-#line 675
 }
-#line 675
 
 static int
-#line 676
 ncx_pad_getn_Iuchar(const void **xpp, size_t nelems, uchar *tp, nc_type type)
-#line 676
 {
-#line 676
 	switch(type) {
-#line 676
 	case NC_CHAR:
-#line 676
 		return NC_ECHAR;
-#line 676
 	case NC_BYTE:
-#line 676
 		return ncx_pad_getn_schar_uchar(xpp, nelems, tp);
-#line 676
 	case NC_SHORT:
-#line 676
 		return ncx_pad_getn_short_uchar(xpp, nelems, tp);
-#line 676
 	case NC_INT:
-#line 676
 		return ncx_getn_int_uchar(xpp, nelems, tp);
-#line 676
 	case NC_FLOAT:
-#line 676
 		return ncx_getn_float_uchar(xpp, nelems, tp);
-#line 676
 	case NC_DOUBLE:
-#line 676
 		return ncx_getn_double_uchar(xpp, nelems, tp);
-#line 676
 	default:
-#line 676
 	        assert("ncx_pad_getn_Iuchar invalid type" == 0);
-#line 676
 	}
-#line 676
 	return NC_EBADTYPE;
-#line 676
 }
-#line 676
 
 
 static int
-#line 678
 ncx_pad_putn_Ischar(void **xpp, size_t nelems, const schar *tp, nc_type type)
-#line 678
 {
-#line 678
 	switch(type) {
-#line 678
 	case NC_CHAR:
-#line 678
 		return NC_ECHAR;
-#line 678
 	case NC_BYTE:
-#line 678
 		return ncx_pad_putn_schar_schar(xpp, nelems, tp);
-#line 678
 	case NC_SHORT:
-#line 678
 		return ncx_pad_putn_short_schar(xpp, nelems, tp);
-#line 678
 	case NC_INT:
-#line 678
 		return ncx_putn_int_schar(xpp, nelems, tp);
-#line 678
 	case NC_FLOAT:
-#line 678
 		return ncx_putn_float_schar(xpp, nelems, tp);
-#line 678
 	case NC_DOUBLE:
-#line 678
 		return ncx_putn_double_schar(xpp, nelems, tp);
-#line 678
 	default:
-#line 678
                 assert("ncx_pad_putn_Ischar invalid type" == 0);
-#line 678
 	}
-#line 678
 	return NC_EBADTYPE;
-#line 678
 }
-#line 678
 
 static int
-#line 679
 ncx_pad_getn_Ischar(const void **xpp, size_t nelems, schar *tp, nc_type type)
-#line 679
 {
-#line 679
 	switch(type) {
-#line 679
 	case NC_CHAR:
-#line 679
 		return NC_ECHAR;
-#line 679
 	case NC_BYTE:
-#line 679
 		return ncx_pad_getn_schar_schar(xpp, nelems, tp);
-#line 679
 	case NC_SHORT:
-#line 679
 		return ncx_pad_getn_short_schar(xpp, nelems, tp);
-#line 679
 	case NC_INT:
-#line 679
 		return ncx_getn_int_schar(xpp, nelems, tp);
-#line 679
 	case NC_FLOAT:
-#line 679
 		return ncx_getn_float_schar(xpp, nelems, tp);
-#line 679
 	case NC_DOUBLE:
-#line 679
 		return ncx_getn_double_schar(xpp, nelems, tp);
-#line 679
 	default:
-#line 679
 	        assert("ncx_pad_getn_Ischar invalid type" == 0);
-#line 679
 	}
-#line 679
 	return NC_EBADTYPE;
-#line 679
 }
-#line 679
 
 
 static int
-#line 681
 ncx_pad_putn_Ishort(void **xpp, size_t nelems, const short *tp, nc_type type)
-#line 681
 {
-#line 681
 	switch(type) {
-#line 681
 	case NC_CHAR:
-#line 681
 		return NC_ECHAR;
-#line 681
 	case NC_BYTE:
-#line 681
 		return ncx_pad_putn_schar_short(xpp, nelems, tp);
-#line 681
 	case NC_SHORT:
-#line 681
 		return ncx_pad_putn_short_short(xpp, nelems, tp);
-#line 681
 	case NC_INT:
-#line 681
 		return ncx_putn_int_short(xpp, nelems, tp);
-#line 681
 	case NC_FLOAT:
-#line 681
 		return ncx_putn_float_short(xpp, nelems, tp);
-#line 681
 	case NC_DOUBLE:
-#line 681
 		return ncx_putn_double_short(xpp, nelems, tp);
-#line 681
 	default:
-#line 681
                 assert("ncx_pad_putn_Ishort invalid type" == 0);
-#line 681
 	}
-#line 681
 	return NC_EBADTYPE;
-#line 681
 }
-#line 681
 
 static int
-#line 682
 ncx_pad_getn_Ishort(const void **xpp, size_t nelems, short *tp, nc_type type)
-#line 682
 {
-#line 682
 	switch(type) {
-#line 682
 	case NC_CHAR:
-#line 682
 		return NC_ECHAR;
-#line 682
 	case NC_BYTE:
-#line 682
 		return ncx_pad_getn_schar_short(xpp, nelems, tp);
-#line 682
 	case NC_SHORT:
-#line 682
 		return ncx_pad_getn_short_short(xpp, nelems, tp);
-#line 682
 	case NC_INT:
-#line 682
 		return ncx_getn_int_short(xpp, nelems, tp);
-#line 682
 	case NC_FLOAT:
-#line 682
 		return ncx_getn_float_short(xpp, nelems, tp);
-#line 682
 	case NC_DOUBLE:
-#line 682
 		return ncx_getn_double_short(xpp, nelems, tp);
-#line 682
 	default:
-#line 682
 	        assert("ncx_pad_getn_Ishort invalid type" == 0);
-#line 682
 	}
-#line 682
 	return NC_EBADTYPE;
-#line 682
 }
-#line 682
 
 
 static int
-#line 684
 ncx_pad_putn_Iint(void **xpp, size_t nelems, const int *tp, nc_type type)
-#line 684
 {
-#line 684
 	switch(type) {
-#line 684
 	case NC_CHAR:
-#line 684
 		return NC_ECHAR;
-#line 684
 	case NC_BYTE:
-#line 684
 		return ncx_pad_putn_schar_int(xpp, nelems, tp);
-#line 684
 	case NC_SHORT:
-#line 684
 		return ncx_pad_putn_short_int(xpp, nelems, tp);
-#line 684
 	case NC_INT:
-#line 684
 		return ncx_putn_int_int(xpp, nelems, tp);
-#line 684
 	case NC_FLOAT:
-#line 684
 		return ncx_putn_float_int(xpp, nelems, tp);
-#line 684
 	case NC_DOUBLE:
-#line 684
 		return ncx_putn_double_int(xpp, nelems, tp);
-#line 684
 	default:
-#line 684
                 assert("ncx_pad_putn_Iint invalid type" == 0);
-#line 684
 	}
-#line 684
 	return NC_EBADTYPE;
-#line 684
 }
-#line 684
 
 static int
-#line 685
 ncx_pad_getn_Iint(const void **xpp, size_t nelems, int *tp, nc_type type)
-#line 685
 {
-#line 685
 	switch(type) {
-#line 685
 	case NC_CHAR:
-#line 685
 		return NC_ECHAR;
-#line 685
 	case NC_BYTE:
-#line 685
 		return ncx_pad_getn_schar_int(xpp, nelems, tp);
-#line 685
 	case NC_SHORT:
-#line 685
 		return ncx_pad_getn_short_int(xpp, nelems, tp);
-#line 685
 	case NC_INT:
-#line 685
 		return ncx_getn_int_int(xpp, nelems, tp);
-#line 685
 	case NC_FLOAT:
-#line 685
 		return ncx_getn_float_int(xpp, nelems, tp);
-#line 685
 	case NC_DOUBLE:
-#line 685
 		return ncx_getn_double_int(xpp, nelems, tp);
-#line 685
 	default:
-#line 685
 	        assert("ncx_pad_getn_Iint invalid type" == 0);
-#line 685
 	}
-#line 685
 	return NC_EBADTYPE;
-#line 685
 }
-#line 685
 
 
 static int
-#line 687
 ncx_pad_putn_Ifloat(void **xpp, size_t nelems, const float *tp, nc_type type)
-#line 687
 {
-#line 687
 	switch(type) {
-#line 687
 	case NC_CHAR:
-#line 687
 		return NC_ECHAR;
-#line 687
 	case NC_BYTE:
-#line 687
 		return ncx_pad_putn_schar_float(xpp, nelems, tp);
-#line 687
 	case NC_SHORT:
-#line 687
 		return ncx_pad_putn_short_float(xpp, nelems, tp);
-#line 687
 	case NC_INT:
-#line 687
 		return ncx_putn_int_float(xpp, nelems, tp);
-#line 687
 	case NC_FLOAT:
-#line 687
 		return ncx_putn_float_float(xpp, nelems, tp);
-#line 687
 	case NC_DOUBLE:
-#line 687
 		return ncx_putn_double_float(xpp, nelems, tp);
-#line 687
 	default:
-#line 687
                 assert("ncx_pad_putn_Ifloat invalid type" == 0);
-#line 687
 	}
-#line 687
 	return NC_EBADTYPE;
-#line 687
 }
-#line 687
 
 static int
-#line 688
 ncx_pad_getn_Ifloat(const void **xpp, size_t nelems, float *tp, nc_type type)
-#line 688
 {
-#line 688
 	switch(type) {
-#line 688
 	case NC_CHAR:
-#line 688
 		return NC_ECHAR;
-#line 688
 	case NC_BYTE:
-#line 688
 		return ncx_pad_getn_schar_float(xpp, nelems, tp);
-#line 688
 	case NC_SHORT:
-#line 688
 		return ncx_pad_getn_short_float(xpp, nelems, tp);
-#line 688
 	case NC_INT:
-#line 688
 		return ncx_getn_int_float(xpp, nelems, tp);
-#line 688
 	case NC_FLOAT:
-#line 688
 		return ncx_getn_float_float(xpp, nelems, tp);
-#line 688
 	case NC_DOUBLE:
-#line 688
 		return ncx_getn_double_float(xpp, nelems, tp);
-#line 688
 	default:
-#line 688
 	        assert("ncx_pad_getn_Ifloat invalid type" == 0);
-#line 688
 	}
-#line 688
 	return NC_EBADTYPE;
-#line 688
 }
-#line 688
 
 
 static int
-#line 690
 ncx_pad_putn_Idouble(void **xpp, size_t nelems, const double *tp, nc_type type)
-#line 690
 {
-#line 690
 	switch(type) {
-#line 690
 	case NC_CHAR:
-#line 690
 		return NC_ECHAR;
-#line 690
 	case NC_BYTE:
-#line 690
 		return ncx_pad_putn_schar_double(xpp, nelems, tp);
-#line 690
 	case NC_SHORT:
-#line 690
 		return ncx_pad_putn_short_double(xpp, nelems, tp);
-#line 690
 	case NC_INT:
-#line 690
 		return ncx_putn_int_double(xpp, nelems, tp);
-#line 690
 	case NC_FLOAT:
-#line 690
 		return ncx_putn_float_double(xpp, nelems, tp);
-#line 690
 	case NC_DOUBLE:
-#line 690
 		return ncx_putn_double_double(xpp, nelems, tp);
-#line 690
 	default:
-#line 690
                 assert("ncx_pad_putn_Idouble invalid type" == 0);
-#line 690
 	}
-#line 690
 	return NC_EBADTYPE;
-#line 690
 }
-#line 690
 
 static int
-#line 691
 ncx_pad_getn_Idouble(const void **xpp, size_t nelems, double *tp, nc_type type)
-#line 691
 {
-#line 691
 	switch(type) {
-#line 691
 	case NC_CHAR:
-#line 691
 		return NC_ECHAR;
-#line 691
 	case NC_BYTE:
-#line 691
 		return ncx_pad_getn_schar_double(xpp, nelems, tp);
-#line 691
 	case NC_SHORT:
-#line 691
 		return ncx_pad_getn_short_double(xpp, nelems, tp);
-#line 691
 	case NC_INT:
-#line 691
 		return ncx_getn_int_double(xpp, nelems, tp);
-#line 691
 	case NC_FLOAT:
-#line 691
 		return ncx_getn_float_double(xpp, nelems, tp);
-#line 691
 	case NC_DOUBLE:
-#line 691
 		return ncx_getn_double_double(xpp, nelems, tp);
-#line 691
 	default:
-#line 691
 	        assert("ncx_pad_getn_Idouble invalid type" == 0);
-#line 691
 	}
-#line 691
 	return NC_EBADTYPE;
-#line 691
 }
-#line 691
 
 
 #ifdef IGNORE
 static int
-#line 694
 ncx_pad_putn_Ilong(void **xpp, size_t nelems, const long *tp, nc_type type)
-#line 694
 {
-#line 694
 	switch(type) {
-#line 694
 	case NC_CHAR:
-#line 694
 		return NC_ECHAR;
-#line 694
 	case NC_BYTE:
-#line 694
 		return ncx_pad_putn_schar_long(xpp, nelems, tp);
-#line 694
 	case NC_SHORT:
-#line 694
 		return ncx_pad_putn_short_long(xpp, nelems, tp);
-#line 694
 	case NC_INT:
-#line 694
 		return ncx_putn_int_long(xpp, nelems, tp);
-#line 694
 	case NC_FLOAT:
-#line 694
 		return ncx_putn_float_long(xpp, nelems, tp);
-#line 694
 	case NC_DOUBLE:
-#line 694
 		return ncx_putn_double_long(xpp, nelems, tp);
-#line 694
 	default:
-#line 694
                 assert("ncx_pad_putn_Ilong invalid type" == 0);
-#line 694
 	}
-#line 694
 	return NC_EBADTYPE;
-#line 694
 }
-#line 694
 
 static int
-#line 695
 ncx_pad_getn_Ilong(const void **xpp, size_t nelems, long *tp, nc_type type)
-#line 695
 {
-#line 695
 	switch(type) {
-#line 695
 	case NC_CHAR:
-#line 695
 		return NC_ECHAR;
-#line 695
 	case NC_BYTE:
-#line 695
 		return ncx_pad_getn_schar_long(xpp, nelems, tp);
-#line 695
 	case NC_SHORT:
-#line 695
 		return ncx_pad_getn_short_long(xpp, nelems, tp);
-#line 695
 	case NC_INT:
-#line 695
 		return ncx_getn_int_long(xpp, nelems, tp);
-#line 695
 	case NC_FLOAT:
-#line 695
 		return ncx_getn_float_long(xpp, nelems, tp);
-#line 695
 	case NC_DOUBLE:
-#line 695
 		return ncx_getn_double_long(xpp, nelems, tp);
-#line 695
 	default:
-#line 695
 	        assert("ncx_pad_getn_Ilong invalid type" == 0);
-#line 695
 	}
-#line 695
 	return NC_EBADTYPE;
-#line 695
 }
-#line 695
 
 #endif
 
 static int
-#line 698
 ncx_pad_putn_Ilonglong(void **xpp, size_t nelems, const longlong *tp, nc_type type)
-#line 698
 {
-#line 698
 	switch(type) {
-#line 698
 	case NC_CHAR:
-#line 698
 		return NC_ECHAR;
-#line 698
 	case NC_BYTE:
-#line 698
 		return ncx_pad_putn_schar_longlong(xpp, nelems, tp);
-#line 698
 	case NC_SHORT:
-#line 698
 		return ncx_pad_putn_short_longlong(xpp, nelems, tp);
-#line 698
 	case NC_INT:
-#line 698
 		return ncx_putn_int_longlong(xpp, nelems, tp);
-#line 698
 	case NC_FLOAT:
-#line 698
 		return ncx_putn_float_longlong(xpp, nelems, tp);
-#line 698
 	case NC_DOUBLE:
-#line 698
 		return ncx_putn_double_longlong(xpp, nelems, tp);
-#line 698
 	default:
-#line 698
                 assert("ncx_pad_putn_Ilonglong invalid type" == 0);
-#line 698
 	}
-#line 698
 	return NC_EBADTYPE;
-#line 698
 }
-#line 698
 
 static int
-#line 699
 ncx_pad_getn_Ilonglong(const void **xpp, size_t nelems, longlong *tp, nc_type type)
-#line 699
 {
-#line 699
 	switch(type) {
-#line 699
 	case NC_CHAR:
-#line 699
 		return NC_ECHAR;
-#line 699
 	case NC_BYTE:
-#line 699
 		return ncx_pad_getn_schar_longlong(xpp, nelems, tp);
-#line 699
 	case NC_SHORT:
-#line 699
 		return ncx_pad_getn_short_longlong(xpp, nelems, tp);
-#line 699
 	case NC_INT:
-#line 699
 		return ncx_getn_int_longlong(xpp, nelems, tp);
-#line 699
 	case NC_FLOAT:
-#line 699
 		return ncx_getn_float_longlong(xpp, nelems, tp);
-#line 699
 	case NC_DOUBLE:
-#line 699
 		return ncx_getn_double_longlong(xpp, nelems, tp);
-#line 699
 	default:
-#line 699
 	        assert("ncx_pad_getn_Ilonglong invalid type" == 0);
-#line 699
 	}
-#line 699
 	return NC_EBADTYPE;
-#line 699
 }
-#line 699
 
 
 
diff --git a/libsrc5/nc5dispatch.c b/libsrc5/nc5dispatch.c
index 60c0f16..cba9cbe 100644
--- a/libsrc5/nc5dispatch.c
+++ b/libsrc5/nc5dispatch.c
@@ -564,10 +564,6 @@ NC5_get_vara(int ncid,
     nc5 = NC5_DATA(nc);
     assert(nc5);
 
-    /* No NC_LONG for parallel-netcdf library! */
-    if(memtype == NC_INT64)
-	 return NC_EINVAL;
-
     /* get variable's rank */
     status= ncmpi_inq_varndims(nc->int_ncid, varid, &rank);
     if(status) return status;
@@ -645,10 +641,6 @@ NC5_put_vara(int ncid,
     nc5 = NC5_DATA(nc);
     assert(nc5);
 
-    /* No NC_LONG for parallel-netcdf library! */
-    if(memtype == NC_INT64)
-	 return NC_EINVAL;
-
     /* get variable's rank */
     status = ncmpi_inq_varndims(nc->int_ncid, varid, &rank);
     if(status) return status;
diff --git a/ljna b/ljna
new file mode 100644
index 0000000..4b6b039
--- /dev/null
+++ b/ljna
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+# Define where the installation will be
+PREFIX=/home/dmh/opt/jna
+#PREFIX=/opt/netcdf
+
+# Define where to look for e.g. libz or libhdf5
+LIBDIR=/usr/local/lib
+
+CFLAGS=""
+CPPFLAGS="-I${PREFIX}/include"
+
+LDFLAGS="-L${LIBDIR} -lhdf5_hl -lhdf5 -lz $LDFLAGS"
+LD_LIBRARY_PATH="${LIBDIR}:$LD_LIBRARY_PATH"
+
+MAKE=make
+
+FLAGS="--prefix ${PREFIX}"
+FLAGS="$FLAGS --disable-examples"
+FLAGS="$FLAGS --disable-utilities"
+FLAGS="$FLAGS --enable-shared"
+#FLAGS="$FLAGS --enable-jna"
+
+export PATH
+export CC
+export CPPFLAGS
+export CFLAGS
+export LDFLAGS
+export LD_LIBRARY_PATH
+
+if test -f Makefile ; then ${MAKE} distclean >/dev/null 2>&1 ; fi
+sh ./configure ${FLAGS}
+
diff --git a/mclean b/mclean
new file mode 100755
index 0000000..dbaa9ca
--- /dev/null
+++ b/mclean
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -x
+find . -name Makefile -exec rm '{}' \;
+find . -name Makefile.in -exec rm '{}' \;
+rm m4/*
+cp /dev/null m4/empty
+rm configure config.guess config.sub config.h.in
+rm depcomp ltmain.sh compile missing install-sh
+rm 1
+rm ncdump/1
diff --git a/nc-config.in b/nc-config.in
index c9345fe..0d536e4 100644
--- a/nc-config.in
+++ b/nc-config.in
@@ -180,7 +180,7 @@ while test $# -gt 0; do
        	;;
 
      --libs)
-       	pkg-config netcdf --libs
+       	PKG_CONFIG_PATH=${prefix}/lib/pkgconfig pkg-config netcdf --libs
        	;;
 
     --prefix)
diff --git a/ncdap_test/test_vara.c b/ncdap_test/test_vara.c
index 1752772..d636d45 100644
--- a/ncdap_test/test_vara.c
+++ b/ncdap_test/test_vara.c
@@ -136,7 +136,7 @@ static int check(size_t* start, size_t* count)
 	size_t offset = odom_count(odom);
 	if(floateq(result[offset],expected[offset])) {
 	    fprintf(stderr,"fail: result[%lu] = %f ; expected[%lu] = %f\n",
-		offset,result[offset],offset,expected[offset]);
+		(long unsigned)offset,result[offset],(long unsigned)offset,expected[offset]);
 	    ok=0;
 	}
         odom_incr(odom);
diff --git a/ncdap_test/testdata3/Makefile.am b/ncdap_test/testdata3/Makefile.am
index 3b70c64..e3578bb 100755
--- a/ncdap_test/testdata3/Makefile.am
+++ b/ncdap_test/testdata3/Makefile.am
@@ -13,8 +13,6 @@ synth4.das synth4.dds synth4.dods \
 synth5.das synth5.dds synth5.dods \
 synth6.das synth6.dds synth6.dods \
 synth7.das synth7.dds synth7.dods \
-synth8.das synth8.dds synth8.dods \
-synth9.das synth9.dds synth9.dods \
 synth10.das synth10.dds synth10.dods \
 123bears.nc.das 123bears.nc.dds 123bears.nc.dods \
 123.nc.das 123.nc.dds 123.nc.dods \
@@ -96,3 +94,8 @@ test.vs5.das test.vs5.dds test.vs5.dods \
 text.nc.das text.nc.dds text.nc.dods \
 whoi.das whoi.dds whoi.dods \
 CMakeLists.txt
+
+# following are not legally convertible to dap2
+#synth8.das synth8.dds synth8.dods
+#synth9.das synth9.dds synth9.dods
+
diff --git a/ncdap_test/testdata3/Makefile.in b/ncdap_test/testdata3/Makefile.in
index 83ac591..76f1ae1 100644
--- a/ncdap_test/testdata3/Makefile.in
+++ b/ncdap_test/testdata3/Makefile.in
@@ -304,8 +304,6 @@ synth4.das synth4.dds synth4.dods \
 synth5.das synth5.dds synth5.dods \
 synth6.das synth6.dds synth6.dods \
 synth7.das synth7.dds synth7.dods \
-synth8.das synth8.dds synth8.dods \
-synth9.das synth9.dds synth9.dods \
 synth10.das synth10.dds synth10.dods \
 123bears.nc.das 123bears.nc.dds 123bears.nc.dods \
 123.nc.das 123.nc.dds 123.nc.dods \
@@ -580,6 +578,10 @@ uninstall-am:
 .PRECIOUS: Makefile
 
 
+# following are not legally convertible to dap2
+#synth8.das synth8.dds synth8.dods
+#synth9.das synth9.dds synth9.dods
+
 # 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 --git a/ncdap_test/testdata3/synth9.dds b/ncdap_test/testdata3/synth9.dds
index 760c223..3975d3b 100644
--- a/ncdap_test/testdata3/synth9.dds
+++ b/ncdap_test/testdata3/synth9.dds
@@ -8,4 +8,4 @@ Dataset {
       } G1;
       Int32 lat[lat=2];
       Int32 long[long=2];
-    } TEST3;
+    } SYNTH9;
diff --git a/ncdap_test/testdata3/synth9.dods b/ncdap_test/testdata3/synth9.dods
index e925768..a948244 100644
--- a/ncdap_test/testdata3/synth9.dods
+++ b/ncdap_test/testdata3/synth9.dods
@@ -4,4 +4,4 @@ Dataset {
           Float32 v4;
         } Q2;
       } Q1;
-    } SYNTH8;
+    } SYNTH9;
diff --git a/ncdap_test/tst_ncdap.sh b/ncdap_test/tst_ncdap.sh
index 42ba0e7..77cc32a 100755
--- a/ncdap_test/tst_ncdap.sh
+++ b/ncdap_test/tst_ncdap.sh
@@ -1,7 +1,5 @@
 #!/bin/sh
 
-set -e
-#set -x
 quiet=0
 leakcheck=0
 
@@ -68,7 +66,7 @@ fi
 rm -fr ${RESULTSDIR}
 mkdir "${RESULTSDIR}"
 
-rm -f ./.dodsrc ./.ocrc
+rm -f ./.dodsrc ./.ocrc ./.daprc
 passcount=0
 xfailcount=0
 failcount=0
@@ -116,13 +114,15 @@ for x in ${TESTSET} ; do
 
 done
 
-rm -f ./.dodsrc
+rm -f ./.dodsrc ./.ocrc ./.daprc
 
 cd ..
+echo "pwd=" `pwd`
 
 totalcount=`expr $passcount + $failcount + $xfailcount`
 okcount=`expr $passcount + $xfailcount`
 
+
 echo "*** PASSED: ${okcount}/${totalcount} ; ${xfailcount} expected failures ; ${failcount} unexpected failures"
 
 #failcount=0
diff --git a/ncdap_test/tst_ncdap_shared.sh b/ncdap_test/tst_ncdap_shared.sh
index 1c969d1..8fbbe7e 100755
--- a/ncdap_test/tst_ncdap_shared.sh
+++ b/ncdap_test/tst_ncdap_shared.sh
@@ -8,11 +8,9 @@
 
 FILEURL="file://${testdata3}"
 
-# Synth8 still fails
+# Synth8 and Synth9 still fail
 
 SYNTHETICDATA="synth1 synth2 synth3 synth4 synth5 synth6 synth7 synth10"
-SYNTHETICDDS="synth9"
-
 
 ACTUALDATA1=\
 "1990-S1700101.HDF.WVC_Lat 1998-6-avhrr.dat \
@@ -53,5 +51,5 @@ fi
 
 FILETESTS="${SYNTHETICDATA} ${ACTUALDATA1} ${ACTUALDATA2}"
 #DDSTESTS intersect FILETESTS should empty
-DDSTESTS="${SYNTHETICDDS}"
+DDSTESTS=
 
diff --git a/ncgen/generate.c b/ncgen/generate.c
index af7801a..9f4b747 100644
--- a/ncgen/generate.c
+++ b/ncgen/generate.c
@@ -311,14 +311,21 @@ generate_basetype(Symbol* tsym, NCConstant* con, Bytebuffer* codebuf, Datalist*
                 semerror(0,"Compound data fill value not enclosed in {..}, con is NULL.");
             }
         }
+
+        if(!con) { /* fail on null compound. */
+          semerror(constline(con),"NULL compound data.");
+          break;
+        }
+
         if(!islistconst(con)) {/* fail on no compound*/
             semerror(constline(con),"Compound data must be enclosed in {..}");
         }
+
         data = con->value.compoundv;
         nfields = listlength(tsym->subnodes);
         dllen = datalistlen(data);
         if(dllen > nfields) {
-            semerror(con->lineno,"Datalist longer than the number of compound fields");
+          semerror(con->lineno,"Datalist longer than the number of compound fields");
             break;
         }
         generator->listbegin(generator,LISTCOMPOUND,listlength(tsym->subnodes),codebuf,&uid);
diff --git a/ncgen/ncgen.y b/ncgen/ncgen.y
index d959d4d..1a0293d 100644
--- a/ncgen/ncgen.y
+++ b/ncgen/ncgen.y
@@ -185,7 +185,7 @@ NCConstant       constant;
         _ENDIANNESS
         _NOFILL
         _FLETCHER32
-	DATASETID	
+	DATASETID
 
 %type <sym> ident typename primtype dimd varspec
 	    attrdecl enumid path dimref fielddim fieldspec
@@ -233,7 +233,7 @@ namedgroup: GROUP ident '{'
             {
 		Symbol* id = $2;
                 markcdf4("Group specification");
-		if(creategroup(id) == NULL) 
+		if(creategroup(id) == NULL)
                     yyerror("duplicate group declaration within parent group for %s",
                                 id->name);
             }
@@ -243,7 +243,7 @@ namedgroup: GROUP ident '{'
             '}'
 	    attrdecllist
 	    ;
-      
+
 typesection:    /* empty */
                 | TYPES {}
 		| TYPES typedecls
@@ -299,7 +299,7 @@ enumdecl: primtype ENUM typename
                    listpush($3->subnodes,(void*)eid);
                    eid->container = $3;
 		   eid->typ.basetype = $3->typ.basetype;
-                }               
+                }
                 listsetlength(stack,stackbase);/* remove stack nodes*/
               }
           ;
@@ -318,7 +318,7 @@ enumidlist:   enumid
 		      if(strcmp($3->name,elem->name)==0)
   	                yyerror("duplicate enum declaration for %s",
         	                 elem->name);
-		    }    	    
+		    }
 		    listpush(stack,(void*)$3);
 		}
 	    ;
@@ -385,7 +385,7 @@ compounddecl: COMPOUND typename '{' fields '}'
 	        Symbol* fsym = (Symbol*)listget(stack,i);
 		fsym->container = $2;
  	        listpush($2->subnodes,(void*)fsym);
-	    }    	    
+	    }
 	    listsetlength(stack,stackbase);/* remove stack nodes*/
           }
             ;
@@ -480,7 +480,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",$1->name);
                 ;
 
 dimd:           ident
-                   { 
+                   {
                      $1->objectclass=NC_DIM;
                      if(dupobjectcheck(NC_DIM,$1))
                         yyerror( "Duplicate dimension declaration for %s",
@@ -672,7 +672,7 @@ varref:
 	  ;
 
 typeref:
-	type_var_ref	  
+	type_var_ref
 	    {Symbol* tsym = $1;
 		if(tsym->objectclass != NC_TYPE) {
 		    derror("Undefined or forward referenced type: %s",tsym->name);
@@ -682,8 +682,8 @@ typeref:
 	    }
 	;
 
-type_var_ref: 
-	path 
+type_var_ref:
+	path
 	    {Symbol* tvsym = $1; Symbol* sym;
 		/* disambiguate*/
 		tvsym->objectclass = NC_VAR;
@@ -956,7 +956,7 @@ install(const char *sname)
 {
     Symbol* sp;
     sp = (Symbol*) emalloc (sizeof (struct Symbol));
-    memset((void*)sp,0,sizeof(struct Symbol));    
+    memset((void*)sp,0,sizeof(struct Symbol));
     sp->name = nulldup(sname);
     sp->next = symlist;
     sp->lineno = lineno;
@@ -1028,7 +1028,7 @@ makeconstdata(nc_type nctype)
 	    len = bbLength(lextext);
 	    con.value.stringv.len = len;
 	    con.value.stringv.stringv = bbDup(lextext);
-	    bbClear(lextext);	    
+	    bbClear(lextext);
 	    }
 	    break;
 
@@ -1061,7 +1061,7 @@ makeconstdata(nc_type nctype)
 	default:
 	    yyerror("Data constant: unexpected NC type: %s",
 		    nctypename(nctype));
-	    con.value.stringv.stringv = NULL;    
+	    con.value.stringv.stringv = NULL;
 	    con.value.stringv.len = 0;
     }
     return con;
@@ -1233,7 +1233,7 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
 	break;
     default: PANIC1("unexpected special tag: %d",tag);
     }
-    
+
     if(tag == _FORMAT_FLAG) {
 	/* Watch out: this is a global attribute */
 	struct Kvalues* kvalue;
@@ -1241,11 +1241,13 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
 
 	/* Use the table in main.c */
         for(kvalue = legalkinds; kvalue->name; kvalue++) {
-	    if(strcmp(sdata, kvalue->name) == 0) {
-		/*Main.*/format_flag = kvalue->k_flag;
-		found = 1;
-	        break;
-	    }
+          if(sdata) {
+            if(strcmp(sdata, kvalue->name) == 0) {
+              /*Main.*/format_flag = kvalue->k_flag;
+              found = 1;
+              break;
+            }
+          }
 	}
 	if(!found)
 	    derror("_Format: illegal value: %s",sdata);
@@ -1278,15 +1280,17 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
         } else switch (tag) {
 	    // These will be output as attributes later
             case _STORAGE_FLAG:
-                if(strcmp(sdata,"contiguous") == 0)
-                    special->_Storage = NC_CONTIGUOUS;
-                else if(strcmp(sdata,"chunked") == 0)
-                    special->_Storage = NC_CHUNKED;
-                else
-                    derror("_Storage: illegal value: %s",sdata);
-                special->flags |= _STORAGE_FLAG;
-                break;
-            case _FLETCHER32_FLAG:
+              if(!sdata)
+                derror("_Storage: illegal NULL value");
+              else if(strcmp(sdata,"contiguous") == 0)
+                special->_Storage = NC_CONTIGUOUS;
+              else if(strcmp(sdata,"chunked") == 0)
+                special->_Storage = NC_CHUNKED;
+              else
+                derror("_Storage: illegal value: %s",sdata);
+              special->flags |= _STORAGE_FLAG;
+              break;
+          case _FLETCHER32_FLAG:
                 special->_Fletcher32 = tf;
                 special->flags |= _FLETCHER32_FLAG;
                 break;
@@ -1299,15 +1303,17 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
                 special->flags |= _SHUFFLE_FLAG;
                 break;
             case _ENDIAN_FLAG:
-                if(strcmp(sdata,"little") == 0)
-                    special->_Endianness = 1;
-                else if(strcmp(sdata,"big") == 0)
-                    special->_Endianness = 2;
-                else
-                    derror("_Endianness: illegal value: %s",sdata);
-                special->flags |= _ENDIAN_FLAG;
-                break;
-            case _NOFILL_FLAG:
+              if(!sdata)
+                derror("_Endianness: illegal NULL value");
+              else if(strcmp(sdata,"little") == 0)
+                special->_Endianness = 1;
+              else if(strcmp(sdata,"big") == 0)
+                special->_Endianness = 2;
+              else
+                derror("_Endianness: illegal value: %s",sdata);
+              special->flags |= _ENDIAN_FLAG;
+              break;
+          case _NOFILL_FLAG:
                 special->_Fill = (1 - tf); /* negate */
                 special->flags |= _NOFILL_FLAG;
                 break;
@@ -1374,8 +1380,8 @@ containsfills(Datalist* list)
         NCConstant* con = list->data;
         for(i=0;i<list->length;i++,con++) {
 	    if(con->nctype == NC_COMPOUND) {
-	        if(containsfills(con->value.compoundv)) return 1;	
-	    } else if(con->nctype == NC_FILLVALUE) return 1;	
+	        if(containsfills(con->value.compoundv)) return 1;
+	    } else if(con->nctype == NC_FILLVALUE) return 1;
 	}
     }
     return 0;
@@ -1443,7 +1449,7 @@ evaluate(Symbol* fcn, Datalist* arglist)
 	    }
 	    break;
 	case 0:
-	default: 
+	default:
 	    derror("Expected function signature: time([string,]string)");
 	    goto done;
 	}
@@ -1458,9 +1464,9 @@ evaluate(Symbol* fcn, Datalist* arglist)
 	    cdCalenType timetype = cdStandard;
 	    cdChar2Comp(timetype,timevalue,&comptime);
 	    /* convert comptime to cdTime */
-	    cdtime.year = comptime.year;	    
+	    cdtime.year = comptime.year;
 	    cdtime.month = comptime.month;
-	    cdtime.day = comptime.day;    
+	    cdtime.day = comptime.day;
 	    cdtime.hour = comptime.hour;
 	    cdtime.baseYear = 1970;
 	    cdtime.timeType = CdChron;
@@ -1478,4 +1484,3 @@ evaluate(Symbol* fcn, Datalist* arglist)
 done:
     return result;
 }
-
diff --git a/ncgen/ncgentab.c b/ncgen/ncgentab.c
index 03b6b34..fed41d0 100644
--- a/ncgen/ncgentab.c
+++ b/ncgen/ncgentab.c
@@ -1598,7 +1598,7 @@ yyreduce:
     {
 		Symbol* id = (yyvsp[-1].sym);
                 markcdf4("Group specification");
-		if(creategroup(id) == NULL) 
+		if(creategroup(id) == NULL)
                     yyerror("duplicate group declaration within parent group for %s",
                                 id->name);
             }
@@ -1672,7 +1672,7 @@ yyreduce:
                    listpush((yyvsp[-3].sym)->subnodes,(void*)eid);
                    eid->container = (yyvsp[-3].sym);
 		   eid->typ.basetype = (yyvsp[-3].sym)->typ.basetype;
-                }               
+                }
                 listsetlength(stack,stackbase);/* remove stack nodes*/
               }
 #line 1679 "ncgentab.c" /* yacc.c:1646  */
@@ -1697,7 +1697,7 @@ yyreduce:
 		      if(strcmp((yyvsp[0].sym)->name,elem->name)==0)
   	                yyerror("duplicate enum declaration for %s",
         	                 elem->name);
-		    }    	    
+		    }
 		    listpush(stack,(void*)(yyvsp[0].sym));
 		}
 #line 1704 "ncgentab.c" /* yacc.c:1646  */
@@ -1772,7 +1772,7 @@ yyreduce:
 	        Symbol* fsym = (Symbol*)listget(stack,i);
 		fsym->container = (yyvsp[-3].sym);
  	        listpush((yyvsp[-3].sym)->subnodes,(void*)fsym);
-	    }    	    
+	    }
 	    listsetlength(stack,stackbase);/* remove stack nodes*/
           }
 #line 1779 "ncgentab.c" /* yacc.c:1646  */
@@ -1953,7 +1953,7 @@ fprintf(stderr,"dimension: %s = UNLIMITED\n",(yyvsp[-2].sym)->name);
 
   case 59:
 #line 483 "ncgen.y" /* yacc.c:1646  */
-    { 
+    {
                      (yyvsp[0].sym)->objectclass=NC_DIM;
                      if(dupobjectcheck(NC_DIM,(yyvsp[0].sym)))
                         yyerror( "Duplicate dimension declaration for %s",
@@ -2934,7 +2934,7 @@ install(const char *sname)
 {
     Symbol* sp;
     sp = (Symbol*) emalloc (sizeof (struct Symbol));
-    memset((void*)sp,0,sizeof(struct Symbol));    
+    memset((void*)sp,0,sizeof(struct Symbol));
     sp->name = nulldup(sname);
     sp->next = symlist;
     sp->lineno = lineno;
@@ -3006,7 +3006,7 @@ makeconstdata(nc_type nctype)
 	    len = bbLength(lextext);
 	    con.value.stringv.len = len;
 	    con.value.stringv.stringv = bbDup(lextext);
-	    bbClear(lextext);	    
+	    bbClear(lextext);
 	    }
 	    break;
 
@@ -3039,7 +3039,7 @@ makeconstdata(nc_type nctype)
 	default:
 	    yyerror("Data constant: unexpected NC type: %s",
 		    nctypename(nctype));
-	    con.value.stringv.stringv = NULL;    
+	    con.value.stringv.stringv = NULL;
 	    con.value.stringv.len = 0;
     }
     return con;
@@ -3211,7 +3211,7 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
 	break;
     default: PANIC1("unexpected special tag: %d",tag);
     }
-    
+
     if(tag == _FORMAT_FLAG) {
 	/* Watch out: this is a global attribute */
 	struct Kvalues* kvalue;
@@ -3219,11 +3219,13 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
 
 	/* Use the table in main.c */
         for(kvalue = legalkinds; kvalue->name; kvalue++) {
-	    if(strcmp(sdata, kvalue->name) == 0) {
-		/*Main.*/format_flag = kvalue->k_flag;
-		found = 1;
-	        break;
-	    }
+          if(sdata) {
+            if(strcmp(sdata, kvalue->name) == 0) {
+              /*Main.*/format_flag = kvalue->k_flag;
+              found = 1;
+              break;
+            }
+          }
 	}
 	if(!found)
 	    derror("_Format: illegal value: %s",sdata);
@@ -3254,16 +3256,18 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
             }
             attr = makeattribute(install("_FillValue"),vsym,tsym,list,ATTRVAR);
         } else switch (tag) {
-	    // These will be output as attributes later
-            case _STORAGE_FLAG:
-                if(strcmp(sdata,"contiguous") == 0)
-                    special->_Storage = NC_CONTIGUOUS;
-                else if(strcmp(sdata,"chunked") == 0)
-                    special->_Storage = NC_CHUNKED;
-                else
-                    derror("_Storage: illegal value: %s",sdata);
-                special->flags |= _STORAGE_FLAG;
-                break;
+            // These will be output as attributes later
+          case _STORAGE_FLAG:
+            if(!sdata)
+              derror("_Storage: illegal NULL value");
+            else if(strcmp(sdata,"contiguous") == 0)
+              special->_Storage = NC_CONTIGUOUS;
+            else if(strcmp(sdata,"chunked") == 0)
+              special->_Storage = NC_CHUNKED;
+            else
+              derror("_Storage: illegal value: %s",sdata);
+            special->flags |= _STORAGE_FLAG;
+            break;
             case _FLETCHER32_FLAG:
                 special->_Fletcher32 = tf;
                 special->flags |= _FLETCHER32_FLAG;
@@ -3277,15 +3281,17 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
                 special->flags |= _SHUFFLE_FLAG;
                 break;
             case _ENDIAN_FLAG:
-                if(strcmp(sdata,"little") == 0)
-                    special->_Endianness = 1;
-                else if(strcmp(sdata,"big") == 0)
-                    special->_Endianness = 2;
-                else
-                    derror("_Endianness: illegal value: %s",sdata);
-                special->flags |= _ENDIAN_FLAG;
-                break;
-            case _NOFILL_FLAG:
+              if(!sdata)
+                derror("_Endianness: NULL value.");
+              else if(strcmp(sdata,"little") == 0)
+                special->_Endianness = 1;
+              else if(strcmp(sdata,"big") == 0)
+                special->_Endianness = 2;
+              else
+                derror("_Endianness: illegal value: %s",sdata);
+              special->flags |= _ENDIAN_FLAG;
+              break;
+          case _NOFILL_FLAG:
                 special->_Fill = (1 - tf); /* negate */
                 special->flags |= _NOFILL_FLAG;
                 break;
@@ -3352,8 +3358,8 @@ containsfills(Datalist* list)
         NCConstant* con = list->data;
         for(i=0;i<list->length;i++,con++) {
 	    if(con->nctype == NC_COMPOUND) {
-	        if(containsfills(con->value.compoundv)) return 1;	
-	    } else if(con->nctype == NC_FILLVALUE) return 1;	
+	        if(containsfills(con->value.compoundv)) return 1;
+	    } else if(con->nctype == NC_FILLVALUE) return 1;
 	}
     }
     return 0;
@@ -3421,7 +3427,7 @@ evaluate(Symbol* fcn, Datalist* arglist)
 	    }
 	    break;
 	case 0:
-	default: 
+	default:
 	    derror("Expected function signature: time([string,]string)");
 	    goto done;
 	}
@@ -3436,9 +3442,9 @@ evaluate(Symbol* fcn, Datalist* arglist)
 	    cdCalenType timetype = cdStandard;
 	    cdChar2Comp(timetype,timevalue,&comptime);
 	    /* convert comptime to cdTime */
-	    cdtime.year = comptime.year;	    
+	    cdtime.year = comptime.year;
 	    cdtime.month = comptime.month;
-	    cdtime.day = comptime.day;    
+	    cdtime.day = comptime.day;
 	    cdtime.hour = comptime.hour;
 	    cdtime.baseYear = 1970;
 	    cdtime.timeType = CdChron;
@@ -3456,4 +3462,3 @@ evaluate(Symbol* fcn, Datalist* arglist)
 done:
     return result;
 }
-
diff --git a/oc2/occurlflags.c b/oc2/occurlflags.c
index 429a1c2..be02356 100644
--- a/oc2/occurlflags.c
+++ b/oc2/occurlflags.c
@@ -252,23 +252,25 @@ static int touppercase(int c)
 static void
 initialize(void)
 {
-    struct OCCURLFLAG* p;
-    if(nflags == 0) {  /* initialize */
+  struct OCCURLFLAG* p;
+  if(nflags == 0) {  /* initialize */
 	maxflag = -1;
-        for(p=oc_curlflags;p->name;p++) {
-	    int c;
-	    nflags++; /* count number of flags */
-	    if(p->flag > maxflag) maxflag = p->flag;
-	    /* construct alphabetic radix nameindices */
-	    c = p->name[0];
-	    OCASSERT(c >= 'A' && c <= 'Z');
-	    if(nameindices[c] == NULL)
+    for(p=oc_curlflags;p->name;p++) {
+      int c;
+      nflags++; /* count number of flags */
+      if(p->flag > maxflag) maxflag = p->flag;
+      /* construct alphabetic radix nameindices */
+      c = p->name[0];
+      OCASSERT(c >= 'A' && c <= 'Z');
+      if(nameindices[c] == NULL)
 		nameindices[c] = p;
 	}
-	flagindices = (struct OCCURLFLAG**)calloc(1,(maxflag+1)*sizeof(struct OCCURLFLAG*));
-        for(p=oc_curlflags;p->name;p++)
-	    flagindices[p->flag] = p;
-    }
+
+
+    flagindices = (struct OCCURLFLAG**)calloc(1,(maxflag+(maxflag == -1 ? 2 : 1))*sizeof(struct OCCURLFLAG*));
+    for(p=oc_curlflags;p->name;p++)
+      flagindices[p->flag] = p;
+  }
 }
 
 struct OCCURLFLAG*
@@ -287,7 +289,7 @@ occurlflagbyname(const char* name)
     const char* p;
     char* q;
 
-    if(nflags == 0) initialize();    
+    if(nflags == 0) initialize();
     /* Force upper case */
     for(p=name,q=flagname;*p;p++) {
         int cc = touppercase(*p);
@@ -309,7 +311,7 @@ occurlflagbyname(const char* name)
 struct OCCURLFLAG*
 occurlflagbyflag(int flag)
 {
-    if(nflags == 0) initialize();    
+    if(nflags == 0) initialize();
     if(flag >= 0 || flag <= maxflag)
 	return flagindices[flag];
     return NULL;
diff --git a/oc2/occurlfunctions.c b/oc2/occurlfunctions.c
index 29fee70..daeb8ca 100644
--- a/oc2/occurlfunctions.c
+++ b/oc2/occurlfunctions.c
@@ -215,7 +215,7 @@ ocset_flags_perlink(OCstate* state)
 
     if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_ENCODING);
     if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_NETRC);
-    if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_VERBOSE);
+//    if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_VERBOSE);
     if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_TIMEOUT);
     if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USERAGENT);
     if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_COOKIEJAR);
diff --git a/wjna b/wjna
new file mode 100644
index 0000000..82e3aa3
--- /dev/null
+++ b/wjna
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+REBUILD=1
+
+#VS=12
+VS=10
+
+JNADIR="c:/opt/jna"
+
+PREFIX="${JNADIR}"
+
+CPP="${JNADIR}/deps/shared"
+
+FLAGS=""
+
+FLAGS="-DCMAKE_INSTALL_PREFIX=${PREFIX} ${FLAGS}"
+FLAGS="-DCMAKE_PREFIX_PATH=${CPP} ${FLAGS}"
+
+FLAGS="-DHDF5_DIR=${CPP}/cmake/hdf5 ${FLAGS}"
+
+FLAGS="-DENABLE_CONVERSION_WARNINGS=OFF ${FLAGS}"
+FLAGS="-DBUILD_UTILITIES=OFF ${FLAGS}"
+FLAGS="-DENABLE_EXAMPLES=OFF ${FLAGS}"
+FLAGS="-DENABLE_V2_API=OFF ${FLAGS}"
+FLAGS="-DENABLE_JNA=ON ${FLAGS}"
+
+if test "x${REBUILD}" = x1 ; then
+  rm -fr ./build
+  mkdir build
+fi
+pushd build
+if test "x${REBUILD}" = x1 ; then
+cmake -G"Visual Studio ${VS}" ${FLAGS} ..
+fi
+cmake --build . --config Release
+cmake --build . --target INSTALL
+popd
+
+pushd ${PREFIX}
+sh ../setup
+popd
+
+exit

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/netcdf.git



More information about the Pkg-grass-devel mailing list