mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-03 08:01:25 +08:00
d62a9e623c
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.
80 lines
1.7 KiB
C
80 lines
1.7 KiB
C
#include "config.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "nctestserver.h"
|
|
|
|
/* Support stringification of -D macros */
|
|
#define XSTRINGIFY(s) #s
|
|
#define STRINGIFY(s) XSTRINGIFY(s)
|
|
|
|
|
|
/**
|
|
usage: findtestserver dap2|dap4 suffix [serverlist]
|
|
|
|
Given a partial suffix path, try to find a
|
|
server for which a request to server + suffix
|
|
returns some kind of result using the
|
|
specified protocol. This indicates that the
|
|
server is up and running. Return the complete
|
|
url for the server plus the path.
|
|
If serverlist is present, then is should be a comma
|
|
separated list of servers (host+port) to try.
|
|
It defaults to REMOTETESTSERVERS.
|
|
*/
|
|
|
|
static void
|
|
usage()
|
|
{
|
|
fprintf(stderr,"usage: findtestserver dap2|dap4 suffix [serverlist]\n");
|
|
exit(1);
|
|
}
|
|
|
|
|
|
int
|
|
main(int argc, char** argv)
|
|
{
|
|
const char* url = NULL;
|
|
const char* servlet = NULL;
|
|
const char* proto = NULL;
|
|
const char* serverlist = NULL;
|
|
int isdap4 = 0; /* 1 => dap4 */
|
|
|
|
argc--; argv++;
|
|
if(argc < 2)
|
|
usage();
|
|
proto = strdup(argv[0]);
|
|
servlet = strdup(argv[1]);
|
|
if(argc >= 3)
|
|
serverlist = strdup(argv[2]);
|
|
|
|
#ifdef ENABLE_DAP
|
|
if(strcasecmp(proto,"dap2")==0)
|
|
isdap4 = 0;
|
|
else
|
|
#endif
|
|
#ifdef ENABLE_DAP4
|
|
if(strcasecmp(proto,"dap4")==0)
|
|
isdap4 = 1;
|
|
else
|
|
#endif
|
|
usage();
|
|
|
|
if(serverlist == NULL) {
|
|
#ifdef REMOTETESTSERVERS
|
|
serverlist = strdup(REMOTETESTSERVERS);
|
|
#endif
|
|
}
|
|
if(serverlist == NULL || strlen(serverlist) == 0)
|
|
fprintf(stderr,"Cannot determine a server list");
|
|
|
|
url = nc_findtestserver(servlet,isdap4,serverlist);
|
|
if(url == NULL) {
|
|
url = "";
|
|
fprintf(stderr,"not found: %s\n",servlet);
|
|
}
|
|
printf("%s",url);
|
|
fflush(stdout);
|
|
exit(0);
|
|
}
|