Patch level : 12.0 1174

Files correlati     : ba1.exe

Commento:
Migliorata protezione aggiornamento tracciati sulla base dei dati Team
This commit is contained in:
Alessandro Bonazzi 2022-06-19 23:37:35 +02:00
parent c0c7f2e1f6
commit 1523d76a6c
2 changed files with 65 additions and 6 deletions

View File

@ -299,7 +299,7 @@ bool TManutenzione_app::create() // initvar e arrmask
modules = atol(argv(5));
prefix().set("");
load_des();
dump_trc(dir, des_too, modules);
dump_trc(dir, des_too, modules, true);
return false;
}
else
@ -326,6 +326,7 @@ bool TManutenzione_app::create() // initvar e arrmask
}
if (!::dongle().demo() && !set_firm())
return false;
convert_recdef();
}
_firm = atol(prefix().name());
@ -481,7 +482,7 @@ void TManutenzione_app::close_history()
xvt_fsys_remove_file(History_file);
}
void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const long modules)
void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const long modules, bool verbose)
{
TDir d;
d.get(LF_DIR);
@ -496,11 +497,16 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon
TString s(TR("Scarico dei tracciati standard in "));
s << dir;
TProgind p(items ? items : 1, s, false, true);
p.setstatus(1);
TProgind * p = nullptr;
if (verbose)
{
p = new TProgind(items ? items : 1, s, false, true);
p->setstatus(1);
}
for (int i = 2; i <= items; i++) //Salta il primo (dir.gen)
{
p.addstatus(1);
if (verbose)
p->addstatus(1);
TTrec& rc = (TTrec&)_recs[i];
TDir& dr = (TDir&)_dirs[i];
const long file_mod = (long)abs((int)dr.flags());
@ -525,6 +531,7 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon
ofstream out_dir(fn);
out_dir << dr;
}
safe_delete(p);
}
const char* TManutenzione_app::dumpfilename(const FileDes& dep) const
@ -1106,6 +1113,52 @@ void TManutenzione_app::recover()
send_campo_xml(); // Spedisce situazione via ftp
}
void TManutenzione_app::clean_recdef(const char * dir)
{
TFilename mask = dir;
mask.add("*");
mask.ext("dir");
remove_files(mask, false);
mask.ext("trr");
remove_files(mask, false);
}
void TManutenzione_app::convert_recdef(int firm)
{
TString pref = prefix().name();
const int curr_firm = prefix().get_codditta();
bool all_firms = firm < 0;
const int from_firm = all_firms || firm == 0 ? 1 : firm;
TString_array ditte;
const int to_firm = all_firms ? prefix().firms(ditte) : firm;
TFilename dir = firm2dir(0);
if (all_firms || firm == 0)
{
prefix().set("com");
dir.add("recdesc");
if (!dexist(dir))
make_dir(dir);
clean_recdef(dir);
dump_trc(dir);
}
for (int i = from_firm; i <= to_firm; i++)
{
set_firm(i);
dir = firm2dir(i);
dir.add("recdesc");
if (!dexist(dir))
make_dir(dir);
clean_recdef(dir);
dump_trc(dir);
}
if (curr_firm > 0)
set_firm(curr_firm);
else
prefix().set(pref);
}
void TManutenzione_app::convert_dir()
{
if (prefix().get_codditta() <= _history_firm)
@ -1255,6 +1308,10 @@ void TManutenzione_app::convert_dir()
d.set_flags(_level);
d.put(LF_DIR, _nordir, _sysdirop);
put_history(pref);
const int firm = prefix().is_com() ? 0 : prefix().get_codditta();
convert_recdef(firm);
}
void TManutenzione_app::load_des()

View File

@ -134,6 +134,8 @@ protected:
bool reset_converting();
bool try_to_recover(TSystemisamfile& f, int err);
void clean_recdef(const char * dir);
void convert_recdef(int firm = -1);
void update();
void update_dir();
void recover();
@ -145,7 +147,7 @@ protected:
void open_history();
void put_history(const char* firm);
void close_history();
void dump_trc(const char * dir, const bool des_too, const long modules);
void dump_trc(const char * dir, const bool des_too = true, const long modules = -1, bool verbose = false);
void repair_file(int i);
void save_file(const char * file);