Commit Graph

31 Commits

Author SHA1 Message Date
Ward Fisher
02937d2d0e ncdump, other directories updated with copyright stanza. 2018-12-06 15:36:53 -07:00
Greg Sjaardema
cd011cd1bb Eliminate compiler warnings (and code error) 2018-11-14 11:00:47 -07:00
Dennis Heimbigner
4636584d5b Revert/Improve nc_create + NC_DISKLESS behavior
re: https://github.com/Unidata/netcdf-c/issues/1154

Inadvertently, the behavior of NC_DISKLESS with nc_create() was
changed in release 4.6.1. Previously, the NC_WRITE flag needed
to be explicitly used with NC_DISKLESS in order to cause the
created file to be persisted to disk.

Additional analyis indicated that the current NC_DISKLESS
implementation was seriously flawed.

This PR attempts to clean up and regularize the situation with
respect to NC_DISKLESS control. One important aspect of diskless
operation is that there are two different notions of write.

1. The file is read-write vs read-only when using the netcdf API.
2. The file is persisted or not to disk at nc_close().

Previously, these two were conflated. The rules now are
as follows.

1. NC_DISKLESS + NC_WRITE means that the file is read/write using the netcdf API
2. NC_DISKLESS + NC_PERSIST means that the file is persisted to a disk file at nc_close.
3. NC_DISKLESS + NC_PERSIST + NC_WRITE means both 1 and 2.

The NC_PERSIST flag is new and takes over the obsolete NC_MPIPOSIX flag.
NC_MPIPOSIX is still defined, but is now an alias for the NC_MPIIO flag.

It is also now the case that for netcdf-4, NC_DISKLESS is independent
of NC_INMEMORY and in fact it is an error to specify both flags
simultaneously.

Finally, the MMAP code was fixed to use NC_PERSIST as well.
Also marked MMAP as deprecated.

Also added a test case to test various combinations of NC_DISKLESS,
NC_PERSIST, and NC_WRITE.

This PR affects a number of files and especially test cases
that used NC_DISKLESS.

Misc. Unrelated fixes
1. fixed some warnings in ncdump/dumplib.c
2018-10-10 13:32:17 -06:00
Dennis Heimbigner
4db4393e69 Begin changing over to use strlcat instead of strncat because
strlcat provides better protection against buffer overflows.

Code is taken from the FreeBSD project source code. Specifically:
https://github.com/freebsd/freebsd/blob/master/lib/libc/string/strlcat.c
License appears to be acceptable, but needs to be checked by e.g. Debian.

Step 1:
1. Add to netcdf-c/include/ncconfigure.h to use our version
   if not already available as determined by HAVE_STRLCAT in config.h.
2. Add the strlcat code to libdispatch/dstring.c
3. Turns out that strlcat was already defined in several places.
   So remove it from:
	ncgen3/genlib.c
	ncdump/dumplib.c
3. Define strlcat extern definition in ncconfigure.h.
4. Modify following directories to use strlcat:
	libdap2 libdap4 ncdap_test dap4_test
   Will do others in subsequent steps.
2017-11-23 10:55:24 -07:00
Dennis Heimbigner
9e2d6faaf6 Solve issue https://github.com/Unidata/netcdf-c/issues/359
from e-support OYW-455599.

Problem was that in nctime.c#CDMonthDay, it was setting up
the month -> #days table correctly, but it did not use it
because it forgot to check for Cd366, it only checked for Cd365.
2017-07-24 18:59:16 -06:00
Dennis Heimbigner
3db4f013bf Primary change: add dap4 support
Specific changes:
1. Add dap4 code: libdap4 and dap4_test.
   Note that until the d4ts server problem is solved, dap4 is turned off.
2. Modify various files to support dap4 flags:
	configure.ac, Makefile.am, CMakeLists.txt, etc.
3. Add nc_test/test_common.sh. This centralizes
   the handling of the locations of various
   things in the build tree: e.g. where is
   ncgen.exe located. See nc_test/test_common.sh
   for details.
4. Modify .sh files to use test_common.sh
5. Obsolete separate oc2 by moving it to be part of
   netcdf-c. This means replacing code with netcdf-c
   equivalents.
5. Add --with-testserver to configure.ac to allow
   override of the servers to be used for --enable-dap-remote-tests.
6. There were multiple versions of nctypealignment code. Try to
   centralize in libdispatch/doffset.c and include/ncoffsets.h
7. Add a unit test for the ncuri code because of its complexity.
8. Move the findserver code out of libdispatch and into
   a separate, self contained program in ncdap_test and dap4_test.
9. Move the dispatch header files (nc{3,4}dispatch.h) to
   .../include because they are now shared by modules.
10. Revamp the handling of TOPSRCDIR and TOPBUILDDIR for shell scripts.
11. Make use of MREMAP if available
12. Misc. minor changes e.g.
	- #include <config.h> -> #include "config.h"
	- Add some no-install headers to /include
	- extern -> EXTERNL and vice versa as needed
	- misc header cleanup
	- clean up checking for misc. unix vs microsoft functions
