diff --git a/src/cc/dapps/oraclefeed.cpp b/src/cc/dapps/oraclefeed.cpp index ba5e5deb7..cd38813d3 100644 --- a/src/cc/dapps/oraclefeed.cpp +++ b/src/cc/dapps/oraclefeed.cpp @@ -16,14 +16,98 @@ #include #include #include -#include "../../komodo_cJSON.c" -#include "../../komodo_bitcoind.h" -#define issue_curl(url,cmdstr) bitcoind_RPC(0,(char *)"curl",(char *)(url),0,0,(char *)(cmdstr)) +char *OS_nonportable_path(char *str) +{ + int32_t i; + for (i=0; str[i]!=0; i++) + if ( str[i] == '/' ) + str[i] = '\\'; + return(str); +} + +char *OS_portable_path(char *str) +{ +#ifdef _WIN32 + return(OS_nonportable_path(str)); +#else +#ifdef __PNACL + /*int32_t i,n; + if ( str[0] == '/' ) + return(str); + else + { + n = (int32_t)strlen(str); + for (i=n; i>0; i--) + str[i] = str[i-1]; + str[0] = '/'; + str[n+1] = 0; + }*/ +#endif + return(str); +#endif +} + +void *OS_loadfile(char *fname,uint8_t **bufp,long *lenp,long *allocsizep) +{ + FILE *fp; + long filesize,buflen = *allocsizep; + uint8_t *buf = *bufp; + *lenp = 0; + if ( (fp= fopen(OS_compatible_path(fname),"rb")) != 0 ) + { + fseek(fp,0,SEEK_END); + filesize = ftell(fp); + if ( filesize == 0 ) + { + fclose(fp); + *lenp = 0; + printf("OS_loadfile null size.(%s)\n",fname); + return(0); + } + if ( filesize > buflen ) + { + *allocsizep = filesize; + *bufp = buf = (uint8_t *)realloc(buf,(long)*allocsizep+64); + } + rewind(fp); + if ( buf == 0 ) + printf("Null buf ???\n"); + else + { + if ( fread(buf,1,(long)filesize,fp) != (unsigned long)filesize ) + printf("error reading filesize.%ld\n",(long)filesize); + buf[filesize] = 0; + } + fclose(fp); + *lenp = filesize; + //printf("loaded.(%s)\n",buf); + } //else printf("OS_loadfile couldnt load.(%s)\n",fname); + return(buf); +} + +void *OS_filestr(long *allocsizep,char *_fname) +{ + long filesize = 0; char *fname,*buf = 0; void *retptr; + *allocsizep = 0; + fname = malloc(strlen(_fname)+1); + strcpy(fname,_fname); + retptr = OS_loadfile(fname,&buf,&filesize,allocsizep); + free(fname); + return(retptr); +} + +char *issue_curl(char *url) +{ + long fsize; char curlstr[1024],*fname = "/tmp/oraclefeed.json" + sprintf(curlstr,"curl --url \"%s\" > %s",url); + system(curlstr); + return(OS_filestr(&fsize,fname)); +} cJSON *url_json(char *url) { - char *jsonstr; cJSON *json = 0; + cJSON *json = 0; if ( (jsonstr= issue_curl(url)) != 0 ) { printf("(%s) -> (%s)\n",url,jsonstr);