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); }
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_); }
/* Функция обрабатывающая текущее задание. Работает в два этапа: 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); }