13. Change copyright decls in some files to point to LICENSE file.
14. Add notes to RELEASENOTES.md
2017-03-08 17:01:10 -07:00
dmh
413e49d758 1. There were several bugs in ncdump/dumplib.c
that were not taking the CDF-5 format into account.

2. Had to update ncgen.1 man page to define the new
   k-flag rules to deal with cdf-5.

3. Had to fix some tests that use 'cmp' for comparison;
   this really should be deprecated.

3. There was a bug in configure.ac with respect
   to using the enable-netcdf-4 flag vs
   using disable-netcdf-4.
2015-11-06 17:03:28 -07:00
dmh
859f105005 merge-squash 2015-08-15 16:26:35 -06:00
Ward Fisher
e56c67a772 Added an assertion, although I'm not convinced it's strictly needed, it is for safety now. Will assess whether it can be reached (at a glance it's not reachable, but static analysis says it is) or not. Will update as needed. 2015-02-11 13:29:40 -07:00
Russ Rew
e4f9350c23 Quincey's fixes for NCF-56, "netcdf-4 can't read HDF5 scalar atts".
Also added ability capability for netCDF-4 to write and read NIL
values for string type attributes and variables, so these can be read
if used in HDF5 files.

Include are additions to CMakeLists files to reflect new tests.
2013-07-10 20:09:31 +00:00
Russ Rew
3ef3b35a94 Refactor to share functions between ncdump and nccopy. Merge nccopy
enhancements, based on contributed code from Martin van Driel, to
support -v, -g, -V, and -G options for selecting groups and variables
in output.  Fix all clang warnings from nccopy and ncdump sources, as
well as a few other cleanup changes to testing code.
2013-01-23 17:45:29 +00:00
Russ Rew
7e6ffcb334 Fix ncdump bug on 32-bit platforms 2012-11-20 21:49:28 +00:00
Russ Rew
8e98e3727d Fixed bug NCF-144 (ncdump of variables with multiple unlimited
dimensions).  Added comprehensive tests that include variables with
lots of combinations of 0 through 4 fixed and unlimited dimensions.
2012-11-16 21:37:43 +00:00
Ward Fisher
18d507c00d Changed 'boolean' to 'boolen' to avoid a name conflict under windows. 2012-09-10 22:07:04 +00:00
Ward Fisher
f820e5e5ee 2012-09-10 21:19:57 +00:00
Russ Rew
8d53da4826 Fixed bug "adding a bad _FillValue" bug (NCF-190). Fixed minor bugs
reported by static analysis, including memory leak in ncdump, missing
size_t cast for chunk cache.  Fixed various doc problems, including
byte vs. char issues, missing NC_UBYTE in type list, needed link to
"Building with Windows" page.
2012-08-16 18:31:48 +00:00
Russ Rew
29d2ecbe68 Fix NCF-186, ncdump bug not escaping quotes and newlines in string data 2012-08-03 04:40:06 +00:00
Russ Rew
a24c1732b6 Fix unnecessary tests and other minor problems in ncdump identified by Coverity. 2012-07-31 22:17:42 +00:00
Russ Rew
75cb7837fb Speed up nccopy on systems with big disk block sizes 2012-03-08 19:48:57 +00:00
Dennis Heimbigner
aebd11348a 1)Integrate the oc with improved performance 2012-01-29 18:56:29 +00:00
Russ Rew
5fdde5e399 Fix bug NCF-136, ncdump -c looping when dimensions inherited from parent group 2011-11-14 21:27:53 +00:00
Russ Rew
97c954a859 Add -g option to ncdump and test it 2011-09-21 23:10:03 +00:00
Dennis Heimbigner
12d4f46668 2011-09-18 20:57:51 +00:00
Russ Rew
51906ca254 Support Dave Allured's ncdump mods for time-valued attributes. Refactor all ncdump time code into nctime.c. Add '-i' option for strict ISO-8601 time notation. Fix backward compatibility test to not use DBL_MAX, which is the same as IEEE infinity when using only 15 significant digits of precision. Document ncdump time functionality in man page. 2011-09-12 21:31:08 +00:00
Russ Rew
50115604c8 Fixes for NCF-70, ncdump -t printing of time-values attributes. Haven't fixed printing of cell bounds for time-valued variables yet. 2011-08-31 18:28:08 +00:00
Russ Rew
52e525c19c Factor out common functionality in ncdump and nccopy and share between them. 2011-01-05 23:48:47 +00:00
Russ Rew
a46ef6091e another try at fixing MALLOC_CHECK_=3 error on spock 2010-08-11 04:58:14 +00:00
Russ Rew
b971b1d9d8 Don't use C99 inline declarations, gcc4 won't compile them. 2010-07-05 04:06:02 +00:00
Russ Rew
726e4b0457 Don't call nc_inq_dimids when netCDF-3 only 2010-07-05 00:00:23 +00:00
Russ Rew
a90944979f Fix bug identifying coordinate variables in groups, from Felipe
Bertrand's bug report.
2010-07-02 17:20:01 +00:00
Ed Hartnett
18f4bca367 moving to trunk subdir 2010-06-03 13:24:43 +00:00