Exemple #1
0
/**
 * 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;
}
Exemple #5
0
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;
}