Пример #1
0
bool addNewFile(string fileName, string address, string owner) {
	if (isSaved(fileName)) throw accessError(SAVED);
	if (!isExisting(address)) throw accessError(NO_FILE);

	string fileDirectory = getFilePath(fileName);
	ifstream fileToCopy(address);

	char c;
	if (mkdir(fileDirectory.c_str())) throw accessError(ERR_CR_DIR);						//error creating directory
	ofstream fileToCreate(fileDirectory + '\\' + fileName);
	while (true) {
		c = fileToCopy.get();
		if (!fileToCopy.eof())
			fileToCreate.put(c);
		else break;
	}

	fileToCopy.close();
	fileToCreate.close();

	createPermFile(fileName, owner);
	createDiffFile(fileName);

	return true;
}
Пример #2
0
void addFile(string fileName, string address) {
	string fileDirectory = getFilePath(fileName);
	ifstream fileToCopy(address);
	ofstream fileToCreate(fileDirectory + '\\' + fileName);

	char c;
	while (true) {
		c = fileToCopy.get();
		if (!fileToCopy.eof())
			fileToCreate.put(c);
		else break;
	}

	fileToCopy.close();
	fileToCreate.close();
}
Пример #3
0
void CopyTask::copyFile( const QString& file, const QString& dest )
{
    if( file == dest )
        return;
    qDebug()<<"Copy file from: "<<file<<" dest: "<<dest;
    QFileInfo inf( dest );
    if( inf.exists() )
    {
        if( yesToAll )
        {
            QFile::remove( dest );
        }
        else
        {
            copyOverwriteMutex.lock();
            emit askOverwrite( dest );
            copyOverwriteAnswered.wait( &copyOverwriteMutex );
            int ret = copyOverwriteAnswer;
            copyOverwriteMutex.unlock();
            if( ret == QMessageBox::No )
            {
                return;
            }
            else if( ret == QMessageBox::Yes )
            {
                QFile::remove( dest );
            }
            else if( ret == QMessageBox::YesToAll )
            {
                QFile::remove( dest );
                yesToAll = true;
            }
        }
    }
    QFile fileToCopy( file );
    if( !fileToCopy.copy( dest ) )
    {
        qDebug()<<"File copy failed.";
    }
}
Пример #4
0
void Builder::run()
{
    VLM_LatestError = BUILDER_NO_ERROR;
    //InterfaceArchiver * archives =new InterfaceArchiver();
    QString MCL_CurrentFilePath = "";
    int count;
    QFile VXL_UpdateListFile(VCM_OutputFilePath);
    QFileInfo VXL_UpdateListFileInfo;
    QDir VXL_UpdateListDir;
    //On vérirife l'existence du dossier
    VXL_UpdateListFileInfo.setFile(VXL_UpdateListFile);
    VXL_UpdateListDir = VXL_UpdateListFileInfo.absoluteDir();
    if(!VXL_UpdateListDir.exists())
    {
       VXL_UpdateListDir.mkpath(VXL_UpdateListFileInfo.absolutePath());
    }
    else
    {
        //On vérifie la présence du fichier
        if(VXL_UpdateListFile.exists())
        {
            //On le supprime
            VXL_UpdateListFile.remove();
        }
    }

    //On ouvre le fichier
    if (!VXL_UpdateListFile.open(QIODevice::WriteOnly | QIODevice::Text))
    {
            emit NotifyErrorMsg("Unable to open UpdateList File");
            VLM_LatestError = BUILDER_ERROR_CANT_OPEN_FILE;
            return;
    }
    //On créé le buffer pour insèrer du texte
    QTextStream VXL_OutTextStream(&VXL_UpdateListFile);
    count = OMM_ListFilesToTreate.size();
    VXL_OutTextStream << "[files]" <<"\n" << "fcount=" << count << "\n";
    for(int i=0; i<OMM_ListFilesToTreate.size();i++)
    {
        MCL_CurrentFilePath = 	OMM_ListFilesToTreate[i]->getPath() + "/"
                + OMM_ListFilesToTreate[i]->getFilename().section('/', -1);
        qDebug() << MCL_CurrentFilePath;
        //On calcul le hash du fichier
        OMM_ListFilesToTreate[i]->setSha1(CalcSha1(MCL_CurrentFilePath));

        //Si demandé, on affiche le fichier en cours de traitement
        #ifdef ENABLE_DEBUG_SHOWLISTS
            #ifdef QT_DEBUG
                    qDebug()    << "File :" << i+1 << "/" <<OMM_ListFilesToTreate.size()
                                << OMM_ListFilesToTreate[i]->getFilename() 	<< "|"
                                << OMM_ListFilesToTreate[i]->getpriority()	<< "|"
                                << OMM_ListFilesToTreate[i]->getPath()		<< "|"
                                << OMM_ListFilesToTreate[i]->getSha1() ;
            #endif //QT_DEBUG
        #endif //ENABLE_DEBUG_SHOWLISTS

        //On écris la ligne qui le concerne
        if(QString::compare(MCL_CurrentFilePath, VCM_ReferenceFilePath) == 0)
        {//Fichier de référence

        }
        else
        {//Fichier "normal"
                    count++;
            VXL_OutTextStream     << "F"<<i<<"="
            << OMM_ListFilesToTreate[i]->getFilename() 	<< "|"
            << OMM_ListFilesToTreate[i]->getSha1()		<< "|"
            << OMM_ListFilesToTreate[i]->getpriority()
            << "\n";
        }
        /***********TODO****************/
        QString fileToCopy(OMM_ListFilesToTreate[i]->getPath() + "/"
                           + OMM_ListFilesToTreate[i]->getFilename().section('/', -1));
        QString subPath(OMM_ListFilesToTreate[i]->getFilename().section('/', 0, -2));
        VXL_UpdateListDir.mkpath(subPath);
        QFile::copy(fileToCopy, VCM_ReferenceFilePath+OMM_ListFilesToTreate[i]->getFilename());
        // QFile::copy(OMM_ListFilesToTreate[i]->getFilename(),OMM_ListFilesToTreate[i]->getFilename());
        // On Maj la ProgressBar
        emit NotifyProgress(i+1,OMM_ListFilesToTreate.size());
    }
    return;
}