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;
|
||||
else
|
||||
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].name,tiname) ;
|
||||
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
|
||||
--------------------------------------------------------------------------*/
|
||||
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;
|
||||
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)
|
||||
{
|
||||
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);
|
||||
else
|
||||
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_packfile(short vis, const char * filename, long eod);
|
||||
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_get_error(void);
|
||||
void DB_zero_error(void);
|
||||
|
@ -1321,14 +1321,14 @@ int TBaseisamfile::is_valid()
|
||||
TLocalisamfile::TLocalisamfile(
|
||||
int logicnum, // @parm Numero del logico del file
|
||||
bool linkrecinst) // @parm Puo assumere i valori:
|
||||
//
|
||||
// @flag 0 | Istanzio un nuovo file fisico (default)
|
||||
// @flag 1 | Utilizza, se possibile, un file gia' esistente
|
||||
// @flag 2 | Crea un file temporaneo
|
||||
//
|
||||
// @flag 0 | Istanzio un nuovo file fisico (default)
|
||||
// @flag 1 | Utilizza, se possibile, un file gia' esistente
|
||||
// @flag 2 | Crea un file temporaneo
|
||||
: TBaseisamfile(logicnum, linkrecinst == TRUE)
|
||||
|
||||
// @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
|
||||
|
||||
{
|
||||
@ -2023,7 +2023,8 @@ int TSystemisamfile::packfile(
|
||||
// @rdesc Ritorna NOERR se l'operazione di compattamento e' riuscita, altrimenti il codice di
|
||||
// di errore generato (vedi <t TIsamerr>).
|
||||
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>
|
||||
|
||||
@ -2039,7 +2040,7 @@ int TSystemisamfile::packindex(
|
||||
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);
|
||||
err=DB_packindex(vis,d.name(),r.rec(),&peod,ask);
|
||||
if (err != NOERR) err = get_error(err);
|
||||
if (err != NOERR) error_box("Errore in compattamento indici.\nFile %d : %d", num(),err);
|
||||
else
|
||||
@ -2052,12 +2053,12 @@ int TSystemisamfile::packindex(
|
||||
return err;
|
||||
}
|
||||
|
||||
int TSystemisamfile::pack(bool vis)
|
||||
int TSystemisamfile::pack(bool vis, bool ask)
|
||||
{
|
||||
int err=NOERR;
|
||||
|
||||
if ((err=packfile(vis))==NOERR)
|
||||
err=packindex(vis);
|
||||
err=packindex(vis,ask);
|
||||
setstatus(err);
|
||||
return err;
|
||||
}
|
||||
@ -2244,6 +2245,9 @@ int TSystemisamfile::load(
|
||||
if (write() == NOERR) r++;
|
||||
else
|
||||
{
|
||||
#ifdef DBG
|
||||
yesnofatal_box("Numero linea relativa all'errore: %ld",r+e+1);
|
||||
#endif
|
||||
e++;
|
||||
last = status();
|
||||
}
|
||||
|
@ -673,11 +673,11 @@ public:
|
||||
int update(TTrec& newrec, bool vis = TRUE);
|
||||
|
||||
// @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
|
||||
int packfile(bool vis = TRUE);
|
||||
// @cmember Rimuove fisicamente gli indici cancellati
|
||||
int packindex(bool vis = TRUE);
|
||||
int packindex(bool vis = TRUE, bool ask = TRUE);
|
||||
|
||||
// @cmember Importa un file ascii
|
||||
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