Example #1
0
bool file_tmpl::create_common()
{
	if (copy_and_replace("Makefile", "Makefile") == false)
		return false;
	if (copy_and_replace("valgrind.sh", "valgrind.sh", true) == false)
		return false;

	string file;

	// for vc2003
	file.format("%s.sln", project_name_.c_str());
	if (copy_and_replace("master_service.sln", file.c_str()) == false)
		return false;
	file.format("%s.vcproj", project_name_.c_str());
	if (copy_and_replace("master_service.vcproj", file.c_str()) == false)
		return false;

	// for vc2008
	file.format("%s_vc2008.sln", project_name_.c_str());
	if (copy_and_replace("master_service_vc2008.sln", file.c_str()) == false)
		return false;
	file.format("%s_vc2008.vcproj", project_name_.c_str());
	if (copy_and_replace("master_service_vc2008.vcproj", file.c_str()) == false)
		return false;

	// for vc2010
	file.format("%s_vc2010.sln", project_name_.c_str());
	if (copy_and_replace("master_service_vc2010.sln", file.c_str()) == false)
		return false;
	file.format("%s_vc2010.vcxproj", project_name_.c_str());
	if (copy_and_replace("master_service_vc2010.vcxproj", file.c_str()) == false)
		return false;
	file.format("%s_vc2010.vcxproj.filters", project_name_.c_str());
	if (copy_and_replace("master_service_vc2010.vcxproj.filters", file.c_str()) == false)
		return false;

	// for vc2012
	file.format("%s_vc2012.sln", project_name_.c_str());
	if (copy_and_replace("master_service_vc2012.sln", file.c_str()) == false)
		return false;
	file.format("%s_vc2012.vcxproj", project_name_.c_str());
	if (copy_and_replace("master_service_vc2012.vcxproj", file.c_str()) == false)
		return false;
	file.format("%s_vc2012.vcxproj.filters", project_name_.c_str());
	if (copy_and_replace("master_service_vc2012.vcxproj.filters", file.c_str()) == false)
		return false;

	const char* name = "common_files";
	const FILE_FROM_TO tab[] = {
		{ "stdafx.h", "stdafx.h" },
		{ "stdafx.cpp", "stdafx.cpp" },
		{ NULL, NULL }
	};

	return files_copy(name, tab);
}
Example #2
0
static bool create_master_threads()
{
	create_common();

	string file(master_name);
	file << ".cf";
	if (copy_and_replace("master_threads.cf", file.c_str()) == false)
		return false;

	const char* name = "master_threads";
	const FILE_FROM_TO tab[] = {
		{ "main_threads.cpp", "main.cpp" },
		{ "master_threads.h", "master_service.h" },
		{ "master_threads.cpp", "master_service.cpp" },
		{ NULL, NULL }
	};

	return files_copy(name, tab, src_path_, dst_path_);
}
Example #3
0
/*
Функция обрабатывающая текущее задание. Работает в два этапа: 1. формирует список файлов для копирования и 2. выполняет копирование со создание каталогов в каталоге destDir.
*/
void CopyJob::handle(int id, const QStringList& sourceFiles, const QDir& destDir)
{
  CopyInfoList files;
  int i, countFiles(0);
  
  // если каталог не существует, завершаем работу
  if ( !destDir.exists() ){ 
    emit error(id, DestDirNotExists, destDir.absolutePath());
    return;
  }
  
  emit starting(id);
  // если при подгатовке файлов к копированию произошла ошибка, завершает работу
  for ( i = 0; i < sourceFiles.count(); i++ )
    try{
      countFiles += prepareCopy(i, 0, sourceFiles.at(i), destDir.absolutePath(), files);
    }catch (const CopyExcepion& e){
      if ( e.error != UserTerminate ) emit error(id, e.error, e.strError);
      return;
    }
  
  emit startingCopy(id, countFiles); // сумарное колличество каталогов и файлов.
    
  i = 0;
  while ( i < files.count() ){
    try{
      files_copy(id, files.at(i), i+1);
      i++;
    }catch (const  CopyExcepion& e){
      if ( e.error == UserTerminate ) break;
      int uc = handleFilesCopyException(id, e.error, e.strError);
      if ( uc ==  CancelOper ) break; 
      if ( uc ==  SkipOper ) i = skipFiles(files, i);
    }
  } 
  
  emit finished(id);
}