void CheckAndMakeDirectory(char *dir, int clear ) { struct stat sbuf; int ret = stat(dir,&sbuf); if (ret >= 0 ) { if (!(sbuf.st_mode & S_IFDIR)){ fprintf(stderr,"Init:: %s not a directory\n", dir); Exit::DoExit(1); } if (clear){ ClearDir(dir); } } else { /* make new directory */ int code = mkdir(dir,0777); if (code < 0 ){ printf("Init::can't make directory %s\n",dir); perror(""); Exit::DoExit(1); } } }
void WPSRun::ClearDir(const QString sDir) { QDir dir(sDir); QFileInfoList list = dir.entryInfoList(); for (int iList=0;iList<list.count();iList++) { QFileInfo info = list[iList]; QString sFilePath = info.filePath(); if (info.isDir()) { // recursive if (info.fileName()!=".." && info.fileName()!=".") { ClearDir(sFilePath); } } else { // Do something with the file here QFile f(info.absoluteFilePath()); f.remove(); } } }
virtual void SetUp() { ClearDir(); ::mkdir(dir_.c_str(), 0755); mem_ = mem_pool_init( 1 << 20); // MB // init config ConfigFile &conf = *ConfigFile::GlobalInstance(); conf.SetValue(CONF_LDB_SESSION, CONF_LDB_TABLES, "t"); // use user specified time conf.SetValue(CONF_LDB_SESSION, "t.row_key", "k"); conf.SetValue(CONF_LDB_SESSION, "t.time_key", "t"); conf.SetValue(CONF_LDB_SESSION, "t.time_key_scale", "0"); conf.SetValue(CONF_LDB_SESSION, "t.time_key_len", "4"); conf.SetValue(CONF_LDB_SESSION, "t.cumulative_step", "10,100,200"); conf.SetValue(CONF_LDB_SESSION, "t.aggregate_desc", "count(*),max(value),min(value),sum(value)"); conf.SetValue(CONF_LDB_SESSION, "max_open_files", "512"); engine_ = NEW(mem_, LdbEngine)(dir_.c_str(), conf); ASSERT_EQ(0, engine_->Init()); }
virtual void TearDown() { DELETE(engine_); mem_pool_destroy(mem_); ClearDir(); }
bool WPSRun::initialize() { if(work_folder == "") { qDebug()<<"work_folder == """; return false; } ClearDir(work_folder); if(!p_namelist_tool->writeasciiWrf(work_folder)) { qDebug()<<"Ошибка при создании namelist.wps"; return false; } if(!p_namelist_tool->writeasciiWps(work_folder)) { qDebug()<<"Ошибка при создании namelist.input"; return false; } if(!p_namelist_tool->writeasciiOBSPROC(work_folder)) { qDebug()<<"Ошибка при создании namelist.obsproc"; return false; } if(!p_namelist_tool->writeasciiARWPost(work_folder)) { qDebug()<<"Ошибка при создании namelist.ARWPost"; return false; } ///////// WPS QFile::link(wps_root+"geogrid/src/geogrid.exe", work_folder+"geogrid.exe"); QFile::link(wps_root+"geogrid/GEOGRID.TBL.ARW", work_folder+"GEOGRID.TBL"); QFile::link(wps_root+"metgrid/src/metgrid.exe", work_folder+"metgrid.exe"); QFile::link(wps_root+"metgrid/METGRID.TBL.ARW", work_folder+"METGRID.TBL"); QFile::link(wps_root+"ungrib/src/ungrib.exe", work_folder+"ungrib.exe"); QFile::link(wps_root+"ungrib/Variable_Tables/Vtable.GFS", work_folder+"Vtable"); //////////END WPS ///////// WRF QDir dir(wrf_root+"run"); dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); QFileInfoList list = dir.entryInfoList(); for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); QFile::link(fileInfo.filePath(),work_folder+fileInfo.fileName()); } QFile::link(wrf_root+"main/ndown.exe", work_folder+"ndown.exe"); QFile::link(wrf_root+"main/nup.exe", work_folder+"nup.exe"); QFile::link(wrf_root+"main/real.exe", work_folder+"real.exe"); QFile::link(wrf_root+"main/tc.exe", work_folder+"tc.exe"); QFile::link(wrf_root+"main/wrf.exe", work_folder+"wrf.exe"); //////////END WRF QFile::link(wrf_root+"/MaxTools/mpd.hosts", work_folder+"mpd.hosts"); QFile::link(wrf_root+"/MaxTools/myhosts", work_folder+"myhosts"); // Link NCL files to draw images QFile::link(wrf_root+"/MaxTools/NCLrun.sh", work_folder+"NCLrun.sh"); QFile::link(wrf_root+"/MaxTools/NCLscript.ncl", work_folder+"NCLscript.ncl"); QFile::link(arwpost_root+"src/ARWpost.exe", work_folder+"ARWpost.exe"); GribLink(grib_files,work_folder); //////////WRFDA QFile::link(wrfda_root+"/var/da/da_wrfvar.exe", work_folder+"da_wrfvar.exe"); //Ассимиляция QFile::link(wrfda_root+"/var/run/be.dat.cv3", work_folder+"be.dat"); //link background error statistics as be.dat QFile::link(wrfda_root+"/var/da/da_update_bc.exe", work_folder+"da_update_bc.exe"); //Обновление граничных условий QFile::link(wrf_root+"/MaxTools/parame.in", work_folder+"parame.in"); // namelist для da_update_bc.exe QFile::link(wrfda_root+"/var/obsproc/src/obsproc.exe", work_folder+"obsproc.exe"); //Препроцессинг метеоинформации в LITTLE_R QFile::link(wrfda_root+"/var/obsproc/obserr.txt", work_folder+"obserr.txt"); //Препроцессинг метеоинформации в LITTLE_R QString filename = work_folder + "ob.little_r"; Little_r_fm12* little_r_fm12 = new Little_r_fm12(this); /**< указатель на Класс для записи в Little_r приземных наблюдений*/ little_r_fm12->OpenFile(filename); //Открываем файл для записи QDateTime date = p_namelist_tool->GetDateTimeStart(); for(int index=26001;index<26008;index++) { little_r_fm12->writeRZD_DB_data(index,date); //Пишем станцию } little_r_fm12->CloseFile(); // Закрываем файл //////////END WRFDA return true; }