bool CRapidDownloader::parse() { gzFile fp=gzopen(path.c_str(), "r"); if (fp==Z_NULL) { LOG_ERROR("Could not open %s", path.c_str()); return false; } char buf[IO_BUF_SIZE]; repos.clear(); int i=0; while (gzgets(fp, buf, sizeof(buf))!=Z_NULL) { std::string tmp=buf; std::string url=getStrByIdx(tmp,',',1); i++; if (url.size()>0) { //create new repo from url CRepo repotmp=CRepo(url, this); repos.push_back(repotmp); } else { LOG_ERROR("Parse Error %s, Line %d: %s",path.c_str(),i,buf); return false; } } gzclose(fp); LOG_INFO("Found %d repos in %s",repos.size(),path.c_str()); return true; }
bool CRepo::parse() { LOG_DEBUG("%s",tmpFile.c_str()); gzFile fp=gzopen(tmpFile.c_str(), "r"); if (fp==Z_NULL) { LOG_ERROR("Could not open %s",tmpFile.c_str()); return false; } char buf[IO_BUF_SIZE]; sdps.clear(); while ((gzgets(fp, buf, sizeof(buf)))!=Z_NULL) { for (unsigned int i=0; i<sizeof(buf); i++) { if (buf[i]=='\n') { buf[i]=0; break; } } std::string tmp=buf; std::string shortname=getStrByIdx(tmp,',',0); std::string md5=getStrByIdx(tmp,',',1); std::string depends=getStrByIdx(tmp,',',2); std::string name=getStrByIdx(tmp,',',3); if (shortname.size()>0) { //create new repo from url CSdp sdptmp=CSdp(shortname, md5, name, depends, repourl); rapid->addRemoteDsp(sdptmp); } } int errnum=Z_OK; const char* errstr = gzerror(fp, &errnum); switch(errnum) { case Z_OK: case Z_STREAM_END: break; default: LOG_ERROR("%d %s\n", errnum, errstr); } gzclose(fp); return true; }