From eb24e03b95798843b4cb5b1730d02ecb9ba0c6d3 Mon Sep 17 00:00:00 2001 From: angelo Date: Mon, 17 Jun 1996 09:27:56 +0000 Subject: [PATCH] Modifiche effettuate per far ripartire automaticamente una conversione interrotta per svariate cause. (GPF, Insufficient memory ecc.). git-svn-id: svn://10.65.10.50/trunk@3002 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba0.cpp | 37 +++++++++++++++++++++++++++++++++++-- ba/ba1100.cpp | 42 ++++++++++++++++++++++++++++-------------- 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/ba/ba0.cpp b/ba/ba0.cpp index e267e2292..647b145f1 100755 --- a/ba/ba0.cpp +++ b/ba/ba0.cpp @@ -32,7 +32,6 @@ public: virtual ~TPicture_mask() {} }; - TPicture_mask::TPicture_mask(const char* name, int dx, int dy, TImage& image) : TMask(name, 1, dx, dy), _image(image) { @@ -621,9 +620,43 @@ bool TMenu_application::menu(MENU_TAG) if (get_firm() == 0 && module.compare("cg", 2, TRUE) == 0) // Chiede ditta se necessario set_firm(); prefix().set(NULL); // Chiude prefix + TFilename opt_cmd(option); +#if XVT_OS == XVT_OS_WIN + opt_cmd.lower(); +#endif + bool maintenance_app = (opt_cmd == "ba1 -0" || opt_cmd == "ba1"); TExternal_app a(option); - a.run(); + if (maintenance_app) + { + FILE* fp; + char line1[16],line2[16]; + if (opt_cmd == "ba1") opt_cmd << " -0"; + opt_cmd << " C"; + + while (fexist("conv.his")) + { + fp = fopen("conv.his","r"); + fgets(line1,15,fp); + fclose(fp); + // Ora aspetta... + time_t old_time ; + time( &old_time) ; + while ( time( (time_t *) 0 ) <= old_time ) do_events(); + TExternal_app auto_conv(opt_cmd); + auto_conv.run(); + fp = fopen("conv.his","r"); + if (fp != NULL) + { + fgets(line2,15,fp); + fclose(fp); + } + else strcpy(line2,""); + if (strcmp(line1,line2) == 0) + if (!yesno_box("La conversione non sembra procedere. Continuo?")) + break; + } + } prefix().set("DEF"); // Aggiorna prefix } } diff --git a/ba/ba1100.cpp b/ba/ba1100.cpp index 7a96674b5..53d1b467d 100755 --- a/ba/ba1100.cpp +++ b/ba/ba1100.cpp @@ -578,10 +578,10 @@ void TManutenzione_app::update_dir() const int items = (int)d.eod(); s = "Aggiornamento direttorio "; - if (is_com) s << "comune"; - else s << " della ditta " << atol (pref) <<"."; + if (is_com) s << "comune."; + else s << "della ditta " << atol (pref) <<"."; #if XVT_OS == XVT_OS_WIN - s << " Memoria libera: " << (long)GetFreeSpace(0) << " bytes."; + s << " Memoria libera: " << (long)GetFreeSpace(0)/1024 << " Kbytes."; #endif TProgind p(items ? items : 1, s, FALSE, TRUE, 70); @@ -799,11 +799,11 @@ void TManutenzione_app::convert_dir() TString s(256); s = "Aggiornamento archivi "; - if (is_com) s << "comuni"; - else s << " della ditta " << atol (pref) << "."; + if (is_com) s << "comuni."; + else s << "della ditta " << atol (pref) << "."; #if XVT_OS == XVT_OS_WIN - s << " Memoria libera: " << (long)GetFreeSpace(0) << " bytes."; + s << " Memoria libera: " << (long)GetFreeSpace(0)/1024 << " Kbytes."; #endif TProgind p(items ? items : 1, s, FALSE, TRUE, 70); @@ -833,6 +833,19 @@ void TManutenzione_app::convert_dir() TSystemisamfile f(i); f.update(r); + if (f.status() == 8) // cio' significa che e' accaduto quasi l'irreparabile... + { + { + TLocalisamfile u(LF_USER); + u.zero(); u.put("USERNAME","PRASSI"); + if (u.read() == NOERR) + { + u.zero("AUTSTR"); + u.rewrite(); + } + } + stop_run(); + } d.get(i, _nolock, _nordir, _sysdirop); bool to_create = (is_com ? d.is_com() : d.is_firm()); @@ -924,20 +937,21 @@ void TManutenzione_app::update() TString80 s("Conversione archivi ditte."); -#if XVT_OS == XVT_OS_WIN - s << " Memoria libera: " << (long)GetFreeSpace(0) << " bytes."; -#endif - TProgind p(ditte.items() ? ditte.items() : 1, s, TRUE, TRUE, 70); p.setstatus(1); - + TString mxs; + for (ditte.first(); !ditte.eof(); ditte.next()) { - p.addstatus(1); - const long codditta = ditte.get_long("CODDITTA"); const TRecnotype rec = ditte.recno(); - + const long codditta = ditte.get_long("CODDITTA"); + mxs = s; +#if XVT_OS == XVT_OS_WIN + mxs << " Ditta " << codditta << ". Memoria libera: " << (long)GetFreeSpace(0)/1024 << " Kbytes."; +#endif + p.addstatus(1); + p.set_text(mxs); if (codditta > _history_firm && prefix().exist(codditta)) { ditte.close();