Commit Graph

889 Commits

Author SHA1 Message Date
Dennis Heimbigner
f1506d552e Change (again), and hopefully simplify, the file model inference algorithm.
* For URL paths, the new approach essentially centralizes all information
  in the URL into the "#mode=" fragment key and uses that value
  to determine the dispatcher for (most) URLs.

* The new approach has the following steps:

  1. canonicalize the path if it is a URL.
  2. use the mode= fragment key to determine the dispatcher
  3. if dispatcher still not determined, then use the mode flags
     argument to nc_open/nc_create to determine the dispatcher.
  4. if the path points to something readable, attempt to read the
     magic number at the front, and use that to determine the dispatcher.
     this case may override all previous cases.

* Misc changes.

  1. Update documentation
  2. Moved some unit tests from libdispatch to unit_test directory.
  3. Fixed use of wrong #ifdef macro in test_filter_reg.c
     [I think this may fix an previously reported esupport query].
2019-09-29 12:59:28 -06:00
Ward Fisher
e7cc899264 Merge branch 'ejh_try2' of https://github.com/NetCDF-World-Domination-Council/netcdf-c into gh1487.wif 2019-09-20 14:04:56 -06:00
Greg Sjaardema
56c0d5cf8a Spelling fixes 2019-09-18 08:03:01 -06:00
edwardhartnett
2cd228bcd4 porting changes from other PR 2019-09-16 11:28:18 -06:00
edwardhartnett
e4ef7b1a65 more unit tests, this time for nc4internal.c 2019-08-21 04:46:00 -06:00
Ed Hartnett
bce3fa6169
Merge branch 'master' into ejh_next 2019-08-16 03:42:32 -06:00
edwardhartnett
94f1a89a40 final removal 2019-08-15 07:05:10 -06:00
edwardhartnett
c7c2892de5 clean up 2019-08-15 06:53:57 -06:00
edwardhartnett
2077729abc removed base_pe functions from dispatch table 2019-08-15 06:51:06 -06:00
edwardhartnett
60f436e7ee starting to remove obsolete _CRAYMPP macros 2019-08-14 06:13:45 -06:00
edwardhartnett
dce6f32a76 documentation 2019-08-13 14:57:43 -06:00
edwardhartnett
f007523826 fixed missing dependency in unit_test Makefile.am 2019-08-13 11:06:06 -06:00
edwardhartnett
978707c319 only run slow nclist test if --enable-large-file-tests is used 2019-08-13 10:55:44 -06:00
edwardhartnett
88077fe26e more comments 2019-08-13 06:31:06 -06:00
edwardhartnett
821b749186 removed unnecessary checking in find_in_NCList() 2019-08-13 06:03:48 -06:00
edwardhartnett
d76114aab3 more testing, sorting out some memory issues in test 2019-08-13 05:45:03 -06:00
edwardhartnett
8b8ece4f4b more testing of nclistmgr.c 2019-08-09 13:49:52 -06:00
edwardhartnett
f20db2e024 more documentation 2019-08-09 11:13:55 -06:00
edwardhartnett
d558873c93 documented functions in nclistmgr.c 2019-08-09 09:15:59 -06:00
edwardhartnett
916802bf4c starting to add doxygen docs for nclistmgr.c 2019-08-09 08:48:28 -06:00
edwardhartnett
fb32957b2b whitespace cleanup 2019-08-09 08:45:39 -06:00
edwardhartnett
3a9207d55c more changes for user-defined formats 2019-08-03 18:33:43 -06:00
edwardhartnett
83c6cd58a7 more changes in support of user-defined formats 2019-08-03 17:19:13 -06:00
edwardhartnett
170c5b0901 removed NC from open in dispatch table 2019-08-01 14:30:20 -06:00
Dennis Heimbigner
4c92fc3405 Remove netcdf-4 conditional on the dispatch table.
Partially address: https://github.com/Unidata/netcdf-c/issues/1056

Currently, some of the entries in the dispatch table
are conditional'd on USE_NETCDF4.

As a step in upgrading the dispatch table for use
with user-defined tables, we remove that conditional.
This means that all dispatch tables must implement the
netcdf-4 specific functions even if only to make them
return NC_ENOTNC4. To simplify this, a set of default
functions are defined in libdispatch/dnotnc4.c to provide this
behavior. The file libdispatch/dnotnc3.c is also relevant to
this.

The primary fix is to modify the various dispatch tables to
remove the conditional and use the functions in
libdispatch/dnotnc4.c as appropriate. In practice, all of the
existing tables are prepared to handle this, so the only
real change is to remove the conditionals.

Misc. Unrelated fixes
1. Fix some annoying warnings in ncvalidator.

Notes:
1. This has not been tested with either pnetcdf or hdf4 enabled.
   When those are enabled, it is possible that there are still
   some conditionals that need to be fixed.
2019-07-20 13:59:40 -06:00
Dennis Heimbigner
000f22b12a Fix encoding of a DAP2 constraint specified outside the URL.
re: github issue #1425

The 'ncdump -v' command causes a constraint to be sent
to the opendap code (in libdap2). This is a separate path
from specifying the constraint via a URL.

This separate path encoded its constraint using code independent
of and duplicative of that provided by ncuri.c and this duplicate
code did not properly encode the constraint, which might include
square brackets.

Solution chosen here was to get rid of the duplicate code and
ensure that all URL escaping is performed in the ncuribuild function
in the ncuri.c file.

