From c35644aa10509a94ea8a91d8740c25d004c33b6f Mon Sep 17 00:00:00 2001 From: Peter Hill Date: Fri, 15 Mar 2024 16:21:08 +0000 Subject: [PATCH 1/3] Fix wrong return type from function definition --- oc2/oc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oc2/oc.c b/oc2/oc.c index c82c46f7dc..226eb681ea 100644 --- a/oc2/oc.c +++ b/oc2/oc.c @@ -1762,13 +1762,13 @@ fetch command. \retval the HTTP code */ -OCerror +int oc_httpcode(OCobject link) { OCstate* state; OCVERIFY(OC_State,link); OCDEREF(OCstate*,state,link); - return state->error.httpcode; + return (int)state->error.httpcode; } /**************************************************/ From 7f1ccdc877e99fcfec6d6b45f8ad3e783175b16e Mon Sep 17 00:00:00 2001 From: Peter Hill Date: Fri, 15 Mar 2024 17:25:09 +0000 Subject: [PATCH 2/3] Silence conversion warnings in oc2 --- oc2/daplex.c | 2 +- oc2/dapparse.c | 8 ++++---- oc2/occompile.c | 13 ++++++------- oc2/ocdata.c | 12 ++++++------ oc2/ocdump.c | 27 +++++++++++++-------------- oc2/ochttp.c | 2 +- oc2/ocinternal.c | 8 ++++---- oc2/ocread.c | 4 ++-- oc2/ocutil.c | 9 ++++----- oc2/xxdr.c | 9 +++------ 10 files changed, 44 insertions(+), 50 deletions(-) diff --git a/oc2/daplex.c b/oc2/daplex.c index dcadec50ea..84ea4c967c 100644 --- a/oc2/daplex.c +++ b/oc2/daplex.c @@ -283,7 +283,7 @@ daplex(YYSTYPE* lvalp, DAPparsestate* state) static void dapaddyytext(DAPlexstate* lex, int c) { - ncbytesappend(lex->yytext,c); + ncbytesappend(lex->yytext, (char)c); ncbytesnull(lex->yytext); } diff --git a/oc2/dapparse.c b/oc2/dapparse.c index ed18d5035a..84103c5661 100644 --- a/oc2/dapparse.c +++ b/oc2/dapparse.c @@ -148,7 +148,7 @@ dap_arraydecl(DAPparsestate* state, Object name, Object size) dim = newocnode((char*)name,OC_Dimension,state); else dim = newocnode(NULL,OC_Dimension,state); - dim->dim.declsize = value; + dim->dim.declsize = (size_t)value; return dim; } @@ -203,8 +203,8 @@ dap_attrset(DAPparsestate* state, Object name, Object attributes) static int isglobalname(const char* name) { - int len = strlen(name); - int glen = strlen("global"); + size_t len = strlen(name); + size_t glen = strlen("global"); const char* p; if(len < glen) return 0; p = name + (len - glen); @@ -362,7 +362,7 @@ dapsemanticerror(DAPparsestate* state, OCerror err, const char* msg) static char* flatten(char* s, char* tmp, size_t tlen) { - int c; + char c; char* p,*q; strncpy(tmp,s,tlen); tmp[tlen] = '\0'; diff --git a/oc2/occompile.c b/oc2/occompile.c index 9faf7d2e7d..ccb8c3b0d2 100644 --- a/oc2/occompile.c +++ b/oc2/occompile.c @@ -17,7 +17,7 @@ /* Forward */ static OCdata* newocdata(OCnode* pattern); -static size_t ocxdrsize(OCtype etype,int isscalar); +static off_t ocxdrsize(OCtype etype,int isscalar); static OCerror occompile1(OCstate*, OCnode*, XXDR*, OCdata**); static OCerror occompilerecord(OCstate*, OCnode*, XXDR*, OCdata**); static OCerror occompilefields(OCstate*, OCdata*, XXDR*, int istoplevel); @@ -289,7 +289,7 @@ occompileatomic(OCstate* state, OCdata* data, XXDR* xxdrs) { OCerror ocstat = OC_NOERR; int i; - off_t nelements,xdrsize; + off_t xdrsize; unsigned int xxdrcount; OCnode* xnode = data->pattern; int scalar = (xnode->array.rank == 0); @@ -298,7 +298,7 @@ occompileatomic(OCstate* state, OCdata* data, XXDR* xxdrs) if(!scalar) { /* Use the count from the datadds */ - nelements = octotaldimsize(xnode->array.rank,xnode->array.sizes); + size_t nelements = octotaldimsize(xnode->array.rank,xnode->array.sizes); /* Get first copy of the dimension count */ if(!xxdr_uint(xxdrs,&xxdrcount)) {ocstat = OC_EXDR; goto fail;} if(xxdrcount != nelements) {ocstat=OCTHROW(OC_EINVALCOORDS); goto fail;} @@ -308,7 +308,6 @@ occompileatomic(OCstate* state, OCdata* data, XXDR* xxdrs) if(xxdrcount != nelements) {ocstat=OCTHROW(OC_EINVALCOORDS); goto fail;} } } else { /*scalar*/ - nelements = 1; xxdrcount = 1; } @@ -324,7 +323,7 @@ occompileatomic(OCstate* state, OCdata* data, XXDR* xxdrs) case OC_Int64: case OC_UInt64: case OC_Float32: case OC_Float64: /* Skip the data */ - xxdr_skip(xxdrs,data->ninstances*data->xdrsize); + xxdr_skip(xxdrs,(off_t)data->ninstances*data->xdrsize); break; /* Do the fixed sized, possibly packed cases */ @@ -332,7 +331,7 @@ occompileatomic(OCstate* state, OCdata* data, XXDR* xxdrs) case OC_UByte: case OC_Char: /* Get the totalsize and round up to multiple of XDRUNIT */ - xdrsize = data->ninstances*data->xdrsize; + xdrsize = (off_t)data->ninstances*data->xdrsize; xdrsize = RNDUP(xdrsize); /* Skip the data */ xxdr_skip(xxdrs,xdrsize); @@ -419,7 +418,7 @@ istoplevel(OCnode* node) /* XDR representation size depends on if this is scalar or not */ -static size_t +static off_t ocxdrsize(OCtype etype, int isscalar) { switch (etype) { diff --git a/oc2/ocdata.c b/oc2/ocdata.c index 26179d273e..58f97c885d 100644 --- a/oc2/ocdata.c +++ b/oc2/ocdata.c @@ -292,7 +292,7 @@ ocread(OCdata* data, XXDR* xdrs, char* memory, size_t memsize, size_t start, siz int i; OCnode* pattern; OCtype etype; - off_t elemsize, totalsize, xdrtotal, xdrstart; + off_t xdrtotal, xdrstart; int scalar; OCASSERT(data != NULL); @@ -306,11 +306,11 @@ ocread(OCdata* data, XXDR* xdrs, char* memory, size_t memsize, size_t start, siz scalar = (pattern->array.rank == 0); /* Note that for strings, xdrsize == 0 */ - xdrtotal = count*data->xdrsize; /* amount (in xdr sizes) to read */ - xdrstart = start*data->xdrsize; /* offset from the start of the data */ + xdrtotal = (off_t)count*data->xdrsize; /* amount (in xdr sizes) to read */ + xdrstart = (off_t)start*data->xdrsize; /* offset from the start of the data */ - elemsize = octypesize(etype); /* wrt memory, not xdrsize */ - totalsize = elemsize*count; + size_t elemsize = octypesize(etype); /* wrt memory, not xdrsize */ + size_t totalsize = elemsize*count; /* validate memory space*/ if(memsize < totalsize) return OCTHROW(OC_EINVAL); @@ -398,7 +398,7 @@ ocread(OCdata* data, XXDR* xdrs, char* memory, size_t memsize, size_t start, siz char** sp = (char**)memory; if(count > data->nstrings) return OCTHROW(OC_EDATADDS); - for(i=0;istrings[start+i]; xxdr_setpos(xdrs,offset); diff --git a/oc2/ocdump.c b/oc2/ocdump.c index a87dca9722..ea9b2e6bcc 100644 --- a/oc2/ocdump.c +++ b/oc2/ocdump.c @@ -38,7 +38,7 @@ static void tabto(int pos, NCbytes* buffer) { int bol,len,pad; - len = ncbyteslength(buffer); + len = (int)ncbyteslength(buffer); /* find preceding newline */ for(bol=len-1;;bol--) { int c = ncbytesget(buffer,(size_t)bol); @@ -233,7 +233,7 @@ addfield(char* field, size_t llen, char* line, int align) int len,rem; strlcat(line,"|",llen); strlcat(line,field,llen); - len = strlen(field); + len = (int)strlen(field); rem = (align - len); while(rem-- > 0) strlcat(line," ",llen); } @@ -312,7 +312,7 @@ dumpfield(size_t index, char* n8, int isxdr) static void typedmemorydump(char* memory, size_t len, int fromxdr) { - unsigned int i,count,rem; + unsigned int i,rem; char line[1024]; char* pmem; char mem[8]; @@ -331,7 +331,7 @@ typedmemorydump(char* memory, size_t len, int fromxdr) strlcat(line,"\n",sizeof(line)); fprintf(stdout,"%s",line); - count = (len / sizeof(int)); + size_t count = (len / sizeof(int)); rem = (len % sizeof(int)); for(pmem=memory,i=0;itree->data.memory; mem += root->tree->data.bod; - len = root->tree->data.datasize; - len -= root->tree->data.bod; + len = (size_t)root->tree->data.datasize; + len -= (size_t)root->tree->data.bod; ocdumpmemory(mem,len,xdrencoded,level); } } @@ -651,8 +650,8 @@ ocdumpdatapath(OCstate* state, OCdata* data, NCbytes* buffer) } if(pattern->octype == OC_Atomic) { if(pattern->array.rank > 0) { - off_t xproduct = octotaldimsize(pattern->array.rank,pattern->array.sizes); - snprintf(tmp,sizeof(tmp),"[0..%lu]",(unsigned long)xproduct-1); + size_t xproduct = octotaldimsize(pattern->array.rank,pattern->array.sizes); + snprintf(tmp,sizeof(tmp),"[0..%lu]",xproduct-1); ncbytescat(buffer,tmp); } } diff --git a/oc2/ochttp.c b/oc2/ochttp.c index 8fd7279991..15c4b6680b 100644 --- a/oc2/ochttp.c +++ b/oc2/ochttp.c @@ -69,7 +69,7 @@ ocfetchurl_file(CURL* curl, const char* url, FILE* stream, oclog(OCLOGNOTE,"filesize: %lu bytes",fetchdata.size); #endif if (sizep != NULL) - *sizep = fetchdata.size; + *sizep = (off_t)fetchdata.size; /* Get the last modified time */ if(filetime != NULL) cstat = curl_easy_getinfo(curl,CURLINFO_FILETIME,filetime); diff --git a/oc2/ocinternal.c b/oc2/ocinternal.c index ef82342a38..c3291e89f7 100644 --- a/oc2/ocinternal.c +++ b/oc2/ocinternal.c @@ -421,12 +421,12 @@ static OCerror ocextractddsinfile(OCstate* state, OCtree* tree, OCflags flags) { OCerror stat = OC_NOERR; - size_t ddslen, bod, bodfound; + size_t ddslen, bod; /* Read until we find the separator (or EOF)*/ ncbytesclear(state->packet); rewind(tree->data.file); - bodfound = 0; + int bodfound = 0; do { char chunk[1024]; size_t count; @@ -511,8 +511,8 @@ ocget_rcproperties(OCstate* state) unsigned long interval=0; if(sscanf(option,"%lu/%lu",&idle,&interval) != 2) fprintf(stderr,"Illegal KEEPALIVE VALUE: %s\n",option); - state->curlkeepalive.idle = idle; - state->curlkeepalive.interval = interval; + state->curlkeepalive.idle = (long)idle; + state->curlkeepalive.interval = (long)interval; state->curlkeepalive.active = 1; } } diff --git a/oc2/ocread.c b/oc2/ocread.c index c070346bf3..de6e4c014a 100644 --- a/oc2/ocread.c +++ b/oc2/ocread.c @@ -139,7 +139,7 @@ fprintf(stderr,"readDATADDS:\n"); stat = readpacket(state,state->uri,state->packet,OCDATADDS,ocflags,&lastmod); if(stat == OC_NOERR) state->datalastmodified = lastmod; - tree->data.datasize = ncbyteslength(state->packet); + tree->data.datasize = (off_t)ncbyteslength(state->packet); } else { /*((flags & OCONDISK) != 0) */ NCURI* url = state->uri; int fileprotocol = 0; @@ -201,7 +201,7 @@ fprintf(stderr,"readfiletofile: written!=length: %lu :: %lu\n", stat = OC_EIO; } } - if(sizep != NULL) *sizep = len; + if(sizep != NULL) *sizep = (off_t)len; unwind: ncbytesfree(packet); return OCTHROW(stat); diff --git a/oc2/ocutil.c b/oc2/ocutil.c index 5366feb1c8..a5000be9e3 100644 --- a/oc2/ocutil.c +++ b/oc2/ocutil.c @@ -134,7 +134,6 @@ freeOCnode(OCnode* cdf, int deep) int ocfindbod(NCbytes* buffer, size_t* bodp, size_t* ddslenp) { - unsigned int i; char* content; size_t len = ncbyteslength(buffer); const char** marks; @@ -144,7 +143,7 @@ ocfindbod(NCbytes* buffer, size_t* bodp, size_t* ddslenp) for(marks = DDSdatamarks;*marks;marks++) { const char* mark = *marks; size_t tlen = strlen(mark); - for(i=0;idata.xdrs; - len = xxdr_length(xdrs); + len = (size_t)xxdr_length(xdrs); if(len < strlen(ERRTAG)) return; /* no room */ ckp = xxdr_getpos(xdrs); @@ -619,7 +618,7 @@ occopycat(char* dst, size_t size, size_t n, ...) for(i=0;ipos + len > xdrs->length) return 0; if(len > 0) { - count = fread(addr, (size_t)len, (size_t)1, (FILE*)xdrs->data); - if(count <= 0) { + size_t count = fread(addr, (size_t)len, (size_t)1, (FILE*)xdrs->data); + if(count == 0) { ok=0; goto done; } From cc96826d41b32f87e646fbb47666ce773b85e907 Mon Sep 17 00:00:00 2001 From: Peter Hill Date: Fri, 15 Mar 2024 17:25:35 +0000 Subject: [PATCH 3/3] Flip conditionals to avoid extraneous copying and type conversion --- oc2/ocinternal.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/oc2/ocinternal.c b/oc2/ocinternal.c index c3291e89f7..2daf531f1f 100644 --- a/oc2/ocinternal.c +++ b/oc2/ocinternal.c @@ -385,15 +385,13 @@ static OCerror ocextractddsinmemory(OCstate* state, OCtree* tree, OCflags flags) { OCerror stat = OC_NOERR; - size_t ddslen, bod, bodfound; + size_t ddslen, bod; /* Read until we find the separator (or EOF)*/ - bodfound = ocfindbod(state->packet,&bod,&ddslen); - if(!bodfound) {/* No BOD; pretend */ - bod = tree->data.bod; - ddslen = tree->data.datasize; + int bodfound = ocfindbod(state->packet,&bod,&ddslen); + if(bodfound) { + tree->data.bod = (off_t)bod; + tree->data.ddslen = (off_t)ddslen; } - tree->data.bod = bod; - tree->data.ddslen = ddslen; /* copy out the dds */ if(ddslen > 0) { tree->text = (char*)ocmalloc(ddslen+1); @@ -437,16 +435,10 @@ ocextractddsinfile(OCstate* state, OCtree* tree, OCflags flags) ncbytesnull(state->packet); bodfound = ocfindbod(state->packet,&bod,&ddslen); } while(!bodfound); - if(!bodfound) {/* No BOD; pretend */ - bod = tree->data.bod; - ddslen = tree->data.datasize; -#ifdef OCDEBUG -fprintf(stderr,"missing bod: ddslen=%lu bod=%lu\n", -(unsigned long)ddslen,(unsigned long)bod); -#endif + if(bodfound) { + tree->data.bod = (off_t)bod; + tree->data.ddslen = (off_t)ddslen; } - tree->data.bod = bod; - tree->data.ddslen = ddslen; /* copy out the dds */ if(ddslen > 0) { tree->text = (char*)ocmalloc(ddslen+1);