/** * FIXME: Should replace any unsafe XML characters * and convert to utf-8. */ void QuickDC::Share::Manager::createFileList(Samurai::IO::Buffer* xmlout, QuickDC::Share::Dir* dir, bool incomplete) { if (!dir) { config->setGroup("User"); xmlout->append("<?xml version=\"1.1\" encoding=\"utf-8\" standalone=\"yes\"?>" XML_NEWLINE); xmlout->append("<FileListing Version=\"1\" CID=\""); xmlout->append(config->getString("Client ID", "")); xmlout->append("\" Generator=\"" PRODUCT "/" VERSION " (" SYSTEM "/" CPU ")\" Base=\"/\">" XML_NEWLINE); for (size_t i = 0; i < dirs.size(); i++) { QuickDC::Share::Dir* dir = dirs[i]; xmlout->append(XML_INDENT "<Directory Name=\""); XML::escape(xmlout, dir->getBaseName().c_str()); xmlout->append("\""); if (incomplete) xmlout->append(" Incomplete=\"1\""); xmlout->append(">" XML_NEWLINE); createFileList(xmlout, dir, incomplete); xmlout->append(XML_INDENT "</Directory>" XML_NEWLINE); } xmlout->append("</FileListing>" XML_NEWLINE); } else { // Add files to lists for (size_t i = 0; i < dir->files.size(); i++) { QuickDC::Share::File* file = dir->files[i]; for (int tab = 0; tab < file->getLevel()+1; tab++) xmlout->append(XML_INDENT); xmlout->append("<File Name=\""); XML::escape(xmlout, file->getBaseFileName().c_str()); xmlout->append("\" Size=\""); xmlout->append(file->getSize()); xmlout->append("\" TTH=\""); if (file->getTTH()) xmlout->append(file->getTTH()); xmlout->append("\" />" XML_NEWLINE); } // Add sub-directories for (size_t i = 0; i < dir->subdirs.size(); i++) { QuickDC::Share::Dir* mdir = dir->subdirs[i]; for (int tab = 0; tab < mdir->getLevel()+1; tab++) xmlout->append(XML_INDENT); xmlout->append("<Directory Name=\""); XML::escape(xmlout, mdir->getBaseName().c_str()); xmlout->append("\""); if (incomplete) xmlout->append(" Incomplete=\"1\""); xmlout->append(">" XML_NEWLINE); createFileList(xmlout, mdir, incomplete); for (int tab = 0; tab < mdir->getLevel()+1; tab++) xmlout->append(XML_INDENT); xmlout->append("</Directory>" XML_NEWLINE); } } }
//=========Functions SaPlayerWidget::SaPlayerWidget(QWidget *parent) : QWidget(parent) { saConfigFilePathString = QDir::currentPath() + "/../../../Config"; saConfigFilePathString = QDir::cleanPath(saConfigFilePathString); //---------- createDirModel(); createFileList(); readFileData(); processFileData(); createInfoDisplayScreen(); createControlPlane(); createPlayerPlane(); //-------Layouts QHBoxLayout * hLayout_1 = new QHBoxLayout; hLayout_1->addWidget(saFilesComboBox); hLayout_1->addWidget(freshDocumentFilesPushButton); hLayout_1->addWidget(openSaConfigFilePushButton); QHBoxLayout * hLayout_2 = new QHBoxLayout; hLayout_2->addWidget(openContainerPushButton); hLayout_2->addWidget(activePushButton); hLayout_2->addWidget(currentStepSpinBox); QVBoxLayout * vLayout_1 = new QVBoxLayout; vLayout_1->addLayout(hLayout_1); vLayout_1->addWidget(recordNowJointsDataPushButton); vLayout_1->addLayout(hLayout_2); vLayout_1->addWidget(playPlaneGroupBox); vLayout_1->addWidget(infoDisplayScreenTreeView); //vLayout_1->addWidget(cfgTextEdit); setLayout(vLayout_1); }
//main function int main(int argc, char *argv[]){ if (getArgs(argc, argv)){ //check that args are valid return 1; } printf("Beginning conversion program:\n"); int status = 0; //for wait() functions int i; //counter pid_t child_pid; //id for fork() //create list of files to convert in input_dir imageList = createFileList(input_dir); printf(" Found %d files to convert\n", getListLength(imageList)); printf(" Beginning child creation process\n\n"); //create convert_count processes right away for(i = 0; i < convert_count; i++) { child_pid = fork(); //create child if(child_pid != 0){ //parent removes file that child will convert removeNextFileFromList(imageList, child_pid); } else{ //child gets pid and calls convert function child_pid = getpid(); convert(argv, imageList, child_pid); return 0; } } //after convert_count children were created, keep waiting //for children to finish and creating new children //until all images have been converted printf("Waiting for children to complete...\n\n"); while(getListLength(imageList) != 0) { wait(&status); //wait for child child_pid = fork(); //create new child if(child_pid != 0){ //parent removes file that child will convert removeNextFileFromList(imageList, child_pid); } else{ //child gets pid and calls convert function child_pid = getpid(); convert(argv, imageList, child_pid); return 0; } } wait(&status); //wait for final child to finish printf("\nAll conversions completed\n"); return 0; //exit success }
void SRTMProvider::loadFileList() { QFile file(_cachedir + _srtmFileList); if (!file.open(QIODevice::ReadOnly)) { createFileList(); return; } QDataStream stream(&file); stream >> fileList; file.close(); return; }
void QuickDC::Share::Manager::createFileLists(bool incomplete) { QDBG("QuickDC::Share::Manager::createFileLists"); Samurai::IO::Buffer* xmlout = new Samurai::IO::Buffer(); createFileList(xmlout, 0, incomplete); { #ifdef DATADUMP QDBG("XML file list will be %i bytes long", (int) xmlout->size()); #endif Samurai::IO::File xmllist("~/.quickdc/files.xml"); if (xmllist.open(Samurai::IO::File::Write | Samurai::IO::File::Truncate)) { char* out = new char[xmlout->size()]; xmlout->pop(out, xmlout->size()); int written = xmllist.write(out, xmlout->size()); if (written == -1) QDBG("Error writing files.xml"); xmllist.close(); delete[] out; } } #ifdef BZIP2 { Samurai::IO::File dclist("~/.quickdc/files.xml.bz2"); Samurai::IO::BZip2Compressor* filter = new Samurai::IO::BZip2Compressor(); Samurai::IO::Buffer* writer = new Samurai::IO::Buffer(); bool ok = process(filter, xmlout, writer); if (ok && dclist.open(Samurai::IO::File::Write | Samurai::IO::File::Truncate)) { int written = dclist.write(writer, writer->size()); if (written == -1) QDBG("Error writing files.xml.bz2"); dclist.close(); } delete filter; delete writer; } #endif // BZIP2 #ifdef DATADUMP QDBG("Lists written to disk"); #endif delete xmlout; filelists = true; }