Richiesta 95/4.

Corretta TSystemisamfile::load() sul caricamento contemporaneo da uno
stesso file testo.
Corretta TSystemisamfile::packfile() e packindex() per reperire e
registrare il corretto EOD.
Corretta TSystemisamfile::build per registrare il corretto EOD in
caso di creazione nuovo file.


git-svn-id: svn://10.65.10.50/trunk@1674 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1995-08-03 15:07:29 +00:00
parent 71f6209c4c
commit 5f924037d7

View File

@ -1383,7 +1383,8 @@ int TSystemisamfile::build(TRecnotype eox)
{
isfdptr i;
getisfd(i,num());
i->d->EOX = eox;
i->d->EOX = eox;
i->fhnd = 0; // So relisfd() will record the EOX just set
relisfd(i);
}
else
@ -1418,8 +1419,11 @@ int TSystemisamfile::extend(TRecnotype eox)
{
if (eox < i->d->EOD)
err = _ispathfull;
else
else
{
i->d->EOX = eox;
i->fhnd = 0; // So relisfd() will write the EOX just set.
}
}
relisfd(i);
setstatus(err);
@ -1676,8 +1680,9 @@ int TSystemisamfile::packindex(bool vis)
CHECKS(filehnd() == NULL, "Can't pack index of open file", (const char*)filename());
r.get(num());
d.get(num(),_nolock, _nordir,_sysdirop);
d.get(num(),_nolock, (d.is_com()) ? _comdir : _nordir);
d.get(num(),_nolock, _nordir,_sysdirop);
bool is_com = d.is_com();
d.get(num(),_nolock, is_com ? _comdir : _nordir);
err=DB_packindex(vis,d.name(),r.rec(),&peod);
if (err != NOERR) err = get_error(err);
if (err != NOERR) error_box("Errore in compattamento indici.\nFile %d : %d", num(),err);
@ -1685,7 +1690,7 @@ int TSystemisamfile::packindex(bool vis)
if (peod >= 0 && peod != d.eod())
{
d.eod() = peod;
d.put(num(),(d.is_com() ? _comdir : _nordir));
d.put(num(), is_com ? _comdir : _nordir);
}
setstatus(err);
return err;
@ -1704,8 +1709,15 @@ int TSystemisamfile::pack(bool vis)
int TSystemisamfile::load(const char* from, char fs, char fd, char rs, bool vis, bool extended)
{
FILE* fl = fopen(from, "r+");
int err = ferror(fl);
FILE* fl = fopen(from, "r");
int err;
if (fl != NULL)
err = ferror(fl);
else
{
error_box("Non riesco ad aprire il file %s",from);
return 2;
}
TRecnotype r = 0, e = 0, nitems = 0, nread = 0;
TString16 firm, year, attprev("00000");