int readDATADDS(OCstate* state, OCtree* tree, OCflags flags) { int stat = OC_NOERR; long lastmod = -1; #ifdef OCDEBUG fprintf(stderr,"readDATADDS:\n"); #endif if((flags & OCONDISK) == 0) { ocurisetconstraints(state->uri,tree->constraint); stat = readpacket(state,state->uri,state->packet,OCDATADDS,&lastmod); if(stat == OC_NOERR) state->datalastmodified = lastmod; tree->data.datasize = ocbyteslength(state->packet); } else { /*((flags & OCONDISK) != 0) */ OCURI* url = state->uri; int fileprotocol = 0; char* readurl = NULL; fileprotocol = (strcmp(url->protocol,"file")==0); if(fileprotocol && !state->curlflags.proto_file) { readurl = ocuribuild(url,NULL,NULL,0); stat = readfiletofile(readurl, ".dods", tree->data.file, &tree->data.datasize); } else { int flags = 0; if(!fileprotocol) flags |= OCURICONSTRAINTS; flags |= OCURIENCODE; flags |= OCURIUSERPWD; ocurisetconstraints(url,tree->constraint); readurl = ocuribuild(url,NULL,".dods",flags); MEMCHECK(readurl,OC_ENOMEM); if (ocdebug > 0) {fprintf(stderr, "fetch url=%s\n", readurl);fflush(stderr);} stat = ocfetchurl_file(state->curl, readurl, tree->data.file, &tree->data.datasize, &lastmod); if(stat == OC_NOERR) state->datalastmodified = lastmod; if (ocdebug > 0) {fprintf(stderr,"fetch complete\n"); fflush(stderr);} } free(readurl); } return OCTHROW(stat); }
int readDATADDS(OCstate* state, OCtree* tree) { int stat; long lastmod = -1; #ifndef OC_DISK_STORAGE dapurlsetconstraints(&state->url,tree->constraint); stat = readpacket(state->curl,&state->url,state->packet,OCDATADDS,&lastmod); if(stat == OC_NOERR) state->datalastmodified = lastmod; tree->data.datasize = ocbyteslength(state->packet); #else /*OC_DISK_STORAGE*/ DAPURL* url = &state->url; int fileprotocol = 0; fileprotocol = (strncmp(url->base,"file:",5)==0); if(fileprotocol && !oc_curl_file_supported) { stat = readfiletofile(url->base, ".dods", tree->data.file, &tree->data.datasize); } else { char* fetchurl; dapurlsetconstraints(url,tree->constraint); fetchurl = dapurlgeturl(url,NULL,".dods",!fileprotocol); MEMCHECK(fetchurl,OC_ENOMEM); if (ocdebug > 0) {fprintf(stderr, "fetch url=%s\n", fetchurl);fflush(stderr);} stat = ocfetchurl_file(state->curl, fetchurl, tree->data.file, &tree->data.datasize, &lastmod); if(stat == OC_NOERR) state->datalastmodified = lastmod; if (ocdebug > 0) {fprintf(stderr,"fetch complete\n"); fflush(stderr);} free(fetchurl); } #endif /*OC_DISK_STORAGE*/ return THROW(stat); }
int NCD4_readDAP(NCD4INFO* state, int flags) { int stat = NC_NOERR; long lastmod = -1; if((flags & NCF_ONDISK) == 0) { stat = readpacket(state,state->uri,state->curl->packet,NCD4_DAP,&lastmod); if(stat == NC_NOERR) state->data.daplastmodified = lastmod; } else { /*((flags & NCF_ONDISK) != 0) */ NCURI* url = state->uri; int fileprotocol = (strcmp(url->protocol,"file")==0); if(fileprotocol) { stat = readfiletofile(state, url, ".dap", state->data.ondiskfile, &state->data.datasize); } else { char* readurl = NULL; int flags = 0; if(!fileprotocol) flags |= NCURIQUERY; flags |= NCURIENCODE; flags |= NCURIPWD; #ifdef FIX ncurisetconstraints(url,state->constraint); #endif readurl = ncuribuild(url,NULL,".dods",NCURISVC); if(readurl == NULL) return THROW(NC_ENOMEM); stat = NCD4_fetchurl_file(state->curl, readurl, state->data.ondiskfile, &state->data.datasize, &lastmod); nullfree(readurl); if(stat == NC_NOERR) state->data.daplastmodified = lastmod; } } return THROW(stat); }