/* * Fetch a single file into a malloc'd buffer. The file size is returned * in *filesize. The returned buffer is always zero-terminated, which is * handy for text files. */ char * fetchFile(char *filename, size_t *filesize) { if (datadir_source) return slurpFile(datadir_source, filename, filesize); else return libpqGetFile(filename, filesize); }
char * Slurp::slurpFile( const char *filename ){ int fd; if(-1==(fd=open( filename, O_RDONLY ))){ char err_msg[128]; sprintf(err_msg, " File %s could not be opened for slurping", filename); perror(err_msg); return NULL; } return slurpFile( fd, true ); };
int main(int argc, char **argv) { XmlElt_t Root; Hash_t Attr; XmlDoc_t Doc; /* char *tstfiles[] = { "soap.xml", "tst2.xml", "tst3.xml", NULL }; */ // char *tstfiles[] = { "soap.xml", NULL }; char *tstfiles[] = { "test.xml", NULL }; // char *tstfiles[] = { "utf8.xml", NULL }; char **file = tstfiles; // char tst[]="%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E+%0A%3CPUSH_CLIENT+ENCRYPTED%3D%22No%22+PRIORITY%3D%22NORMAL%22%3E%0A++%3CCONTROL%3E%0A++++%3COFFER+IDOFFER%3D%22RQSCVFTOURDEFRANCE%22%2F%3E%0A++%3C%2FCONTROL%3E%0A++%3CCONTENT+FORMAT%3D%22A%22+TIMESTAMP%3D%22%22%3E%0A++++%3CFROM%3E%3C%2FFROM%3E%0A++++%3CUSER+TYPE%3D%22MSISDN%22+VALUE%3D%22663130190%22%2F%3E%0A++++%3CSUBJECT%3E%3C%2FSUBJECT%3E%0A++++%3CTEXT+LENGTH%3D%2211%22%3EON+A+ETE%C3%83%C2%A8%C3%83%C2%AC%C3%83%3F%3C%2FTEXT%3E%0A++%3C%2FCONTENT%3E%0A%3C%2FPUSH_CLIENT%3E"; char tst[]="%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E+%0A%3CPUSH_CLIENT+ENCRYPTED%3D%22No%22+PRIORITY%3D%22NORMAL%22%3E%0A++%3CCONTROL%3E%0A++++%3COFFER+IDOFFER%3D%22RQSCVFTOURDEFRANCE%22%2F%3E%0A++%3C%2FCONTROL%3E%0A++%3CCONTENT+FORMAT%3D%22A%22+TIMESTAMP%3D%22%22%3E%0A++++%3CFROM%3E%3C%2FFROM%3E%0A++++%3CUSER+TYPE%3D%22MSISDN%22+VALUE%3D%22661577662%22%2F%3E%0A++++%3CSUBJECT%3E%3C%2FSUBJECT%3E%0A++++%3CTEXT+LENGTH%3D%2249%22%3EEST+CE+QUE+L%27%C3%83%3FQUIPE+US+POSTAL+PEUT+ENCORE+GAGNER%3F%3C%2FTEXT%3E%0A++%3C%2FCONTENT%3E%0A%3C%2FPUSH_CLIENT%3E"; tb_errorlevel = TB_NOTICE; do { String_t S = slurpFile( *file++ ); // String_t S = tb_String("%s", tst); /* tb_UrlDecode(S); */ /* tb_Dump(S); */ /* // tb_UTF8_to_Latin1(S); */ /* tb_Dump(S); */ /* //tb_UTF8_to_Latin1(S); */ /* tb_Dump(S); */ // tb_Dump(tb_UrlEncode(S)); //tb_Dump(tb_UrlDecode(S)); tb_profile("start parsing\n"); Doc = tb_XmlDoc(S2sz(S)); if(! Doc) exit(1); tb_profile("doc parsed\n"); tb_Free(S); Root = XDOC_getRoot(Doc); String_t Reverse = XDOC_to_xml(Doc); fprintf(stderr, "%s", tb_toStr(Reverse)); exit(0); /* Root = XDOC_getRoot(Doc); tb_Dump( Root ); */ tb_profile("+Dom_to_xml\n"); S = XDOC_to_xml(Doc); tb_Dump(S); tb_profile("-Dom_to_xml\n"); // tb_Dump( S ); tb_Free(S); tb_profile("+free doc\n"); tb_Free(Doc); tb_profile("-free doc\n"); exit(0); } while( *file ); exit(0); fm_Dump(); Doc = tb_XmlDoc(NULL); Attr = tb_Hash(); tb_Replace(Attr, tb_String("oui"), "att1"); tb_Replace(Attr, tb_String("non"), "att2"); tb_Replace(Attr, tb_String("non"), "att3"); tb_Dump(Attr); Root = tb_XmlNodeElt(NULL, "rootelt", Attr); XDOC_setRoot(Doc, Root); fprintf(stderr, "%s\n", S2sz(XDOC_to_xml(Doc))); // fm_dumpChunks(); return 0; }
/*! Import a Position Weight Matrices file Imports file and parses the file position weight matrix file \param[in] std::string file */ void PWM::import(std::string& file){ std::string modelString=slurpFile(file); parse(modelString); }