Also removed the use of the NEWESCAPE conditional in ncuri.c
because it is no longer needed.
2019-07-14 15:56:29 -06:00
Ward Fisher
9db0e26b80
Merge pull request #1432 from NetCDF-World-Domination-Council/ejh_dispatch
create header netcdf_dispatch.h
2019-07-09 12:58:28 -06:00
Ward Fisher
281ac5ff15
Merge pull request #1431 from NetCDF-World-Domination-Council/ejh_remove_macro
remove unused macro USE_REFCOUNT
2019-07-09 12:58:17 -06:00
Ward Fisher
8b1c4e3ff8
Merge pull request #1410 from Unidata/ansifix2.dmh
Fix ncconfigure.h to solve a -ansi problem with strdup()
2019-07-09 12:57:31 -06:00
Ed Hartnett
d408006d06 handle UDF formats on NC_create() 2019-07-05 13:39:50 -06:00
Ed Hartnett
620f17d5ef finidhed removing refcount from dfile.c 2019-07-04 15:46:15 -06:00
Ed Hartnett
f6ea863011 finidhed removing refcount from dfile.c 2019-07-04 15:45:49 -06:00
Ed Hartnett
0727ccf5ad starting to take out ref count stuff 2019-07-04 15:45:03 -06:00
Ed Hartnett
edf1f92042 starting to take out ref count stuff 2019-07-04 15:44:01 -06:00
Ed Hartnett
41cef20d1a fixed handling of NULL name in nc_open 2019-06-30 04:56:24 -06:00
Dennis Heimbigner
4de0c555e1 Fix nctime to not include ncconfigure.h
re: https://github.com/Unidata/netcdf-c/pull/1411

Turns out that the real problem here is that nctime.c
is including ncconfigure.h rather than config.h.
2019-05-30 12:47:50 -06:00
Ward Fisher
d6a3944199
Merge pull request #1409 from Unidata/nccopydefault.dmh
Nccopy was overriding default chunking when it should not.
2019-05-29 15:26:09 -06:00
Dennis Heimbigner
06498ff16a various fixes 2019-05-23 16:35:03 -06:00
Ed Hartnett
1d9f28fb70 changing USE_NETCDF4 to USE_HDF5 in dfilter.c 2019-05-22 07:36:22 -06:00
Dennis Heimbigner
331a1f1c63 Centralize calls to curl_global_init and curl_global_cleanup
re: https://github.com/Unidata/netcdf-c/issues/1388

1. Centralize calls to curl_global_init and curl_global_cleanup
   to libdispatch/ddispatch.c
2. Make the above calls if options require curl: currently
   any of DAP2, DAP4, or byterange.
3. Side issue: Fix obscure bug in mmapio.c involving non-persistent mmap.
2019-05-03 13:22:54 -06:00
Ward Fisher
3b34a82e19 Merge branch 'master' into threads_part1.dmh 2019-05-01 14:41:13 -06:00
Ward Fisher
5410967b00 Merge branch 'master' into addfilter.dmh 2019-04-30 14:51:25 -06:00
Ward Fisher
6446ff37c5
Merge pull request #1368 from jschueller/mingw
Fix MinGW build
2019-04-03 17:32:22 -06:00
Dennis Heimbigner
6934aa2e8b Thread safety: step 1: cleanup
re: https://github.com/Unidata/netcdf-c/issues/1373 (partial)

* Mark some global constants be const to indicate to make them easier to track.
* Hide direct access to the ncrc_globalstate behind a function call.
* Convert dispatch tables to constants (except the user defined ones)
  This has some consequences in terms of function arguments needing to be marked
  as const also.
* Remove some no longer needed global fields
* Aggregate all the globals in nclog.c
* Uniformly replace nc_sizevector{0,1} with NC_coord_{zero,one}
* Uniformly replace nc_ptrdffvector1 with NC_stride_one
* Remove some obsolete code
2019-03-30 14:06:20 -06:00
Ward Fisher
752a040bb0 Merge branch 'master' into cleanup.wif 2019-03-26 15:33:40 -06:00
Dennis Heimbigner
4026323383 Fix minor --ansi warnings in dinfermodel.c and bzlib.c
re:

Needed to provide centralized definitions of fileno and fdopen;
also need to #include sys/types.h
2019-03-22 15:16:47 -06:00
Ward Fisher
5ee026f843 Cleaned up some errant conflict resolution fenceposting. 2019-03-21 15:56:27 -06:00
Ward Fisher
cb7bec8dbc Merge branch 'master' into cleanup.wif 2019-03-21 14:39:57 -06:00
Dennis Heimbigner
8d0bced60d Allow in-line definition of filters
Priority: Low

re: issue https://github.com/Unidata/netcdf-c/issues/1329

