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