mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-01-24 16:04:40 +08:00
e7d5f24078
The primary change is to support the use of a zip file as a storage format. Simultaneously the .nz4 support is made obsolete Use of zip requires the libzip support library, so a number of changes to the build files (Makefile.am, CMakeLists.txt) are necessary to locate and incorporate libzip. The nczarr_tests tests are also changed to add zip testing. Other changes: * Make sure distcheck leaves no files around. * Add some functions to netcdf_aux to export some functions of libnetcdf. * Add a new error NC_EFOUND as the complement of NC_EEMPTY. * Add tracing support to nclog and use it in libnczarr. * Modify the zmap interface to support the writeonce semantics of zip. * Create a new s3util.c to support a variety of S3 auxilliary functions. * EXTERNL'ize a number of functions so they can be used in s3util. * Add support for the S3 ListObjects CommonPrefixes mechanism to improve search. * Add experimental support for running nczarr X s3 tests against the actual Amazon S3 cloud.
63 lines
1.2 KiB
C
63 lines
1.2 KiB
C
/*
|
|
* Copyright 2018, University Corporation for Atmospheric Research
|
|
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
|
|
*/
|
|
|
|
/* Parse input to see if it looks like json.
|
|
Output 1 or 0.
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "stdlib.h"
|
|
#include "stdio.h"
|
|
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#include "netcdf.h"
|
|
#include "nclist.h"
|
|
#include "zjson.h"
|
|
|
|
#define MAXREAD 8192
|
|
|
|
int
|
|
main(int argc, char** argv)
|
|
{
|
|
int stat = NC_NOERR;
|
|
char text[MAXREAD+1];
|
|
NCjson* json = NULL;
|
|
int i, red;
|
|
FILE* f = NULL;
|
|
|
|
if(argc > 1) {
|
|
/* use argv[1] as input */
|
|
f = fopen(argv[1],"r");
|
|
if(f == NULL) {fprintf(stderr,"No such file: %s\n",argv[1]); exit(1);}
|
|
} else
|
|
f = stdin;
|
|
|
|
/* Read json from stdin */
|
|
for(i=0;;i++) {
|
|
unsigned char c;
|
|
red = fread(&c, 1, 1, f);
|
|
if(red != 1) break;
|
|
if(i < MAXREAD) text[i] = (char)c;
|
|
}
|
|
if(i >= MAXREAD) {
|
|
fprintf(stderr,"Input too long\n");
|
|
exit(1);
|
|
}
|
|
text[i] = '\0';
|
|
if(i == 0) {
|
|
stat = NC_EEMPTY;
|
|
} else {
|
|
stat = NCJparse(text,0,&json);
|
|
NCJreclaim(json);
|
|
}
|
|
printf("%d",(stat==NC_NOERR?1:0)); /* parse success|failure */
|
|
if(f != stdin) fclose(f);
|
|
return 0;
|
|
}
|