HDF5 has the ability to programmatically define new filters,
as opposed to using HDF5_PLUGIN_PATH env variable.
This PR adds support for that feature.
Not clear how useful this is, though.
See docs/filters.md for details.
2019-03-21 11:33:27 -06:00
Ward Fisher
e2b31ffae4
Merge branch 'master' into byterange.dmh 2019-03-19 12:05:44 -06:00
Ward Fisher
3de2cf3d55
Merge pull request #1346 from wkliao/nc_mpiio
move checking for flag conflict to nc_create_par
2019-03-19 12:04:38 -06:00
Julien Schueller
a3c2031071 Fix MinGW build
Som Win32 includes are also needed on MinGW
2019-03-17 09:18:56 +01:00
Ward Fisher
b066336b5c Merge branch 'master' into cleanup.wif 2019-03-06 12:25:44 -07:00
Ward Fisher
3bed028d52 Correcting div by zero error, minor resource leak. 2019-03-05 14:24:17 -07:00
Wei-keng Liao
142cd5b5ca as NC_MPIIO has deprecated, move checking for flag conflict to nc_create_par 2019-02-26 11:01:35 -06:00
Ed Hartnett
26f4bfdd28 added comment about function ordering 2019-02-25 12:23:54 -07:00
Ed Hartnett
d0a6e9c246 more work on var documentation 2019-02-25 12:20:53 -07:00
Ed Hartnett
ea5e7f9b9a fixing some documentation issues in hdf5var.c 2019-02-25 10:44:05 -07:00
Ed Hartnett
d47006fd3f fixing some documentation issues in hdf5var.c 2019-02-25 10:32:17 -07:00
Ed Hartnett
160186d52e more doc cleanup 2019-02-25 08:35:18 -07:00
Ed Hartnett
c2c2f8e044 cleanup of var docs 2019-02-25 08:25:12 -07:00
Ed Hartnett
c620d8c5c7 more documentation cleanup 2019-02-25 08:15:43 -07:00
Ed Hartnett
2f8f5baf0f more documentation cleanup 2019-02-25 08:14:42 -07:00
Ed Hartnett
3277ef2359 formatting cleanup 2019-02-25 07:58:55 -07:00
Ed Hartnett
0e204ebe0c formatting cleanup 2019-02-25 07:55:29 -07:00
Ed Hartnett
7dc9097d62 cleaned away uncorrect section 2019-02-25 07:48:29 -07:00
Ed Hartnett
2dd178bfa1 documentation cleanup 2019-02-25 07:37:23 -07:00
Ed Hartnett
f83c8a5d3a documentation of dim rename for netcdf-4 vs classic 2019-02-25 07:32:06 -07:00
Ed Hartnett
fba4c19953 documentation cleanup 2019-02-25 07:28:35 -07:00
Ed Hartnett
05d549e900 fixed doxygen warnings in RELEASE_NOTES.md 2019-02-25 07:16:47 -07:00
Ed Hartnett
3997511379 documentation work 2019-02-25 06:50:53 -07:00
Ed Hartnett
953e0ab668 documentation work 2019-02-25 06:46:32 -07:00
Ed Hartnett
f02d1151f6 documentation work 2019-02-25 06:41:13 -07:00
Dennis Heimbigner
0c59e13bf7 Master merge, conflict resolution, cleanup 2019-02-24 16:54:13 -07:00
Dennis Heimbigner
45a8a265b8 master merge 2019-02-23 17:14:12 -07:00
Ward Fisher
6c3b7a0077
Merge branch 'master' into urlauth.dmh 2019-02-13 16:32:38 -07:00
Dennis Heimbigner
a1f080db19
Merge branch 'master' into byterange.dmh 2019-02-13 14:45:53 -07:00
Dennis Heimbigner
4cd440dd96 URL with username+pwd in url is not working.
re: esupport (DVK-211460)

Turns out it was a typo in libdispatch/dauth.c
Fix is to Change:
HTTP.USERNAME -> HTTP.CREDENTIALS.USERNAME
and
HTTP.PASSWORD-> HTTP.CREDENTIALS.PASSWORD
2019-02-09 15:06:03 -07:00
Ward Fisher
3a14251dd9
Merge branch 'master' into bigend.dmh 2019-02-07 14:28:39 -07:00
Ward Fisher
1fde39c8d7
Merge branch 'master' into byterange.dmh 2019-02-07 14:28:23 -07:00
Dennis Heimbigner
e4cb5c89a3 Made some mistakes in handling the PNETCDF case.
So, fixed the following:
1. Forgot to check for NC_FORMATX_PNETCDF case
   in one of the switches in NC_infermodel.
2. Accidentally turned on both the NC_64BIT_OFFSET
   and the NC_64BIT_DATA mode flags.
2019-02-01 14:31:44 -07:00
Dennis Heimbigner
8714066b18 Fix errors when building on big-endian machine
re: issue https://github.com/Unidata/netcdf-c/issues/1278
re: issue https://github.com/Unidata/netcdf-c/issues/876
re: issue https://github.com/Unidata/netcdf-c/issues/806

* Major change to the handling of 8-byte parameters for nc_def_var_filter.
  The old code was not well thought out.
  * The new algorithm is documented in docs/filters.md.
  * Added new utility file plugins/H5Zutil.c to support
  * Modified plugins/H5Zmisc.c to use new algorithm
  the new algorithm.
  * Renamed include/ncfilter.h to include/netcdf_filter.h
    and made it an installed header so clients can access the
    new algorithm utility.
  * Fixed nc_test4/tst_filterparser.c and nc_test4/test_filter_misc.c
    to use the new algorithm
* libdap4/ fixes:
  * d4swap.c has an error in the endian pre-processing such
    that record counts were not being swapped correctly.
  * d4data.c had an error in that checksums were being computed
    after endian swapping rather than before.
* ocinitialize() was never being called, so xxdr bigendian handling
  was never set correctly.
  * Required adding debug statements to occompile
* Found and fixed memory leak in ncdump.c

