isam.cpp, isam.h:
aggiunto un nuovo parametro di default alla TSystemisamfile::pack() e alla TSystemisamfile::packindex(). Il parametro aggiunto fa si' che la routine chieda o meno il recupero dei record duplicati nel caso si sia riscontrato un errore nella ricostruzione dell'indice. codeb.c, codeb.h: aggiunto il parametro ask alla funzione DB_packindex(), per il motivo di cui sopra. git-svn-id: svn://10.65.10.50/trunk@2704 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3cb6e48d78
commit
2ea8b69f12
@ -580,7 +580,7 @@ HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info, int n_keys)
|
|||||||
tag_info[i].unique=0;
|
tag_info[i].unique=0;
|
||||||
else
|
else
|
||||||
tag_info[i].unique= i == 0 ? e4unique : r4unique_continue;
|
tag_info[i].unique= i == 0 ? e4unique : r4unique_continue;
|
||||||
// tag_info[i].unique=e4unique;
|
/* tag_info[i].unique=e4unique; */
|
||||||
strcpy(tag_info[i].filter,".NOT. DELETED()"); /* Not available for DBIII and CLIPPER */
|
strcpy(tag_info[i].filter,".NOT. DELETED()"); /* Not available for DBIII and CLIPPER */
|
||||||
strcpy(tag_info[i].name,tiname) ;
|
strcpy(tag_info[i].name,tiname) ;
|
||||||
if (strlen(tiname) < 8)
|
if (strlen(tiname) < 8)
|
||||||
@ -819,7 +819,7 @@ int DB_clean_file(int handle, char * filename, char * ff, RecDes * r, short vis)
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
Compatta gli indici
|
Compatta gli indici
|
||||||
--------------------------------------------------------------------------*/
|
--------------------------------------------------------------------------*/
|
||||||
int DB_packindex(short vis, const char * filename, RecDes *r, long *peod)
|
int DB_packindex(short vis, const char * filename, RecDes *r, long *peod, bool ask)
|
||||||
{
|
{
|
||||||
int rt=0,handle;
|
int rt=0,handle;
|
||||||
TAG4INFO tags[MaxKeys+1];
|
TAG4INFO tags[MaxKeys+1];
|
||||||
@ -857,7 +857,7 @@ int DB_packindex(short vis, const char * filename, RecDes *r, long *peod)
|
|||||||
if (rt == e4unique || rt == r4unique)
|
if (rt == e4unique || rt == r4unique)
|
||||||
{
|
{
|
||||||
rt = 0;
|
rt = 0;
|
||||||
if (yesno_box("Sono stati rilevati alcuni record duplicati devo eliminarli ?"))
|
if (!ask || yesno_box("Sono stati rilevati alcuni record duplicati devo eliminarli ?"))
|
||||||
rt = DB_clean_file(handle, (char*) filename, ff, r, vis);
|
rt = DB_clean_file(handle, (char*) filename, ff, r, vis);
|
||||||
else
|
else
|
||||||
tags[0].unique = r4unique_continue;
|
tags[0].unique = r4unique_continue;
|
||||||
|
@ -53,7 +53,7 @@ extern "C" {
|
|||||||
int DB_lockfile(int handle); /* Per sbloccare il record basta la DB_unlock()*/
|
int DB_lockfile(int handle); /* Per sbloccare il record basta la DB_unlock()*/
|
||||||
int DB_packfile(short vis, const char * filename, long eod);
|
int DB_packfile(short vis, const char * filename, long eod);
|
||||||
int DB_packmemo(short vis, const char * filename);
|
int DB_packmemo(short vis, const char * filename);
|
||||||
int DB_packindex(short vis, const char * filename, RecDes *r, long *peod );
|
int DB_packindex(short vis, const char * filename, RecDes *r, long *peod, bool ask );
|
||||||
int DB_build(const char * filename, RecDes *r);
|
int DB_build(const char * filename, RecDes *r);
|
||||||
int DB_get_error(void);
|
int DB_get_error(void);
|
||||||
void DB_zero_error(void);
|
void DB_zero_error(void);
|
||||||
|
@ -1321,14 +1321,14 @@ int TBaseisamfile::is_valid()
|
|||||||
TLocalisamfile::TLocalisamfile(
|
TLocalisamfile::TLocalisamfile(
|
||||||
int logicnum, // @parm Numero del logico del file
|
int logicnum, // @parm Numero del logico del file
|
||||||
bool linkrecinst) // @parm Puo assumere i valori:
|
bool linkrecinst) // @parm Puo assumere i valori:
|
||||||
//
|
//
|
||||||
// @flag 0 | Istanzio un nuovo file fisico (default)
|
// @flag 0 | Istanzio un nuovo file fisico (default)
|
||||||
// @flag 1 | Utilizza, se possibile, un file gia' esistente
|
// @flag 1 | Utilizza, se possibile, un file gia' esistente
|
||||||
// @flag 2 | Crea un file temporaneo
|
// @flag 2 | Crea un file temporaneo
|
||||||
: TBaseisamfile(logicnum, linkrecinst == TRUE)
|
: TBaseisamfile(logicnum, linkrecinst == TRUE)
|
||||||
|
|
||||||
// @comm ATTENZIONE: <p linkrecinst> puo' valere 0, 1, 2.
|
// @comm ATTENZIONE: <p linkrecinst> puo' valere 0, 1, 2.
|
||||||
// Se vale 2 significa che si sta costruendo un file temporaneo
|
// Se vale 2 significa che si sta costruendo un file temporaneo
|
||||||
// per cui linkrecinst va' considerato FALSE
|
// per cui linkrecinst va' considerato FALSE
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -2023,7 +2023,8 @@ int TSystemisamfile::packfile(
|
|||||||
// @rdesc Ritorna NOERR se l'operazione di compattamento e' riuscita, altrimenti il codice di
|
// @rdesc Ritorna NOERR se l'operazione di compattamento e' riuscita, altrimenti il codice di
|
||||||
// di errore generato (vedi <t TIsamerr>).
|
// di errore generato (vedi <t TIsamerr>).
|
||||||
int TSystemisamfile::packindex(
|
int TSystemisamfile::packindex(
|
||||||
bool vis) // @parm Indica se visualizzare lo stato dell'operazione
|
bool vis, // @parm Indica se visualizzare lo stato dell'operazione
|
||||||
|
bool ask) // @parm Indica se chiedere il recupero dei record duplicati
|
||||||
|
|
||||||
// @xref <mf TSystemisamfile::packfile>
|
// @xref <mf TSystemisamfile::packfile>
|
||||||
|
|
||||||
@ -2039,7 +2040,7 @@ int TSystemisamfile::packindex(
|
|||||||
d.get(num(),_nolock, _nordir,_sysdirop);
|
d.get(num(),_nolock, _nordir,_sysdirop);
|
||||||
bool is_com = d.is_com();
|
bool is_com = d.is_com();
|
||||||
d.get(num(),_nolock, is_com ? _comdir : _nordir);
|
d.get(num(),_nolock, is_com ? _comdir : _nordir);
|
||||||
err=DB_packindex(vis,d.name(),r.rec(),&peod);
|
err=DB_packindex(vis,d.name(),r.rec(),&peod,ask);
|
||||||
if (err != NOERR) err = get_error(err);
|
if (err != NOERR) err = get_error(err);
|
||||||
if (err != NOERR) error_box("Errore in compattamento indici.\nFile %d : %d", num(),err);
|
if (err != NOERR) error_box("Errore in compattamento indici.\nFile %d : %d", num(),err);
|
||||||
else
|
else
|
||||||
@ -2052,12 +2053,12 @@ int TSystemisamfile::packindex(
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TSystemisamfile::pack(bool vis)
|
int TSystemisamfile::pack(bool vis, bool ask)
|
||||||
{
|
{
|
||||||
int err=NOERR;
|
int err=NOERR;
|
||||||
|
|
||||||
if ((err=packfile(vis))==NOERR)
|
if ((err=packfile(vis))==NOERR)
|
||||||
err=packindex(vis);
|
err=packindex(vis,ask);
|
||||||
setstatus(err);
|
setstatus(err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -2244,6 +2245,9 @@ int TSystemisamfile::load(
|
|||||||
if (write() == NOERR) r++;
|
if (write() == NOERR) r++;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#ifdef DBG
|
||||||
|
yesnofatal_box("Numero linea relativa all'errore: %ld",r+e+1);
|
||||||
|
#endif
|
||||||
e++;
|
e++;
|
||||||
last = status();
|
last = status();
|
||||||
}
|
}
|
||||||
|
@ -673,11 +673,11 @@ public:
|
|||||||
int update(TTrec& newrec, bool vis = TRUE);
|
int update(TTrec& newrec, bool vis = TRUE);
|
||||||
|
|
||||||
// @cmember Esegue sia <mf TSystemisamfile::packfile> e <mf TSystemisamfile::packindex>
|
// @cmember Esegue sia <mf TSystemisamfile::packfile> e <mf TSystemisamfile::packindex>
|
||||||
int pack(bool vis = TRUE);
|
int pack(bool vis = TRUE, bool ask = TRUE);
|
||||||
// @cmember Rimuove fisicamente i record cancellati
|
// @cmember Rimuove fisicamente i record cancellati
|
||||||
int packfile(bool vis = TRUE);
|
int packfile(bool vis = TRUE);
|
||||||
// @cmember Rimuove fisicamente gli indici cancellati
|
// @cmember Rimuove fisicamente gli indici cancellati
|
||||||
int packindex(bool vis = TRUE);
|
int packindex(bool vis = TRUE, bool ask = TRUE);
|
||||||
|
|
||||||
// @cmember Importa un file ascii
|
// @cmember Importa un file ascii
|
||||||
int load(const char* from, char fs = '|', char fd = '\0', char rs = '\n', bool vis = TRUE, bool extended = FALSE) ;
|
int load(const char* from, char fs = '|', char fd = '\0', char rs = '\n', bool vis = TRUE, bool extended = FALSE) ;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user