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:
parent
71f6209c4c
commit
5f924037d7
@ -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");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user