Not tested:
* HDF4
* Pnetcdf
* parallel HDF5
2019-01-31 21:13:06 -07:00
Ward Fisher
c49f4256ad Corrected a logic error when compiling with parallel enabled. 2019-01-28 14:05:19 -07:00
Ward Fisher
b27c7d899d Merge branch 'master' into byterange.dmh 2019-01-25 14:50:23 -07:00
Ward Fisher
688c06d50c
Merge branch 'master' into fix-warnings 2019-01-23 15:12:20 -07:00
Ben Boeckel
82d72dfa47 nctime: expand basetime's size
It ends up being `basetime_1 + basetime_2` with a space in between. Make
enough room to ensure that it is not truncated.
2019-01-16 15:55:33 -05:00
Ben Boeckel
8c331222ec warnings: store sizes in size_t 2019-01-16 15:55:33 -05:00
Ben Boeckel
94a0259f0e NC_mktmp: pass the remaining space to strncat
This could overflow if `tmp` only had a few bytes left in its space
given its current contents.
2019-01-16 15:55:33 -05:00
Ben Boeckel
b3f34432a3 warnings: mark unused parameters 2019-01-16 15:55:33 -05:00
Ben Boeckel
eb0b9b8bbd ncuri: check the right preprocessor definition 2019-01-16 15:53:26 -05:00
Ben Boeckel
a747216c33 warnings: mark conditionally used parameters 2019-01-16 15:53:25 -05:00
Ward Fisher
2285e1dfa1 Merge branch 'ejh_test_null_vars_stride' of https://github.com/NetCDF-World-Domination-Council/netcdf-c into pr-aggregation.wif 2019-01-15 15:10:40 -07:00
Ed Hartnett
c278109c9f
Merge branch 'master' into ejh_test_null_vars_stride 2019-01-03 05:18:25 -07:00
Dennis Heimbigner
a7fa2d8d95 It turns out the the type H5FD_class_t was changed
between HDF5 versions 1.8 and 1.10.
So modify H5FDhttp.c to be conditional on the
HDF5 major+minor version from H5public.h
2019-01-02 14:37:23 -07:00
Dennis Heimbigner
b2e24ea2b1 Ignore lgtm alerts 2019-01-01 19:34:12 -07:00
Dennis Heimbigner
bf2746b8ea Provide byte-range reading of remote datasets
re: issue https://github.com/Unidata/netcdf-c/issues/1251

Assume that you have the URL to a remote dataset
which is a normal netcdf-3 or netcdf-4 file.

This PR allows the netcdf-c to read that dataset's
contents as a netcdf file using HTTP byte ranges
if the remote server supports byte-range access.

Originally, this PR was set up to access Amazon S3 objects,
but it can also access other remote datasets such as those
provided by a Thredds server via the HTTPServer access protocol.
It may also work for other kinds of servers.

Note that this is not intended as a true production
capability because, as is known, this kind of access to
can be quite slow. In addition, the byte-range IO drivers
do not currently do any sort of optimization or caching.

An additional goal here is to gain some experience with
the Amazon S3 REST protocol.

This architecture and its use documented in
the file docs/byterange.dox.

There are currently two test cases:

1. nc_test/tst_s3raw.c - this does a simple open, check format, close cycle
   for a remote netcdf-3 file and a remote netcdf-4 file.
2. nc_test/test_s3raw.sh - this uses ncdump to investigate some remote
   datasets.

