Patch level :10.0 188

Files correlati     :ba1.exe
Ricompilazione Demo : [ ]
Commento            :log di conversione!


git-svn-id: svn://10.65.10.50/trunk@17845 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-12-10 11:07:57 +00:00
parent 7ea3472e6f
commit a8984dd075

View File

@ -6,6 +6,8 @@
#include <dongle.h>
#include <printer.h>
#include <progind.h>
#include <reprint.h>
#include <reputils.h>
#include <utility.h>
#include <urldefid.h>
@ -38,7 +40,8 @@ class TManutenzione_app : public TSkeleton_application
long _level;
long _history_firm;
TRec_sheet* _rec;
FILE * _log;
TLog_report* _log;
bool _print_log;
bool _superprassi;
@ -65,11 +68,13 @@ protected:
void close_history();
void dump_trc(const char * dir, const bool des_too, const long modules);
void repair_file(int i);
void open_log();
void write_log(const char * line);
void close_log();
void save_file(const char * file);
void open_log();
void write_log(const char* line, const int severity = 0);
void close_log();
bool moveable_file(int file) const;
public:
@ -99,7 +104,7 @@ HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
return true;
}
TManutenzione_app::TManutenzione_app() : _browse(NULL), _mask(NULL), _firm(0), _level(0), _rec(NULL)
TManutenzione_app::TManutenzione_app() : _browse(NULL), _mask(NULL), _firm(0), _level(0), _rec(NULL), _log(NULL)
{
if (!fexist(Dir_file)) // controlla l'esistenza dei direttori standard (dir.gen e trc.gen)
{ // vengono creati se non esistono
@ -381,13 +386,35 @@ bool TManutenzione_app::destroy() // releasev e arrmask
}
void TManutenzione_app::open_log()
{
TFilename log;
log << firm2dir(0L) << '/' << "conv.log";
_log = fopen(log,"a");
{
_print_log = false;
if (_log == NULL)
fatal_box("Non posso aprire il file di log della conversione(%s)", (const char *) log);
_log = new TLog_report("Conversione");
}
void TManutenzione_app::write_log(const char* line, const int severity)
{
if (_log != NULL)
{
_log->log(severity, line);
if (severity > 0)
_print_log = true;
}
}
void TManutenzione_app::close_log()
{
if (_log != NULL)
{
if (_print_log)
{
TReport_book book;
book.add(*_log);
book.preview();
}
delete _log;
_log = NULL;
}
}
void TManutenzione_app::save_file(const char * file)
@ -411,17 +438,6 @@ void TManutenzione_app::save_file(const char * file)
TFilename dest_file(dest_path); dest_file << '/' << (const char *) source_file.name();
fcopy((const char *) source_file, dest_file);
}
}
void TManutenzione_app::write_log(const char * line)
{
fprintf(_log,"%s\n", line);
}
void TManutenzione_app::close_log()
{
fclose(_log);
}
@ -776,10 +792,9 @@ void TManutenzione_app::delete_riga (long riga_sel)
bool TManutenzione_app::recover(TSystemisamfile& f, int err)
{
if (err == -60 || err == -64 || err == _ispatherr ||
(err > -600 && err <= -300))
if (err == -60 || err == -64 || err == _ispatherr || (err > -600 && err <= -300))
{
err = f.packindex();
err = f.packindex(false, false);
}
return err == NOERR;
}
@ -800,7 +815,7 @@ void TManutenzione_app::repair_file(int i)
n.ext("cdx"); remove(n);
n.ext("fpt"); remove(n);
s.format(FR("File n. %d - %s : eliminato file errato"), i, (const char *)d.filename());
write_log(s);
write_log(s, 2);
}
else
{
@ -820,7 +835,7 @@ void TManutenzione_app::repair_file(int i)
d.set_len(reclen);
d.put(i, _nordir, _sysdirop);
s.format(FR("File n. %d - %s : corretto tracciato da %d a %d bytes"), i, (const char *)d.filename(), oldreclen, reclen);
write_log(s);
write_log(s, 1);
}
}
@ -915,7 +930,7 @@ void TManutenzione_app::update_dir()
TString msg(_MAX_PATH);
msg.format(FR("File n. %d - %s : eliminato file non utilizzato"), i, (const char *)d.filename());
write_log(msg);
write_log(msg, 1);
}
}
if (i > 2 && is_firm == old_is_firm)
@ -934,6 +949,7 @@ void TManutenzione_app::update_dir()
if ((err == _istrcerr) && (d.eod() == 0) && (fsize(d.filename()) < 4096))
{
bool kill = true;
//controllo solo all'aga
if (is_power_station())
kill = yesno_box(FR("Il tracciato record del file %d e' incoerente:\nSi desidera eliminare il file vuoto %s?"), i, d.filename());
if (kill)
@ -944,6 +960,11 @@ void TManutenzione_app::update_dir()
n.ext("cdx"); remove(n);
n.ext("fpt"); remove(n);
err = NOERR;
// se si decide di eliminare il file con tracciato del cazzo deve tenerne traccia nel log (nel caso di utonti..
//..è sempre così, perchè kill è sempre true)
TString msg;
msg.format(TR("Eliminato il file %d avente tracciato record incoerente"), n);
write_log(msg, 2);
}
} //if((err==_istrcerr...
@ -959,11 +980,11 @@ void TManutenzione_app::update_dir()
if (!recover(b, err))
{
TString msg(_MAX_PATH);
msg.format(TR("File n. %d - %s : errore n.ro %d"), i, (const char *)d.filename(), err);
write_log(msg);
msg.format(TR("Impossibile compattare il file %d - %s : errore n.ro %d"), i, (const char *)d.filename(), err);
write_log(msg, 2);
}
}
}
} //if(err!=NOERR && flags<10000L..
}
else
{
@ -1226,10 +1247,21 @@ void TManutenzione_app::convert_dir()
if (err != NOERR)
{
if (!yesno_box(FR("Il file %d non puo' essere aperto:\nErrore %d. Continuare ugualmente?"),i,err))
bool go_on = true;
//controllo solo all'aga
if (is_power_station())
go_on = yesno_box(FR("Il file %d non puo' essere aperto:\nErrore %d. Continuare ugualmente?"), i, err);
if (!go_on)
stop_run();
else
else
{
//si decide di proseguire anche se il file non può essere aperto ne tiene traccia nel log (nel caso di utonti..
//..è sempre così, perchè go_on è sempre true)
TString msg;
msg.format(TR("Il file %d non può essere aperto. Errore %d"), i, err);
write_log(msg, 2);
continue;
}
}
} //if (i > 2 && err != NOERR &&...
@ -1502,8 +1534,7 @@ void TManutenzione_app::update()
s.format(FR("Conversione del %s"), (const char*)TDate(TODAY).string());
write_log(s);
write_log("");
s.format(TR("Dati comuni"));
write_log(s);
write_log(TR("Dati comuni"));
write_log("");
update_dir();
@ -1541,9 +1572,7 @@ void TManutenzione_app::update()
ditte.readat(rec);
}
ditte.close();
write_log("--------------------");
write_log("");
//chiude il log di conversione
close_log();
if (firm > 0) set_firm(firm);