X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Ftools%2Fgdat2ascii.c;h=8f7e85cb02314c3c7c33f69712bd02b3eb59f156;hb=07495effe193ca3f73c3bf0ce417068f9ac9dcdd;hp=8381ed007dd033b25e0a8e0efcc64de7f406e1e0;hpb=93d248304a68de7a8f9daf4aa74f9ee4cd27410c;p=com%2Fgs-lite.git diff --git a/src/tools/gdat2ascii.c b/src/tools/gdat2ascii.c index 8381ed0..8f7e85c 100644 --- a/src/tools/gdat2ascii.c +++ b/src/tools/gdat2ascii.c @@ -1,275 +1,275 @@ -/* ------------------------------------------------ - Copyright 2014 AT&T Intellectual Property - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ------------------------------------------- */ -#include -#include -#include -#include -#include "gsconfig.h" -#include "gstypes.h" - -FILE * ifd; - -gs_retval_t read_tuple(gs_uint32_t * sz, gs_sp_t data, gs_int32_t maxlen) { - gs_uint32_t nsz; - static gs_uint32_t read=0; -again: - if (fread(&nsz,sizeof(gs_uint32_t),1,ifd)!=1) { - - exit(0); - } - read=read+sizeof(gs_uint32_t); - *sz=ntohl(nsz); - if ((*sz)>maxlen) { - fprintf(stderr,"INTERNAL ERROR tuple to long for fixed buffer. Tuple sz %u\n", - (*sz)); - *sz=0; - return 0; - } - if (*sz==0) goto again; - if (fread(data,(*sz),1,ifd)!=1) { - fprintf(stderr,"UNEXPECTED END OF FILE. Tryed to read tuple of size %u\n", - (*sz)); - exit(0); - } - read=read+*sz; - return 0; -} - -int main(int argc, char** argv) { - gs_uint32_t streamid; - gs_schemahandle_t schema; - - gs_uint32_t rstreamid; - gs_uint32_t rsize; - gs_int8_t rbuf[2*MAXTUPLESZ]; - - gs_int32_t numberoffields; - gs_int32_t verbose=0; - gs_int32_t truncate=-1; - gs_int32_t y; - gs_int32_t parserversion; - gs_uint32_t schemalen; - gs_sp_t asciischema; - gs_sp_t me; - gs_int32_t ch; - gs_uint32_t scramble =0; - gs_uint32_t schema_only =0; - - /* initialize host library and the sgroup */ - - me=argv[0]; - - if (argc<2) { - fprintf(stderr, - "%s::usage: %s -v -x -t -s \n", - me,me); - exit(1); - } - - while ((ch = getopt(argc, argv, "ps:t:vx")) != -1) { - switch(ch) { - case 'p': - schema_only=1; - break; - case 'v': - verbose=1; - break; - case 'x': - verbose=2; - break; - case 't': - truncate=atoi(optarg); - break; - case 's': - sscanf(optarg,"%u",&scramble); - } - } - argc -= optind; - if (argc < 1) { - fprintf(stderr,"%s::usage: %s -v -x -t \n", - me,me); - exit(1); - } - argv += optind; - - if ((strcmp(argv[0],"-")!=0)&&(strcmp(argv[0],"stdin")!=0)) { - if ((ifd=fopen(argv[0],"r"))==0) { - fprintf(stderr,"%s::error:could not open input file %s\n", - me,argv[0]); - exit(1); - } - } else { - ifd = stdin; - } - - if (fscanf(ifd,"GDAT\nVERSION:%u\nSCHEMALENGTH:%u\n",&parserversion,&schemalen)!=2) { - fprintf(stderr,"%s::error:unknown file type for file %s\n", - me,argv[0]); - exit(1); - } - - if (schemaparser_accepts_version(parserversion)!=1) { - fprintf(stderr,"%s::error: wrong parser version %u for file %s\n", - me,parserversion,argv[0]); - exit(1); - } - - if ((asciischema=malloc(schemalen))==0) { - fprintf(stderr,"%s::error: could not allocate schema buffer of sz %u " - "for file %s\n", - me,schemalen,argv[0]); - exit(1); - } - - if (fread(asciischema,schemalen,1,ifd)!=1) { - fprintf(stderr,"%s::error: could not read schema buffer of sz %u " - "for file %s\n", - me,schemalen,argv[0]); - exit(1); - } - if (schema_only==1) { - fprintf(stdout,"%s\n",asciischema); - } - if (verbose==2) { - fprintf(stderr,"%s\n",asciischema); - } - if ((schema=ftaschema_parse_string(asciischema))<0) { - fprintf(stderr,"%s::error: could not parse schema " - "for file %s\n", - me,argv[0]); - exit(1); - } - - if ((numberoffields=ftaschema_tuple_len(schema))<0) { - fprintf(stderr,"%s::error:could not get number of fields in schema\n", - me); - exit(1); - } - if (verbose==1) { - for(y=0; y",ftaschema_field_name(schema,y)); - ar=ftaschema_get_field_by_index(schema,y,rbuf,rsize); - switch (ar.field_data_type) { - case INT_TYPE: - printf("%d",ar.r.i); - break; - case UINT_TYPE: - printf("%u",ar.r.ui); - break; - case IP_TYPE: - if (scramble!=0) { - ar.r.ui=gscpbswap32(ar.r.ui^scramble); - } - printf("%u.%u.%u.%u",ar.r.ui>>24&0xff, - ar.r.ui>>16&0xff, - ar.r.ui>>8&0xff, - ar.r.ui&0xff); - break; - case IPV6_TYPE: - { - unsigned x; - unsigned zc=0; - for(x=0;x<4;x++) { if (ar.r.ip6.v[x]==0) zc++;} - if (zc!=4) { - for(x=0;x<8;x++) { - unsigned char * a = (unsigned char *) &(ar.r.ip6.v[0]); - unsigned y; - y=((unsigned)a[2*x])<<8|((unsigned) a[2*x+1]); - printf("%04x",y); - if (x<7) printf(":"); - } - } else { - printf("::"); - } - } - break; - case USHORT_TYPE: - printf("%u",ar.r.ui); - break; - case BOOL_TYPE: - if (ar.r.ui==0) { - printf("FALSE"); - } else { - printf("TRUE"); - } - break; - case ULLONG_TYPE: - { - gs_uint64_t ul; - gs_uint64_t t1; - gs_uint64_t t2; - ul=ar.r.ul; - printf("%llu",ul); - } - break; - case LLONG_TYPE: - printf("%lld",ar.r.l); - break; - case FLOAT_TYPE: - printf("%f",ar.r.f); - break; - case TIMEVAL_TYPE: - { - gs_float_t t; - t= ar.r.t.tv_usec; - t=t/1000000; - t=t+ar.r.t.tv_sec; - printf("%lf sec",t); - } - break; - case VSTR_TYPE: - { - int x; - int c; - char * src; - src=(gs_sp_t)ar.r.vs.offset; - if ((truncate>=0) && (ar.r.vs.length>truncate)) { - ar.r.vs.length=truncate; - } - if ((ar.r.vs.length>0) && (src[ar.r.vs.length-1]==0)) { - ar.r.vs.length = ar.r.vs.length-1; - } - for(x=0;x=' '))&&(c!='|')) { - printf("%c",c); - } else { - printf("(0x%x)",(gs_uint8_t)c); - } - } - } - break; - default: - break; - } - if (y +#include +#include +#include +#include "gsconfig.h" +#include "gstypes.h" + +FILE * ifd; + +gs_retval_t read_tuple(gs_uint32_t * sz, gs_sp_t data, gs_int32_t maxlen) { + gs_uint32_t nsz; + static gs_uint32_t read=0; +again: + if (fread(&nsz,sizeof(gs_uint32_t),1,ifd)!=1) { + + exit(0); + } + read=read+sizeof(gs_uint32_t); + *sz=ntohl(nsz); + if ((*sz)>maxlen) { + fprintf(stderr,"INTERNAL ERROR tuple to long for fixed buffer. Tuple sz %u\n", + (*sz)); + *sz=0; + return 0; + } + if (*sz==0) goto again; + if (fread(data,(*sz),1,ifd)!=1) { + fprintf(stderr,"UNEXPECTED END OF FILE. Tryed to read tuple of size %u\n", + (*sz)); + exit(0); + } + read=read+*sz; + return 0; +} + +int main(int argc, char** argv) { + gs_uint32_t streamid; + gs_schemahandle_t schema; + + gs_uint32_t rstreamid; + gs_uint32_t rsize; + gs_int8_t rbuf[2*MAXTUPLESZ]; + + gs_int32_t numberoffields; + gs_int32_t verbose=0; + gs_int32_t truncate=-1; + gs_int32_t y; + gs_int32_t parserversion; + gs_uint32_t schemalen; + gs_sp_t asciischema; + gs_sp_t me; + gs_int32_t ch; + gs_uint32_t scramble =0; + gs_uint32_t schema_only =0; + + /* initialize host library and the sgroup */ + + me=argv[0]; + + if (argc<2) { + fprintf(stderr, + "%s::usage: %s -v -x -t -s \n", + me,me); + exit(1); + } + + while ((ch = getopt(argc, argv, "ps:t:vx")) != -1) { + switch(ch) { + case 'p': + schema_only=1; + break; + case 'v': + verbose=1; + break; + case 'x': + verbose=2; + break; + case 't': + truncate=atoi(optarg); + break; + case 's': + sscanf(optarg,"%u",&scramble); + } + } + argc -= optind; + if (argc < 1) { + fprintf(stderr,"%s::usage: %s -v -x -t \n", + me,me); + exit(1); + } + argv += optind; + + if ((strcmp(argv[0],"-")!=0)&&(strcmp(argv[0],"stdin")!=0)) { + if ((ifd=fopen(argv[0],"r"))==0) { + fprintf(stderr,"%s::error:could not open input file %s\n", + me,argv[0]); + exit(1); + } + } else { + ifd = stdin; + } + + if (fscanf(ifd,"GDAT\nVERSION:%u\nSCHEMALENGTH:%u\n",&parserversion,&schemalen)!=2) { + fprintf(stderr,"%s::error:unknown file type for file %s\n", + me,argv[0]); + exit(1); + } + + if (schemaparser_accepts_version(parserversion)!=1) { + fprintf(stderr,"%s::error: wrong parser version %u for file %s\n", + me,parserversion,argv[0]); + exit(1); + } + + if ((asciischema=malloc(schemalen))==0) { + fprintf(stderr,"%s::error: could not allocate schema buffer of sz %u " + "for file %s\n", + me,schemalen,argv[0]); + exit(1); + } + + if (fread(asciischema,schemalen,1,ifd)!=1) { + fprintf(stderr,"%s::error: could not read schema buffer of sz %u " + "for file %s\n", + me,schemalen,argv[0]); + exit(1); + } + if (schema_only==1) { + fprintf(stdout,"%s\n",asciischema); + } + if (verbose==2) { + fprintf(stderr,"%s\n",asciischema); + } + if ((schema=ftaschema_parse_string(asciischema))<0) { + fprintf(stderr,"%s::error: could not parse schema " + "for file %s\n", + me,argv[0]); + exit(1); + } + + if ((numberoffields=ftaschema_tuple_len(schema))<0) { + fprintf(stderr,"%s::error:could not get number of fields in schema\n", + me); + exit(1); + } + if (verbose==1) { + for(y=0; y",ftaschema_field_name(schema,y)); + ar=ftaschema_get_field_by_index(schema,y,rbuf,rsize); + switch (ar.field_data_type) { + case INT_TYPE: + printf("%d",ar.r.i); + break; + case UINT_TYPE: + printf("%u",ar.r.ui); + break; + case IP_TYPE: + if (scramble!=0) { + ar.r.ui=gscpbswap32(ar.r.ui^scramble); + } + printf("%u.%u.%u.%u",ar.r.ui>>24&0xff, + ar.r.ui>>16&0xff, + ar.r.ui>>8&0xff, + ar.r.ui&0xff); + break; + case IPV6_TYPE: + { + unsigned x; + unsigned zc=0; + for(x=0;x<4;x++) { if (ar.r.ip6.v[x]==0) zc++;} + if (zc!=4) { + for(x=0;x<8;x++) { + unsigned char * a = (unsigned char *) &(ar.r.ip6.v[0]); + unsigned y; + y=((unsigned)a[2*x])<<8|((unsigned) a[2*x+1]); + printf("%04x",y); + if (x<7) printf(":"); + } + } else { + printf("::"); + } + } + break; + case USHORT_TYPE: + printf("%u",ar.r.ui); + break; + case BOOL_TYPE: + if (ar.r.ui==0) { + printf("FALSE"); + } else { + printf("TRUE"); + } + break; + case ULLONG_TYPE: + { + gs_uint64_t ul; + gs_uint64_t t1; + gs_uint64_t t2; + ul=ar.r.ul; + printf("%llu",ul); + } + break; + case LLONG_TYPE: + printf("%lld",ar.r.l); + break; + case FLOAT_TYPE: + printf("%f",ar.r.f); + break; + case TIMEVAL_TYPE: + { + gs_float_t t; + t= ar.r.t.tv_usec; + t=t/1000000; + t=t+ar.r.t.tv_sec; + printf("%lf sec",t); + } + break; + case VSTR_TYPE: + { + int x; + int c; + char * src; + src=(gs_sp_t)ar.r.vs.offset; + if ((truncate>=0) && (ar.r.vs.length>truncate)) { + ar.r.vs.length=truncate; + } + if ((ar.r.vs.length>0) && (src[ar.r.vs.length-1]==0)) { + ar.r.vs.length = ar.r.vs.length-1; + } + for(x=0;x=' '))&&(c!='|')) { + printf("%c",c); + } else { + printf("(0x%x)",(gs_uint8_t)c); + } + } + } + break; + default: + break; + } + if (y