This PR also incorporates significantly changed model inference code
(see the superceded PR https://github.com/Unidata/netcdf-c/pull/1259).

1. It centralizes the code that infers the dispatcher.
2. It adds support for byte-range URLs

Other changes:

1. NC_HDF5_finalize was not being properly called by nc_finalize().
2. Fix minor bug in ncgen3.l
3. fix memory leak in nc4info.c
4. add code to walk the .daprc triples and to replace protocol=
   fragment tag with a more general mode= tag.

Final Note:
Th inference code is still way too complicated. We need to move
to the validfile() model used by netcdf Java, where each
dispatcher is asked if it can process the file. This decentralizes
the inference code. This will be done after all the major new
dispatchers (PIO, Zarr, etc) have been implemented.
2019-01-01 18:27:36 -07:00
Ed Hartnett
091880fd4d fixed null stride problem for vars calls 2018-12-31 07:36:39 -07:00
Dennis Heimbigner
75759ca957 Separate out the --ansi comment fixes.
re: pull request https://github.com/Unidata/netcdf-c/pull/1242

This pr should be applied before https://github.com/Unidata/netcdf-c/pull/1242.
It fixes only the -ansi '//' comment problems. There may be some
slight conflicts with that other pr when it is applied, since in some
cases I converted #if 0...#endif to /*...*/
2018-12-12 13:23:09 -07:00
Dennis Heimbigner
735ae80928 merge master and fix conflicts 2018-12-12 11:47:54 -07:00
Dennis Heimbigner
643b2159ce
Remove the unused strdup definition from dstring.c
Actually was never needed
2018-12-12 11:32:31 -07:00
Ward Fisher
30ea33435c Merge remote-tracking branch 'origin/license_update.wif' into pr-aggregation.wif 2018-12-11 17:08:21 -05:00
Ward Fisher
25417880f7 Updated libdispatch/ files with copyright notice. 2018-12-06 14:29:57 -07:00
Dennis Heimbigner
1a7531392f Make the netcdf-c library compile with gcc -ansi.
Primary fixes to get -ansi to work.
1. Convert all '//' C++ style comments to /*...*/ or to use #if 0...#endif
2. It turns out that when -ansi is specified, then a number of
   functions no longer are defined in the header -- but they are still
   in the .so file.<br>
   The big example is strdup(). So, added code to include/ncconfig.h to define
   externs for those missing functions that occur in more than one place.
   These are enabled if !_WIN32 && __STDC__ == 1 (__STDC__ is supposed to
   be the equivalent compile time flag to -ansi). Note that this requires
   config.h (which references ncconfig.h) to be included in files where it is
   currently not included. Single uses will be only in the file that uses them.
3. Added mmap test for the MAP_ANONYMOUS flag to configure.ac. Apparently
   this is not always defined with -ansi.
4. fix some large integer constants in nc_test4/tst_atts3.c and nc_test4/tst_filterparser.c
   to avoid compiler complaints.
5. fix a double constant in nc_test4/tst_filterparser.c to avoid compiler complaints.

[Note I suspect #4 and #5 will be a problem on big-endian machines, but we have no way to test]

Misc. Changes:
1. convert more instances of _MSC_VER to _WIN32.
2. added some debugging code to include/nctestserver.h
3. added comment about libdispatch/drc.c always being compiled.
4. modify parser generation in ncgen to remove unneeded files.
2018-12-05 19:20:43 -07:00
Ward Fisher
991dbabfa6 Removed old directory in support of https://github.com/Unidata/netcdf-c/issues/1235 2018-12-04 15:20:26 -07:00
Ed Hartnett
db83d0b4bf got disable-hdf5 builds working without utils 2018-12-01 07:29:58 -07:00
Ed Hartnett
c824ad9ec9 further removal of libhdf5 code from libsrc4 2018-11-28 15:48:08 -07:00
Ed Hartnett
0e9784a867 more changes to separate HDF5 from libsrc4 initialization 2018-11-26 05:44:59 -07:00
Ed Hartnett
9b90c7744e changes in support of separating HDF5 and libsrc4 2018-11-26 04:35:00 -07:00
Dennis Heimbigner
751300ec59 Fix more memory leaks in netcdf-c library
This is a follow up to PR https://github.com/Unidata/netcdf-c/pull/1173

Sorry that it is so big, but leak suppression can be complex.

This PR fixes all remaining memory leaks -- as determined by
-fsanitize=address, and with the exceptions noted below.

Unfortunately. there remains a significant leak that I cannot
solve. It involves vlens, and it is unclear if the leak is
occurring in the netcdf-c library or the HDF5 library.

I have added a check_PROGRAM to the ncdump directory to show the
problem.  The program is called tst_vlen_demo.c To exercise it,
build the netcdf library with -fsanitize=address enabled. Then
go into ncdump and do a "make clean check".  This should build
tst_vlen_demo without actually executing it.  Then do the
command "./tst_vlen_demo" to see the output of the memory
checker.  Note the the lost malloc is deep in the HDF5 library
(in H5Tvlen.c).

I am temporarily working around this error in the following way.
1. I modified several test scripts to not execute known vlen tests
   that fail as described above.
2. Added an environment variable called NC_VLEN_NOTEST.
   If set, then those specific tests are suppressed.

This should mean that the --disable-utilities option to
./configure should not need to be set to get a memory leak clean
build.  This should allow for detection of any new leaks.

Note: I used an environment variable rather than a ./configure
option to control the vlen tests. This is because it is
temporary (I hope) and because it is a bit tricky for shell
scripts to access ./configure options.

Finally, as before, this only been tested with netcdf-4 and hdf5 support.
2018-11-15 10:00:38 -07:00
Ward Fisher
8b75fbb6d9 Corrected VS2010 compilation issue in support of https://github.com/Unidata/netcdf-c/issues/1184 . Solution provided by Mark Rivers on the NetCDF mailing list. 2018-11-08 12:37:03 -07:00
Ward Fisher
0d5219ce82 Merge remote-tracking branch 'origin/ncgenjava.dmh' into v4.6.2-release-branch.wif 2018-11-05 15:10:32 -07:00
Dennis Heimbigner
a2c3ae18ed Fix bug in utf8 -> utf16 conversion with ncgen -l java.
re: issue https://github.com/Unidata/netcdf-c/issues/1171
ncgen was checking validity of the utf8->utf16 conversion
incorrectly.
2018-10-31 21:10:51 -06:00
Dennis Heimbigner
245961de00 re: github issues
https://github.com/Unidata/netcdf-c/issues/1168
    https://github.com/Unidata/netcdf-c/issues/1163
    https://github.com/Unidata/netcdf-c/issues/1162

This PR partially fixes memory leaks in the netcdf-c library,
in the ncdump utility, and in some test cases.

The netcdf-c library now runs memory clean with the assumption
that the --disable-utilities option is used. The primary remaining
problem is ncgen. Once that is fixed, I believe the netcdf-c library
will run memory clean with no limitations.

Notes
-----------
1. Memory checking was performed using gcc -fsanitize=address.
   Valgrind-based testing has yet to be performed.
2. The pnetcdf, hdf4, and examples code has not been tested.

Misc. Non-leak changes
1. Make tst_diskless2 only run when netcdf4 is enabled (issue 1162)
2. Fix CmakeLists.txt to turn off logging if ENABLE_NETCDF_4 is OFF
3. Isolated all my debug scripts into a single top-level directory
   called debug
4. Fix some USE_NETCDF4 dependencies in nc_test and nc_test4 Makefile.am
2018-10-30 20:48:12 -06:00
Ed Hartnett
91ec0109f3 more testing for late fill setting 2018-10-17 09:44:18 -06: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
a5a34f6aba
Merge branch 'master' into nc_mpiio_nc_mpiposix 2018-10-06 13:33:55 -06:00
Wei-keng Liao
82d7ae2a93 revise comments about collective I/O mode 2018-10-02 01:19:44 -05:00
Dennis Heimbigner
8072d1f6bb Modify DAP2 and DAP4 to optionally allow Fillvalue/Variable mismatch
re: issue https://github.com/Unidata/netcdf-c/issues/1151

Modify DAP2 and DAP4 code to handle case when _FillValue type is not
same as the parent variable type.

Specifically:
1. Define a parameter [fillmismatch] to allow this mismatch;
   default is to disallow.
2. If allowed, forcibly change the type of the _FillValue to match
   the parent variable.
3. If allowed Convert the values to match new type
4. Generate a log message
5. if not allowed, then fail

Implementing this required some changes to ncdap_test/dapcvt.c
Also added test cases.

Minor Unrelated Changes:
1. There were a number of warnings about e.g.
   assigning a const char* to a char*. Fix these
2. In nccopy.1, replace .NP with .IP "n"
   (re PR https://github.com/Unidata/netcdf-c/pull/1144)
3. fix minor error in ncdump/ocprint
2018-10-01 15:51:43 -06:00
Wei-keng Liao
0ed70756cc Ignore flags NC_MPIIO and NC_MPIPOSIX. 2018-09-22 20:22:34 -05:00
Wei-keng Liao
01da14da6f if cmode does not contain NC_NETCDF4, then it is for PnetCDF 2018-09-22 18:21:45 -05:00
Wei-keng Liao
bc63c08f41 add a check for MPI_Info_f2c 2018-09-21 17:32:36 -05:00
Wei-keng Liao
740a50d1f2 add more descriptions for parallel APIs 2018-09-20 12:59:19 -05:00
Wei-keng Liao
0853b3c9ee Merge branch 'pnetcdf_driver' of github.com:wkliao/netcdf-c into pnetcdf_driver 2018-09-20 11:50:27 -05:00
Wei-keng Liao
5ed6c239e1 More replacement of "parallel-netcdf" with "PnetCDF". 2018-09-20 11:45:25 -05:00
Ward Fisher
5b5311ef80
Merge branch 'master' into pnetcdf_driver 2018-09-18 12:21:11 -06:00
Wei-keng Liao
28512f77f0 remove unused variables 2018-09-18 01:27:57 -05:00
Wei-keng Liao
83608143ee more checks of NC_ENOTBUILT 2018-09-17 17:18:48 -05:00
Wei-keng Liao
48da78e133 Use PnetCDF instead of parallel-netcdf to avoid confusion with
parallel netcdf4. Also, update PnetCDF web page.
2018-09-17 17:18:48 -05:00
Wei-keng Liao
d24f292077 return NC_ENOTBUILT when CDF5 is not enabled but NC_64BIT_DATA is used 2018-09-17 17:18:48 -05:00
Wei-keng Liao
ec2b3250a3 Use cmode for nc_create() and omode for nc_open() 2018-09-17 17:18:48 -05:00
Wei-keng Liao
2e85316dbb Improve parallel create/open mode logic.
1. When model is detected as NC_FORMATX_NC3 and is called from
   nc_create_par, change the model to NC_FORMATX_PNETCDF.
2. When called from nc_create() or nc_open(), using NC_MPIIO or
   NC_MPIPOSIX is considered invalid.
3. Handle the case when NETCDF4 is not enabled but cmode/omode
   contains NC_NETCDF4.
4. Handle the case when PNETCDF is not enabled but cmode/omode
   contains NC_PNETCDF.
5. Correct comments about PnetCDF only handles CDF-5 files.
6. Add a check for MPI_ERR_NO_SUCH_FILE error class.

Make NC_check_file_type() static, as it is used in dfile.c only.
2018-09-17 17:18:48 -05:00
Wei-keng Liao
a537312895 nc_create_par() and nc_open_par() implies parallel I/O, so
using NC_MPIIO or NC_MPIPOSIX explicitly is not necessary.
These 2 subroutines call NC_create() and NC_open() with argument
useparallel set to 1, which should be used to tell which I/O
driver to use underneath.
2018-09-17 17:18:48 -05:00
Ward Fisher
5259b4b1e8
Merge branch 'master' into ejh_hdf5_sep_next_2 2018-09-17 14:53:55 -06:00
Dennis Heimbigner
108dc0f01d Fix szip filter handling code and correspondingtests
re: https://github.com/Unidata/netcdf-c/issues/972

The current szip plugin code in the HDF5 library has some
unexpected behaviors that require some changes to how
nc_inq_var_szip is implemented and to the corresponding tests:
nc_test4/{test_szip,tst_vars3}.

Specifically, the following can happen:

1. The number of parameters provided by the user will be two,
   but the number of parameters returned by nc_inq_var_filter
   will be four because the HDF5 code (H5Zszip) will add two
   extra parameters for internal use. It turns out that the two
   parameters provided when calling nc_def_var_filter correspond
   to the first two parameters of the four parameters returned
   by nc_inq_var_filter.

2. The nc_inq_var_szip values corresponding to the ones provided
   by the caller may be different than those provided by
   nc_def_var_filter.  The value of the options_mask argument is
   known to add additional flag bits, and the pixels_per_block
   parameter may be modified.
2018-09-15 15:21:51 -06:00
Ed Hartnett
86e002d794 merged master 2018-09-06 14:01:59 -06:00
Ward Fisher
fbe0a18b1c
Merge branch 'master' into ejh_loop_cleanup_2 2018-09-05 11:22:55 -06:00
Ward Fisher
d0bb5ddde8 Merge remote-tracking branch 'origin/inmemory10.dmh' into combined-pr.wif 2018-09-04 13:39:34 -06:00
Ward Fisher
3c3119bed2 Merge remote-tracking branch 'origin/dapcurlopt.dmh' into combined-pr.wif 2018-09-04 12:50:55 -06:00
Ed Hartnett
a23318929f
Merge branch 'master' into ejh_loop_cleanup_2 2018-09-04 12:44:46 -06:00
Dennis Heimbigner
d62a9e623c Fix the NC_INMEMORY code to work in all cases with HDF5 1.10.
re: github issue https://github.com/Unidata/netcdf-c/issues/1111

One of the less common use cases for the in-memory feature is
apparently failing with HDF5-1.10.x.  The fix is complicated and
requires significant changes to libhdf5/nc4memcb.c. The current
setup is detailed in the file docs/inmeminternal.dox.

Additionally, it was discovered that the program
nc_test/tst_inmemory.c, which is invoked by
nc_test/run_inmemory.sh, actually was failing because of the
above problem. But the failure is not detected since the script
does not return non-zero value.

Other Changes:
1. Fix nc_test_tst_inmemory to return errors correctly.
2. Make ncdap_tests/findtestserver.c and dap4_tests/findtestserver4.c
   be generated from ncdap_test/findtestserver.c.in.
3. Make LOG() print output to stderr instead of stdout to
   avoid contaminating e.g. ncdump output.
4. Modify the handling of NC_INMEMORY and NC_DISKLESS flags
   to properly handle that NC_DISKLESS => NC_INMEMORY. This
   affects a number of code pieces, especially memio.c.
2018-09-04 11:27:47 -06:00
Dennis Heimbigner
4a1e84b721 Re github issue https://github.com/Unidata/netcdf-c/issues/1131
The identifier typename is apparently a reserved word in C++.
It is used as a fieldname in the ALignment struct in
include/ncoffsets.h.

Change the field name to type_name in ncoffsets.h
and also in libdispatch/doffsets.c, which uses that field.
2018-09-03 13:30:11 -06:00
Ed Hartnett
ad592448df merged master 2018-08-29 06:32:28 -06:00
Ed Hartnett
27281dfe4b
Merge branch 'master' into ejh_loop_cleanup_2 2018-08-28 17:32:40 -06:00
Ward Fisher
5e33522f52
Merge branch 'master' into default_format 2018-08-28 15:02:17 -06:00
Dennis Heimbigner
79e38de840 Add the ability to set some additional curlopt values
Add the ability to set some additional curlopt values via .daprc (aka .dodsrc).
This effects both DAP2 and DAP4 protocols.

Related issues:
[1] re: esupport: KOZ-821332
[2] re: github issue https://github.com/Unidata/netcdf4-python/issues/836
[3] re: github issue https://github.com/Unidata/netcdf-c/issues/1074

1. CURLOPT_BUFFERSIZE: Relevant to [1]. Allow user to set the read/write
buffersizes used by curl.
This is done by adding the following to .daprc (aka .dodsrc):
	HTTP.READ.BUFFERSIZE=n
where n is the buffersize in bytes. There is a built-in (to curl)
limit of 512k for this value.

2. CURLOPT_TCP_KEEPALIVE (and CURLOPT_TCP_KEEPIDLE and CURLOPT_TCP_KEEPINTVL):
Relevant (maybe) to [2] and [3]. Allow the user to turn on KEEPALIVE
This is done by adding the following to .daprc (aka .dodsrc):
	HTTP.KEEPALIVE=on|n/m
If the value is "on", then simply enable default KEEPALIVE. If the value
is n/m, then enable KEEPALIVE and set KEEPIDLE to n and KEEPINTVL to m.
2018-08-26 17:04:46 -06:00
Ed Hartnett
85f3579195 fixed docs 2018-08-24 14:15:59 -06:00
Ed Hartnett
cf890be803 fixed docs 2018-08-24 14:14:15 -06:00
Ward Fisher
373d0365a1
Merge branch 'master' into default_format 2018-08-24 11:27:07 -06:00
Ed Hartnett
62103d761c fixed spaceing in nc.c 2018-08-21 06:53:27 -06:00
Ed Hartnett
c02f976d84 more tests 2018-08-20 17:05:29 -06:00
Ed Hartnett
ab1216da10 fix memory issue 2018-08-14 10:38:28 -06:00
Ed Hartnett
9953e53573 converting NULL checking of put functions 2018-08-14 09:21:45 -06:00
Ed Hartnett
829d9d28ae converting NULL checking of put functions 2018-08-14 09:09:08 -06:00
Ed Hartnett
5f9b7af467 converting NULL checking of put functions 2018-08-14 09:04:16 -06:00
Ed Hartnett
d6c0cbe234 removing unneeded file lookups 2018-08-14 08:56:58 -06:00
Ed Hartnett
5800fdd617 removing unneeded file lookups 2018-08-14 08:49:23 -06:00
Ed Hartnett
24f0c9d74c removing unneeded file lookups 2018-08-14 08:39:17 -06:00
Ed Hartnett
bc3c63bf03 removing unneeded file lookups 2018-08-14 08:32:45 -06:00
Ed Hartnett
1e3fe2b8cc removing unneeded file lookups 2018-08-14 08:29:02 -06:00
Ed Hartnett
d1ed803b31 removing unneeded file lookups 2018-08-14 08:18:05 -06:00
Ed Hartnett
3046dabda0 more NULL parameter changes 2018-08-14 08:06:01 -06:00
Ed Hartnett
baa76219d3 more NULL parameter changes 2018-08-14 08:01:54 -06:00
Ed Hartnett
69b37d994e fixed HDF4 test 2018-08-14 06:44:11 -06:00
Ed Hartnett
acc22e0c54 checking NULLs in function 2018-08-14 06:28:28 -06:00
Ed Hartnett
a0bea92919 fixed problem of not calling NC_ versions of vars and varm functions for extra error checking 2018-08-14 05:04:09 -06:00
Ed Hartnett
0b13f52766 documentation 2018-08-14 04:44:26 -06:00
Ed Hartnett
5c39fa115a return error for NULL start for varm functions 2018-08-14 04:35:38 -06:00
Ed Hartnett
a271ebb5f2 testing NULL starts 2018-08-14 04:17:34 -06:00
Ed Hartnett
97c2541a37 put_vars checking for NULL start for non-scalar vars and test 2018-08-13 13:05:32 -06:00
Ed Hartnett
8b26c83379 undid unneeded nc_test changes 2018-08-13 09:15:50 -06:00
Ed Hartnett
b29cc1b94f removed unneeded netcdf-4 checks in dvarget.c 2018-08-13 09:06:51 -06:00
Ed Hartnett
ec3d3a3d06 return error for put_vara calls with NULL start 2018-08-13 09:03:49 -06:00
Ed Hartnett
a63f3449c3 return error for put_vara calls with NULL start 2018-08-13 08:54:38 -06:00
Ed Hartnett
19222632b4 return error for put_vars calls with NULL start 2018-08-13 08:48:20 -06:00
Ed Hartnett
df371b2b99 reject NULL start for put_vars 2018-08-13 08:25:54 -06:00
Dennis Heimbigner
f46b65c602 Clear up coverity complaints
with respect to this coverity report.

https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRZApv53Ry-2FReUME-2Fmei1et81WqdBwm5AxSAYBM9iFSmbw-3D-3D_YxTn3nq1kZ9CfXcyYFaB2DtJSVHTn8U-2BK0LV-2FDyLYKcFvnwYJ7pm2zFB5UovsEUh5miIfeCfQzYxpN9HYcdqs9sKVjtklOkfPIjEpg0Tj8G9wiptznJeX-2FO4PrqJA1ViQYtQfpjugq01XGMQ3-2Bll42dUMxrmbdYSqi8T7bCcANC5evyZs4MKvmAWXt1bnPaHcOYJDN-2FUt-2FJTlhwu91HyR7h-2FnkvMY9paYUNB1gxiyUA-3D
2018-08-04 13:22:29 -06:00
Ward Fisher
59e98ef087
Merge branch 'master' into default_format 2018-08-03 10:59:41 -06:00
Wei-keng Liao
025c7d1bb2 introduce error code NC_EPNETCDF for errors at PnetCDF level 2018-07-29 15:33:08 -05:00
Wei-keng Liao
0ee68a3263 This commit fixes the logical problem of using the default file formats.
The fix includes the following changes.
1. Checking and using the default file format at file create time is now
   done only when the create mode (argument cmode) does not include any
   format related flags, i.e. NC_64BIT_OFFSET, NC_64BIT_DATA,
   NC_CLASSIC_MODEL, and NC_NETCDF4.
2. Adjustment of cmode based on the default format is now done in
   NC_create() only. The idea is to adjust cmode before entering the
   dispatcher's file create subroutine.
3. Any adjustment of cmode is removed from all I/O dispatchers, i.e.
   NC4_create(), NC3_create(), and NCP_create().
4. Checking for illegal cmode has been done in check_create_mode() called
   in NC_create(). This commit removes the redundant checking from
   NCP_create().
5. Remove PnetCDF tests in nc_test/tst_names.c, so it can focus on testing
   all classic formats and netCDF4 formats.

Two new test programs are added. They can be used to test netCDF with and
without this commit.
1. nc_test/tst_default_format.c
2. nc_test/tst_default_format_pnetcdf.c (use when PnetCDF is enabled).
2018-07-28 11:18:28 -05:00
Ward Fisher
a741bec8d9 Merge branch 'doc-cdf5' of https://github.com/wkliao/netcdf-c into pr-aggregation.wif 2018-07-18 14:08:20 -06:00
Ward Fisher
d6ed28291a
Merge branch 'master' into doc-cdf5 2018-07-17 15:53:56 -06:00
Ward Fisher
b570d10e01
Merge branch 'master' into enable-cdf5 2018-07-17 11:26:02 -06:00
Ward Fisher
d7ef36bb6f
Merge branch 'master' into doc-cdf5 2018-07-13 11:02:55 -06:00
Ward Fisher
9209a2ede5
Merge branch 'master' into interndocs.dmh 2018-07-10 16:00:39 -06:00
Ward Fisher
ca56fc768c
Merge branch 'master' into enable-cdf5 2018-07-10 16:00:12 -06:00
Ed Hartnett
39d45e9941 fixed clang warning in ncuri.c 2018-07-06 06:52:02 -06:00
Wei-keng Liao
577fcea506 add missing note about CDF-5 format 2018-07-05 22:54:41 -05:00
Wei-keng Liao
f95d3e3325 replace USE_CDF5 with ENABLE_CDF5 2018-06-29 21:17:07 -05:00
Dennis Heimbigner
40013b72f6 The pr does some cleanup on the internal documentation
in the docs directory.
1. Add a new internal document -- testserver.dox -- to describe
   how to set up and maintain the dap test server.
2. It moves the internal documentation (internal.dox, indexing.dox,
   and testserver.dox) to later in the documentation table of contents.
3. Cleanup the formatting of the internal documents.
4. Cleanup some minor doxygen issues in other files.
2018-06-29 15:06:27 -06:00
Ed Hartnett
29ce3b7d8c
Merge branch 'master' into ejh_udf 2018-06-08 14:49:15 -06:00
Ward Fisher
4fba5dfb45 Squaed a potential memory leak. 2018-06-08 12:08:33 -06:00
Ward Fisher
335f25e947 Corrected a couple of potential memory related issues and an uninitialized variable issue. 2018-06-08 11:38:11 -06:00
Ward Fisher
1af8b8f8fc Corrected a stored value that's never read issue detected by static analysis. 2018-06-07 16:17:32 -06:00
Ward Fisher
bb65fe5ea5 More potential memory leaks squashed. 2018-06-07 15:58:47 -06:00
Ward Fisher
3cce9e99e2 Corrected several potential null dereference or memory leak issues detected by static analysis. 2018-06-07 15:21:42 -06:00
Ed Hartnett
7aa073eb5d magic numbers working with user-defined formats 2018-06-07 06:49:16 -06:00
Ed Hartnett
8d08b8c236 more magic numbers 2018-06-06 13:09:16 -06:00
Ed Hartnett
c172acab98 more magic numbers 2018-06-06 12:54:03 -06:00
Ed Hartnett
0dcdf7198f more magic numbers 2018-06-06 12:21:37 -06:00
Ed Hartnett
17da700a5c adding support for magic numbers 2018-06-05 12:22:38 -06:00