Patch level : 12.0 332

Files correlati     : ba1.exe

Ricostruiti gli indici delle tabelle per evitare problemi con archivi danneggiati
Resa obbligatoria la copia in installazione.

git-svn-id: svn://10.65.10.50/branches/R_10_00@23520 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
bonazzi 2017-01-12 00:21:24 +00:00
parent 69249f3555
commit 8ed1eb7c1d
2 changed files with 7 additions and 119 deletions

View File

@ -1012,119 +1012,6 @@ void TManutenzione_app::update_dir()
if (to_create && !cmn_file)
{
/* if (flags < 10000L && flags > -1L && fs.exist() && (fd != fs))
{
bool ok = true;
TFilename path(fd.path());
bool found = false;
for (int j = i + 1; !found && j <= update_items; j++)
{
const TDir & dn = (const TDir &) _dirs[j];
TFilename fn(dn.filename());
if (fs == fn)
{
TTrec wrs(i), wrd(j);
wrd = wrs; wrd.set_num(j); // Copia e rinumera
wrd.put(j);
wrs.zero();
wrs.put(i);
TDir wds(i), wdd(j);
wdd.set(wds.name(), wds.eod(), wds.flags(), wds.des(), wds.expr());
wdd.set_eox(wds.eox());
wdd.set_len(wrd.len());
wdd.put(j, _nordir, _sysdirop);
prefix().destroy_info(j);
wds.set(ds.name(), 0L, 0L, ds.des(), ds.expr());
wds.set_eox(0L);
wds.set_len(0);
wds.put(i, _nordir, _sysdirop);
prefix().destroy_info(i);
found = true;
}
}
if (found)
continue;
path.rtrim(1);
if (path.full() && !path.exist())
ok = make_dir(path);
if (ok && fcopy(fs, fd))
{
TToken_string ts(10),td(10);
td.cut(0);
get_table_names(i,ts,0x2); // Get index names of current file in current dir
for (int j=1; j<= ts.items() && ok; j++)
{
const TFilename fsi(ts.get());
TFilename fdi(fd); // Nuovo nome. (Con l'estensione)
fdi.ext("");
if (j > 1) // Means that more indexes are in TToken_string ts
{
const TFixed_string xx(fdi.name());
if (xx.len() < 8)
fdi << ('0' + j);
else
fdi[8] = ('0' + j);
}
fdi.ext(fsi.ext());
td.add(fdi);
if (!fcopy(fsi, fdi))
ok = false;
}
if (ok)
{
remove(fs); // Rimuove i files sorgenti. Crea un eventuale .cgp
fd.ext("cgp");
FILE *o=NULL;
if (ts.items() > 1)
{
fs.ext("cgp");
remove(fs);
o=fopen(fd,"w");
}
ts.restart();
td.restart();
for (int j=1; j<=ts.items(); j++)
{
remove(ts.get());
if (ts.items() > 1) // Means that fd.cgp must be created
{
TFilename ff=td.get();
ff.ext("");
ff.rtrim(1);
fprintf(o,"%s\n",ff.name());
}
}
if (o!=NULL)
fclose(o);
}
else
{
remove(fd); // Remove all destinations written
td.restart();
for (int j=1; j<=td.items(); j++)
remove(td.get());
}
}
else
ok = false;
if (ok)
{
d.set(ds.name(), d.eox(), 0L, ds.des(), d.expr());
towrite = true;
}
}
if (!fexist(fs) && !valid_file) // Controlla eventali nomi di files non validi (ed es. %.dbf ecc.)
{
d.set(ds.name(), d.eox(), 0L, ds.des(), d.expr());
towrite = true;
}*/
d.set(ds.name(), d.eox(), 0L, ds.des(), d.expr());
towrite = true;
}
@ -1226,7 +1113,7 @@ void TManutenzione_app::convert_dir()
break;
}
if (i > LF_USER && err != NOERR && ((is_com && d.is_com()) || (!is_com && d.is_firm())))
if (i > LF_USER && err != NOERR && ((is_com && d.is_com()) || (!is_com && d.is_firm())))
{
if (err == _istrcerr || err == _isbadtrc)
{
@ -1267,6 +1154,9 @@ void TManutenzione_app::convert_dir()
}
}
if (i <= LF_TAB)
f.packindex();
f.update(rs, false);
if (f.status() == 8) // cio' significa che e' accaduto quasi l'irreparabile...
{

View File

@ -926,13 +926,11 @@ void TInstaller_mask::backup() const
dst << ' ' << TDate(TODAY).date2ansi(); // Lo spazio rende inutilizzabile lo studio
TToken_string msg(256, '\n');
msg.add(TR("Si consiglia creare una copia dello studio ")); msg << src.name();
msg.add(TR("Verrà effettuata una copia dello studio ")); msg << src.name();
msg.add(TR("nella cartella ")); msg << dst;
msg.add(TR("L'operazione potrebbe richiedere alcuni minuti."));
msg.add("");
msg.add(TR("Si desidera effetture la copia?"));
if (yesno_box(msg))
copy_tree(src, dst);
message_box(msg);
copy_tree(src, dst);
}