You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.1 KiB
46 lines
2.1 KiB
8 years ago
|
#include <stdio.h>
|
||
|
#include <stdint.h>
|
||
|
#include "../../includes/cJSON.h"
|
||
|
#include "../../crypto777/OS_portable.h"
|
||
|
|
||
|
int32_t main(int32_t argc,char **argv)
|
||
|
{
|
||
|
cJSON *argjson,*array,*filejson,*obj,*fobj; char *fname,*filestr,*fstr,*str,*field; int32_t i,n; long filesize;
|
||
|
if ( argc > 2 && (argjson= cJSON_Parse(argv[2])) != 0 )
|
||
|
{
|
||
|
fname = argv[1];
|
||
|
if ( (filestr= OS_filestr(&filesize,fname)) != 0 )
|
||
|
{
|
||
|
if ( (filejson= cJSON_Parse(filestr)) != 0 )
|
||
|
{
|
||
|
if ( (array= jarray(&n,argjson,"fields")) != 0 )
|
||
|
{
|
||
|
for (i=0; i<n; i++)
|
||
|
{
|
||
|
obj = jitem(array,i);
|
||
|
if ( (field= jfieldname(obj)) != 0 && (obj= obj->child) != 0 )
|
||
|
{
|
||
|
if ( (fobj= jobj(filejson,field)) != 0 )
|
||
|
{
|
||
|
fstr = jprint(fobj,0);
|
||
|
str = jprint(obj,0);
|
||
|
if ( strcmp(fstr,str) != 0 )
|
||
|
{
|
||
|
printf("{\"error\":\"field.(%s) in (%s) i.%d of n.%d mismatch (%s) != (%s)\"}\n",field,fname,i,n,fstr,str);
|
||
|
fprintf(stderr,"{\"error\":\"field.(%s) in (%s) i.%d of n.%d mismatch (%s) != (%s)\"}\n",field,fname,i,n,fstr,str);
|
||
|
}
|
||
|
else printf("{\"result\":\"MATCHED.[%s] (%s).(%s)\"}\n",fname,field,fstr);
|
||
|
free(str);
|
||
|
free(fstr);
|
||
|
} else fprintf(stderr,"cant find field.(%s) in (%s)\n",field,fname);
|
||
|
} else fprintf(stderr,"no fieldname array[%d]\n",i);
|
||
|
}
|
||
|
} else fprintf(stderr,"no fields array\n");
|
||
|
free_json(filejson);
|
||
|
} else fprintf(stderr,"cant parse.(%s)\n",filestr);
|
||
|
free(filestr);
|
||
|
} else fprintf(stderr,"cant load (%s)\n",fname);
|
||
|
} else fprintf(stderr,"argc.%d fname.(%s) error\n",argc,argv[1]);
|
||
|
}
|
||
|
|