mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-05 16:20:10 +08:00
Merge pull request #1322 from Unidata/v4.6.2.1-dev.wif
Preparing Maintenance Release
This commit is contained in:
commit
af2e115712
@ -7,9 +7,15 @@ This file contains a high-level description of this package's evolution. Release
|
||||
|
||||
## 4.6.3 - TBD
|
||||
|
||||
## 4.6.2.1 - February 15, 2019
|
||||
|
||||
### Maintenance Release
|
||||
|
||||
* Update the license from the home-brewed NetCDF license to the standard 3-Clause BSD License. This change does not result in any new restrictions; it is merely the adoption of a standard, well-known and well-understood license in place of the historic NetCDF license written at Unidata. This is part of a broader push by Unidata to adopt modern, standardized licensing.
|
||||
|
||||
|
||||
* [BugFix] Corrected DAP-releated issues on big-endian machines. See [Github #1321](https://github.com/Unidata/netcdf-c/issues/1321), [Github #1302](https://github.com/Unidata/netcdf-c/issues/1302) for more information.
|
||||
* [BugFix][Enhancement] Various and sundry bugfixes and performance enhancements, thanks to @edhartnett, @gsjaardema, @t-b, @wkliao, and all of our other contributors.
|
||||
* [Enhancement] Extended `nccopy -F` syntax to support multiple variables with a single invocation. See [Github #1311](https://github.com/Unidata/netcdf-c/issues/1311) for more information.
|
||||
* [BugFix] Corrected an issue where DAP2 was incorrectly converting signed bytes, resulting in an erroneous error message under some circumstances. See [GitHub #1317](https://github.com/Unidata/netcdf-c/issues/1317) for more information. See [Github #1319](https://github.com/Unidata/netcdf-c/issues/1319) for related information.
|
||||
* [BugFix][Enhancement] Modified `nccopy` so that `_NCProperties` is not copied over verbatim but is instead generated based on the version of `libnetcdf` used when copying the file. Additionally, `_NCProperties` are displayed if/when associated with a netcdf3 file, now. See [GitHub #803](https://github.com/Unidata/netcdf-c/issues/803) for more information.
|
||||
|
||||
## 4.6.2 - November 16, 2018
|
||||
|
128
docs/DAP4.dox
128
docs/DAP4.dox
@ -46,11 +46,11 @@ format. The URL is composed of three parts.
|
||||
+ http://remotetest.unidata.ucar.edu/d4ts/test.01#protocol=dap4
|
||||
+ http://thredds.ucar.edu/thredds/dap4/...
|
||||
|
||||
- Constraints - these are suffixed to the URL and take the form
|
||||
- Constraints - these are suffixed to the URL and take the form
|
||||
“?dap4.ce=\<expression\>”. The form of the constraint expression
|
||||
is somewhat complicated, and the specification should be consulted.
|
||||
|
||||
- Client parameters - these may be specified in either of
|
||||
- Client parameters - these may be specified in either of
|
||||
two ways. The older, deprecated form prefixes text to the
|
||||
front of the url and is of the the general form [\<name>]
|
||||
or [\<name>=value]. Examples include [show=fetch] or [noprefetch].
|
||||
@ -95,7 +95,7 @@ Parameter Name Legal Values Semantics
|
||||
for specially named elements in the DMR XML in order to
|
||||
achieve a better translation of the DAP4 meta-data to NetCDF enhanced
|
||||
metadata.
|
||||
- "opaquesize=<integer>" - This parameter causes the netCDF code to
|
||||
- "opaquesize=<integer>" - This parameter causes the netCDF code to
|
||||
convert DAP4 variable size OPAQUE objects to netcdf-4 fixed size
|
||||
objects and forces all of them to be of the size specified.
|
||||
- "fillmismatch" - Unfortunately, a number of servers sometimes
|
||||
@ -152,79 +152,79 @@ Finally from the set so constructed, choose the first matching entry.
|
||||
Currently, the supported set of keys (with descriptions) are as
|
||||
follows.
|
||||
|
||||
-# HTTP.VERBOSE
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Produce verbose output, especially using SSL.
|
||||
Related CURL Flags: CURLOPT_VERBOSE
|
||||
-# HTTP.VERBOSE
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Produce verbose output, especially using SSL.
|
||||
Related CURL Flags: CURLOPT_VERBOSE
|
||||
|
||||
-# HTTP.DEFLATE
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Allow use of compression by the server.
|
||||
Related CURL Flags: CURLOPT_ENCODING
|
||||
-# HTTP.DEFLATE
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Allow use of compression by the server.
|
||||
Related CURL Flags: CURLOPT_ENCODING
|
||||
|
||||
-# HTTP.COOKIEJAR
|
||||
Type: String representing file path
|
||||
Description: Specify the name of file into which to store cookies. Defaults to in-memory storage.
|
||||
Related CURL Flags:CURLOPT_COOKIEJAR
|
||||
-# HTTP.COOKIEJAR
|
||||
Type: String representing file path
|
||||
Description: Specify the name of file into which to store cookies. Defaults to in-memory storage.
|
||||
Related CURL Flags:CURLOPT_COOKIEJAR
|
||||
|
||||
-# HTTP.CREDENTIALS.USER
|
||||
Type: String representing user name
|
||||
Description: Specify the user name for Digest and Basic authentication.
|
||||
Related CURL Flags:
|
||||
|
||||
-# HTTP.CREDENTIALS.PASSWORD
|
||||
Type: String representing password
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Specify the password for Digest and Basic authentication.
|
||||
Related CURL Flags:
|
||||
-# HTTP.CREDENTIALS.USER
|
||||
Type: String representing user name
|
||||
Description: Specify the user name for Digest and Basic authentication.
|
||||
Related CURL Flags:
|
||||
|
||||
-# HTTP.SSL.CERTIFICATE
|
||||
Type: String representing file path
|
||||
Description: Path to a file containing a PEM cerficate.
|
||||
Related CURL Flags: CURLOPT_CERT
|
||||
-# HTTP.CREDENTIALS.PASSWORD
|
||||
Type: String representing password
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Specify the password for Digest and Basic authentication.
|
||||
Related CURL Flags:
|
||||
|
||||
-# HTTP.SSL.KEY
|
||||
Type: String representing file path
|
||||
Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value.
|
||||
Related CURL Flags: CURLOPT_SSLKEY
|
||||
-# HTTP.SSL.CERTIFICATE
|
||||
Type: String representing file path
|
||||
Description: Path to a file containing a PEM cerficate.
|
||||
Related CURL Flags: CURLOPT_CERT
|
||||
|
||||
-# HTTP.SSL.KEYPASSWORD
|
||||
Type: String representing password
|
||||
Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE
|
||||
Related CURL Flags: CURLOPT_KEYPASSWORD
|
||||
-# HTTP.SSL.KEY
|
||||
Type: String representing file path
|
||||
Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value.
|
||||
Related CURL Flags: CURLOPT_SSLKEY
|
||||
|
||||
-# HTTP.SSL.CAPATH
|
||||
Type: String representing directory
|
||||
Description: Path to a directory containing trusted certificates for validating server certificates.
|
||||
Related CURL Flags: CURLOPT_CAPATH
|
||||
-# HTTP.SSL.KEYPASSWORD
|
||||
Type: String representing password
|
||||
Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE
|
||||
Related CURL Flags: CURLOPT_KEYPASSWORD
|
||||
|
||||
-# HTTP.SSL.VALIDATE
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Cause the client to verify the server's presented certificate.
|
||||
Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST
|
||||
-# HTTP.SSL.CAPATH
|
||||
Type: String representing directory
|
||||
Description: Path to a directory containing trusted certificates for validating server certificates.
|
||||
Related CURL Flags: CURLOPT_CAPATH
|
||||
|
||||
-# HTTP.TIMEOUT
|
||||
Type: String ("dddddd")
|
||||
Description: Specify the maximum time in seconds that you allow the http transfer operation to take.
|
||||
Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL
|
||||
-# HTTP.SSL.VALIDATE
|
||||
Type: boolean ("1"/"0")
|
||||
Description: Cause the client to verify the server's presented certificate.
|
||||
Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST
|
||||
|
||||
-# HTTP.PROXY_SERVER
|
||||
Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port])
|
||||
Description: Specify the needed information for accessing a proxy.
|
||||
Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD
|
||||
-# HTTP.TIMEOUT
|
||||
Type: String ("dddddd")
|
||||
Description: Specify the maximum time in seconds that you allow the http transfer operation to take.
|
||||
Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL
|
||||
|
||||
-# HTTP.READ.BUFFERSIZE
|
||||
Type: String ("dddddd")
|
||||
Description: Specify the the internal buffer size for curl reads.
|
||||
Related CURL Flags: CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE (16kB),
|
||||
CURL_MAX_READ_SIZE (512kB).
|
||||
-# HTTP.PROXY_SERVER
|
||||
Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port])
|
||||
Description: Specify the needed information for accessing a proxy.
|
||||
Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD
|
||||
|
||||
-# HTTP.READ.BUFFERSIZE
|
||||
Type: String ("dddddd")
|
||||
Description: Specify the the internal buffer size for curl reads.
|
||||
Related CURL Flags: CURLOPT_BUFFERSIZE, CURL_MAX_WRITE_SIZE (16kB),
|
||||
CURL_MAX_READ_SIZE (512kB).
|
||||
|
||||
-# HTTP.KEEPALIVE
|
||||
Type: String ("on|n/m")
|
||||
Description: Specify that TCP KEEPALIVE should be enabled and that the associated idle wait time is n and that the associated repeat interval is m. If the value is of the form is the string "on", then turn on keepalive, but do not set idle or interval.
|
||||
Related CURL Flags: CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE,
|
||||
CURLOPT_TCP_KEEPINTVL.
|
||||
|
||||
-# HTTP.KEEPALIVE
|
||||
Type: String ("on|n/m")
|
||||
Description: Specify that TCP KEEPALIVE should be enabled and that the associated idle wait time is n and that the associated repeat interval is m. If the value is of the form is the string "on", then turn on keepalive, but do not set idle or interval.
|
||||
Related CURL Flags: CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE,
|
||||
CURLOPT_TCP_KEEPINTVL.
|
||||
|
||||
The related curl flags line indicates the curl flags modified by this
|
||||
key. See the libcurl documentation of the _curl_easy_setopt()_ function
|
||||
for more detail (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html).
|
||||
|
@ -88,12 +88,8 @@ were written.
|
||||
|
||||
Unidata supports the netCDF interfaces for C (see <a
|
||||
href="http://www.unidata.ucar.edu/netcdf/docs/" >NetCDF-C User's
|
||||
Guide</a>), FORTRAN 77 (see <a
|
||||
href="http://www.unidata.ucar.edu/netcdf/documentation/historic/netcdf-f77/index.html#Top"
|
||||
>NetCDF Fortran 77 Interface Guide</a>), FORTRAN 90 (see <a
|
||||
href="http://www.unidata.ucar.edu/netcdf/documentation/historic/netcdf-f90/index.html"
|
||||
>NetCDF Fortran 90 Interface Guide</a>), and C++ (see <a
|
||||
href="http://www.unidata.ucar.edu/netcdf/documentation/historic/cxx4/index.html"
|
||||
Guide</a>), Fortran (see <a href="http://www.unidata.ucar.edu/netcdf/fortran/docs/" >NetCDF-Fortran User's Guide</a>)
|
||||
and C++ (see <a href="http://www.unidata.ucar.edu/netcdf/documentation/historic/cxx4/index.html"
|
||||
>NetCDF C++ Interface Guide</a>).
|
||||
|
||||
The netCDF library is supported for various UNIX operating systems. A
|
||||
|
@ -9,6 +9,12 @@ NetCDF is a set of software libraries and self-describing, machine-independent d
|
||||
|
||||
The NetCDF homepage may be found at <a href="http://www.unidata.ucar.edu/software/netcdf/">http://www.unidata.ucar.edu/software/netcdf/</a>. The NetCDF source-code is hosted at <a href="http://github.com">GitHub</a>, and may be found directly at <a href="http://github.com/Unidata/netcdf-c">http://github.com/Unidata/netcdf-c</a>.
|
||||
|
||||
\subsection mainpage_learn_more_fortran Looking for NetCDF-Fortran Documentation?
|
||||
|
||||
You can find the documentation for netCDF-Fortran here:
|
||||
|
||||
- <a href="http://www.unidata.ucar.edu/software/netcdf/fortran/docs"> The NetCDF-Fortran Developer's Guide</a>
|
||||
|
||||
\section this_release Learn more about the current NetCDF-C Release
|
||||
|
||||
- \subpage RELEASE_NOTES
|
||||
@ -23,6 +29,7 @@ The NetCDF homepage may be found at <a href="http://www.unidata.ucar.edu/softwar
|
||||
|
||||
\subsubsection NetCDF-Fortran
|
||||
|
||||
|
||||
- <A href="http://cdash.unidata.ucar.edu/index.php?project=netcdf-fortran">The netCDF-Fortran Nightly and Continuous Integration Dashboard</A>
|
||||
- <A href="https://travis-ci.org/Unidata/netcdf-c">NetCDF-Fortran at Travis-CI</A>
|
||||
|
||||
|
@ -41,7 +41,10 @@ typedef SSIZE_T ssize_t;
|
||||
in its headers.*/
|
||||
#ifndef _WIN32
|
||||
#if __STDC__ == 1 /*supposed to be same as -ansi flag */
|
||||
|
||||
#ifndef strdup
|
||||
extern char* strdup(const char*);
|
||||
#endif
|
||||
|
||||
#ifndef strlcat
|
||||
extern size_t strlcat(char*,const char*,size_t);
|
||||
@ -58,8 +61,10 @@ extern unsigned long long int strtoull(const char*, char**, int);
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifndef strlcat
|
||||
#define strlcat(d,s,n) strcat_s((d),(n),(s))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* handle null arguments */
|
||||
#ifndef nulldup
|
||||
|
@ -12,6 +12,20 @@
|
||||
#ifndef NETCDF_MEM_H
|
||||
#define NETCDF_MEM_H 1
|
||||
|
||||
/* Declaration modifiers for DLL support (MSC et al) */
|
||||
#if defined(DLL_NETCDF) /* define when library is a DLL */
|
||||
# if defined(DLL_EXPORT) /* define when building the library */
|
||||
# define MSC_EXTRA __declspec(dllexport)
|
||||
# else
|
||||
# define MSC_EXTRA __declspec(dllimport)
|
||||
# endif
|
||||
# include <io.h>
|
||||
#else
|
||||
#define MSC_EXTRA /**< Needed for DLL build. */
|
||||
#endif /* defined(DLL_NETCDF) */
|
||||
|
||||
#define EXTERNL MSC_EXTRA extern /**< Needed for DLL build. */
|
||||
|
||||
typedef struct NC_memio {
|
||||
size_t size;
|
||||
void* memory;
|
||||
|
@ -16,7 +16,7 @@ SET(NC4_TESTS tst_dims tst_dims2 tst_dims3 tst_files tst_files4
|
||||
tst_files6 tst_sync tst_h_strbug tst_h_refs tst_h_scalar tst_rename
|
||||
tst_rename2 tst_rename3 tst_h5_endians tst_atts_string_rewrite tst_put_vars_two_unlim_dim
|
||||
tst_hdf5_file_compat tst_fill_attr_vanish tst_rehash tst_types tst_bug324
|
||||
tst_filterparser tst_atts3 tst_put_vars tst_elatefill tst_udf)
|
||||
tst_atts3 tst_put_vars tst_elatefill tst_udf)
|
||||
|
||||
# Note, renamegroup needs to be compiled before run_grp_rename
|
||||
|
||||
@ -29,6 +29,7 @@ IF(ENABLE_FILTER_TESTING)
|
||||
build_bin_test(test_filter)
|
||||
build_bin_test(test_filter_misc)
|
||||
ADD_SH_TEST(nc_test4 tst_filter)
|
||||
SET(NC4_TESTS ${NC4_TESTS} tst_filterparser)
|
||||
ENDIF(ENABLE_FILTER_TESTING)
|
||||
|
||||
ENDIF(BUILD_UTILITIES)
|
||||
|
@ -8,7 +8,7 @@ SET(CMAKE_BUILD_TYPE "")
|
||||
|
||||
SET(libbzip2_SOURCES blocksort.c huffman.c crctable.c randtable.c compress.c decompress.c bzlib.c H5Zbzip2.c)
|
||||
|
||||
SET(libmisc_SOURCES H5Zmisc.c)
|
||||
SET(libmisc_SOURCES H5Zmisc.c H5Zutil.c h5misc.h)
|
||||
|
||||
IF(ENABLE_FILTER_TESTING)
|
||||
IF(BUILD_UTILITIES)
|
||||
|
@ -48,9 +48,10 @@ byteswap4(unsigned char* mem)
|
||||
void
|
||||
NC_filterfix8(void* mem0, int decode)
|
||||
{
|
||||
|
||||
unsigned char* mem = mem0;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
unsigned char* mem = mem0;
|
||||
if(decode) { /* Apply inverse of the encode case */
|
||||
if(decode) { /* Apply inverse of the encode case */
|
||||
byteswap4(mem); /* step 1: byte-swap each piece */
|
||||
byteswap4(mem+4);
|
||||
byteswap8(mem); /* step 2: convert to little endian format */
|
||||
@ -60,6 +61,8 @@ NC_filterfix8(void* mem0, int decode)
|
||||
byteswap4(mem+4);
|
||||
}
|
||||
#else /* Little endian */
|
||||
|
||||
|
||||
/* No action is necessary */
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user