diff --git a/ba/ba1100.cpp b/ba/ba1100.cpp index e3267ee9b..e1aeee232 100755 --- a/ba/ba1100.cpp +++ b/ba/ba1100.cpp @@ -657,6 +657,10 @@ void TManutenzione_app::delete_riga () void TManutenzione_app::update_dir() { + // Particolare significato dei flags oltre i 10000: + // trattasi di files PRASSI, (ad esempio i cespiti) che da noi non vengono toccati, + // in modo da evitare colpe inutili. Noi aggiorniamo solo i tracciati su dir e trc, + // ma il file fisico manco lo tocchiamo!! const TString pref(prefix().name()); const bool is_com = prefix().is_com(); @@ -694,7 +698,7 @@ void TManutenzione_app::update_dir() bool towrite = FALSE; -// long flags = ds.flags(); + const long flags = ds.flags(); // word len = ds.len(); // prefix().set(pref); d.get(i); @@ -730,13 +734,13 @@ void TManutenzione_app::update_dir() } else { - if (!yesno_box("Il file %d non puo' essere aperto: errore %d. Continuo?",i,err)) + if (flags < 10000L && !yesno_box("Il file %d non puo' essere aperto: errore %d. Continuo?",i,err)) stop_run(); } } else { - if (to_create) + if (flags < 10000L && to_create ) { remove(d.filename()); TToken_string idx_names; @@ -763,7 +767,7 @@ void TManutenzione_app::update_dir() } */ - if (fexist(fs) && (fd != fs)) + if (flags < 10000L && fexist(fs) && (fd != fs)) { bool ok = TRUE; TFilename path(fd.path()); @@ -903,62 +907,73 @@ void TManutenzione_app::convert_dir() // prefix().set(""); const TTrec & rs = (const TTrec &) _recs[i]; const TDir & ds = (const TDir &) _dirs[i]; + const long flags = ds.flags(); // prefix().set(pref); if (ds.len() > 0) { - TBaseisamfile b(i); - const int module = abs((int)ds.flags()); - int err = b.is_valid(); - if (err == -60) err=NOERR; - d.get(i, _nolock, _nordir, _sysdirop); - if (i > 2 && err != NOERR && ((is_com && d.is_com()) || (!is_com && d.is_firm()))) - { - if (!yesno_box("Il file %d non puo' essere aperto: errore %d. Continuo?",i,err)) - stop_run(); - else continue; - } - - TSystemisamfile f(i); - - f.update(rs); - if (f.status() == 8) // cio' significa che e' accaduto quasi l'irreparabile... + if (flags < 10000L) { + TBaseisamfile b(i); + const int module = abs((int)ds.flags()); + int err = b.is_valid(); + if (err == -60) err=NOERR; + d.get(i, _nolock, _nordir, _sysdirop); + if (i > 2 && err != NOERR && ((is_com && d.is_com()) || (!is_com && d.is_firm()))) + { + if (!yesno_box("Il file %d non puo' essere aperto: errore %d. Continuo?",i,err)) + stop_run(); + else continue; + } + + TSystemisamfile f(i); + + f.update(rs); + + 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(); + 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()); + const bool actual_create = to_create; + + // I files LF_PCON, LF_CAUS, LF_RCAUS, LF_CLIFO, LF_CFVEN, LF_INDSPED + // vanno creati comunque nel direttorio COM, vuoti, (se non esistono gia'). + if (is_com && !to_create) + if (i == LF_INDSP || i == LF_CLIFO || + i == LF_PCON || i == LF_CAUSALI || i == LF_RCAUSALI) + to_create = TRUE; + + if (flags < 10000L && to_create && has_module(module, CHK_DONGLE)) + { + d.get(i); + TFilename s(d.filename()); + if (!fexist(s)) + { + TSystemisamfile f(i); + set_autoload_new_files(actual_create); + f.build(10L); + set_autoload_new_files(TRUE); } } - stop_run(); } - d.get(i, _nolock, _nordir, _sysdirop); - bool to_create = (is_com ? d.is_com() : d.is_firm()); - const bool actual_create = to_create; - - // I files LF_PCON, LF_CAUS, LF_RCAUS, LF_CLIFO, LF_CFVEN, LF_INDSPED - // vanno creati comunque nel direttorio COM, vuoti, (se non esistono gia'). - if (is_com && !to_create) - if (i == LF_INDSP || i == LF_CLIFO || - i == LF_PCON || i == LF_CAUSALI || i == LF_RCAUSALI) - to_create = TRUE; - - if (to_create && has_module(module, CHK_DONGLE)) + else // altrimenti se i flags sono oltre i fatidici 10000... { - d.get(i); - TFilename s(d.filename()); - if (!fexist(s)) - { - TSystemisamfile f(i); - set_autoload_new_files(actual_create); - f.build(10L); - set_autoload_new_files(TRUE); - } - } + TTrec r(rs); + + r.put(i); + } } - else + else // altrimenti se la dimensione del tracciato e' zero... { TTrec r(rs);