Patch level : 12.0 820
Files correlati : ve5.exe, ve5100a.msk Commento : Aggiunte funzione di zip unzip per file senza floppy
This commit is contained in:
		
							parent
							
								
									8a6a484f54
								
							
						
					
					
						commit
						76ab6fec41
					
				@ -339,22 +339,35 @@ bool TArchive::zip(
 | 
				
			|||||||
// @comm Il parametro <p pr_set> e' utilizzato per evitare errori di riaperture di files.
 | 
					// @comm Il parametro <p pr_set> e' utilizzato per evitare errori di riaperture di files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  safely_close_closeable_isamfiles();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  DIRECTORY currdir, newdir;
 | 
					 | 
				
			||||||
  xvt_fsys_get_curr_dir( &currdir);  //memorizza la directory dove e'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  xvt_fsys_convert_str_to_dir(dir, &newdir);  //converte il nome della directory
 | 
					 | 
				
			||||||
  xvt_fsys_set_dir( &newdir);  //passa alla directory dir che gli viene passata
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
	const TFilename workdir = dir;
 | 
						const TFilename workdir = dir;
 | 
				
			||||||
	const TString name = workdir.name();
 | 
						const TString name = workdir.name();
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
	// Nome del file compresso
 | 
						// Nome del file compresso
 | 
				
			||||||
	TFilename work; work.tempdir(); work.add(name); work.ext("zip");
 | 
						TFilename work; work.tempdir(); work.add(name); work.ext("zip");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool ok = zip(dir, work);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (ok)
 | 
				
			||||||
 | 
					    ok = fsplit_zip(work, floppy, desc);
 | 
				
			||||||
 | 
					  else  
 | 
				
			||||||
 | 
					    error_box(TR("Compressione degli archivi errata o incompleta"));
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return ok;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TArchive::zip(const char* dir, const TFilename& work)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						safely_close_closeable_isamfiles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DIRECTORY currdir, newdir;
 | 
				
			||||||
 | 
						xvt_fsys_get_curr_dir(&currdir);  //memorizza la directory dove e'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xvt_fsys_convert_str_to_dir(dir, &newdir);  //converte il nome della directory
 | 
				
			||||||
 | 
						xvt_fsys_set_dir(&newdir);  //passa alla directory dir che gli viene passata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const TFilename workdir = dir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TString title(TR("Archiviazione")); title << ' ' << workdir;
 | 
						TString title(TR("Archiviazione")); title << ' ' << workdir;
 | 
				
			||||||
  TIndwin waitw(100,title,FALSE,FALSE); 
 | 
						TIndwin waitw(100, title, FALSE, FALSE);
 | 
				
			||||||
	TWait_cursor hourglass;
 | 
						TWait_cursor hourglass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TString_array filenames;
 | 
						TString_array filenames;
 | 
				
			||||||
@ -365,7 +378,7 @@ bool TArchive::zip(
 | 
				
			|||||||
	FILE* flist = fopen(ZIPLIST, "w");
 | 
						FILE* flist = fopen(ZIPLIST, "w");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	FOR_EACH_ARRAY_ROW(filenames, r, row)
 | 
						FOR_EACH_ARRAY_ROW(filenames, r, row)
 | 
				
			||||||
    fprintf(flist, "%s\n",(const char *)*row);
 | 
							fprintf(flist, "%s\n", (const char *)*row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fclose(flist);
 | 
						fclose(flist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -373,12 +386,7 @@ bool TArchive::zip(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	remove(ZIPLIST);  //elimina il file di testo con la lista dei files
 | 
						remove(ZIPLIST);  //elimina il file di testo con la lista dei files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  xvt_fsys_set_dir( &currdir);  //torna a posizionarsi nella directory iniziale
 | 
						xvt_fsys_set_dir(&currdir);  //torna a posizionarsi nella directory iniziale
 | 
				
			||||||
 | 
					 | 
				
			||||||
  if (ok)
 | 
					 | 
				
			||||||
    ok = fsplit_zip(work, floppy, desc);
 | 
					 | 
				
			||||||
  else  
 | 
					 | 
				
			||||||
    error_box(TR("Compressione degli archivi errata o incompleta"));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ok;
 | 
						return ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -494,6 +502,77 @@ bool TArchive::unzip(
 | 
				
			|||||||
  return ok;
 | 
					  return ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TArchive::unzip(
 | 
				
			||||||
 | 
						const char* dir,   // @parm Directory di cui effettuare il restore
 | 
				
			||||||
 | 
						const char* fromdir,       // @parm percorso da cui leggere i dati
 | 
				
			||||||
 | 
						bool tmp)          // @parm Directory temporanea da utilizzare
 | 
				
			||||||
 | 
					// @syntax bool restore(const char* dir, char floppy, bool temp, bool pr_set);
 | 
				
			||||||
 | 
					// @syntax bool restore(long firm, char floppy, bool temp, bool pr_set);
 | 
				
			||||||
 | 
					// @comm Il parametro <p pr_set> e' utilizzato per evitare errori di riaperture di files.
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						TFilename work;
 | 
				
			||||||
 | 
						if (tmp)
 | 
				
			||||||
 | 
							work.tempdir();
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							work = dir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TFilename output(dir);
 | 
				
			||||||
 | 
						output = output.name();
 | 
				
			||||||
 | 
						output.ext("zip");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TFilename dest; dest << fromdir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!yesno_box(FR("Attenzione l'archivio %s\\%s verra' ripristinato\n"
 | 
				
			||||||
 | 
							"nel direttorio %s. Continuare?"),
 | 
				
			||||||
 | 
							fromdir, (const char*)output, (const char*)work))
 | 
				
			||||||
 | 
							return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool ok = work.exist();
 | 
				
			||||||
 | 
						if (!ok)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ok = yesno_box(FR("Non esiste il direttorio %s: si desidera crearlo?"), (const char*)work);
 | 
				
			||||||
 | 
							if (ok)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								make_dir(work);
 | 
				
			||||||
 | 
								ok = work.exist();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (!ok)
 | 
				
			||||||
 | 
								return error_box(FR("Impossibile accedere a %s"), (const char*)work);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TString title(TR("Ripristino")); title << ' ' << output;
 | 
				
			||||||
 | 
						TIndwin waitw(100, title, FALSE, FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						safely_close_closeable_isamfiles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TFilename restored;
 | 
				
			||||||
 | 
						restored.tempdir();
 | 
				
			||||||
 | 
						restored.add(output.name());
 | 
				
			||||||
 | 
						restored.ext("zip");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TFilename src;
 | 
				
			||||||
 | 
						src << fromdir << SLASH;
 | 
				
			||||||
 | 
						src << output.name();
 | 
				
			||||||
 | 
						src.ext("zip");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while (!src.exist())
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if (!yesno_box("Impossibile aprire il file %s:\nSi desidera ritentare?",
 | 
				
			||||||
 | 
								(const char *)src))
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (src.exist())
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							fcopy(src, restored);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						ok = ::aga_unzip(restored, work);
 | 
				
			||||||
 | 
						if (ok)
 | 
				
			||||||
 | 
							remove(restored);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ok;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TArchive::unzip(int mode, long firm, char floppy, bool temp)
 | 
					bool TArchive::unzip(int mode, long firm, char floppy, bool temp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TString_array fl;
 | 
					  TString_array fl;
 | 
				
			||||||
@ -513,6 +592,12 @@ bool TArchive::backup(const char* dir, char floppy, const char* desc, bool)
 | 
				
			|||||||
  return zip(dir, floppy, desc);
 | 
					  return zip(dir, floppy, desc);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TArchive::backup(const char* dir, const char* dirdest, const char* desc, bool) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						TFilename work; work << dirdest; work.add(TFilename(dir).name()); work.ext("zip");
 | 
				
			||||||
 | 
						return zip(dir, work);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TArchive::backup(int mode, long firm, char floppy, const char* desc, bool)
 | 
					bool TArchive::backup(int mode, long firm, char floppy, const char* desc, bool)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return zip(mode, firm, floppy, desc);
 | 
					  return zip(mode, firm, floppy, desc);
 | 
				
			||||||
@ -522,6 +607,11 @@ bool TArchive::restore(const char* dir, char floppy, bool tmp, bool)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  return unzip(dir, floppy, tmp);
 | 
					  return unzip(dir, floppy, tmp);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					bool TArchive::restore(const char* dir, const char* fromdir, bool tmp, bool)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return unzip(dir, fromdir, tmp);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TArchive::restore(int mode, long firm, char floppy, bool tmp, bool)
 | 
					bool TArchive::restore(int mode, long firm, char floppy, bool tmp, bool)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
@ -50,21 +50,29 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // @cmember Effettua il backup della directory
 | 
					  // @cmember Effettua il backup della directory
 | 
				
			||||||
  bool backup(const char* dir, char floppy, const char* desc, bool dummy = FALSE);
 | 
					  bool backup(const char* dir, char floppy, const char* desc, bool dummy = FALSE);
 | 
				
			||||||
 | 
						// @cmember Effettua il backup della directory in un percorso specificato
 | 
				
			||||||
 | 
					  bool backup(const char* dir, const char* dirdest, const char* desc, bool dummy = FALSE) const;
 | 
				
			||||||
  // @cmember Effettua il backup della ditta
 | 
					  // @cmember Effettua il backup della ditta
 | 
				
			||||||
  bool backup(int mode, long firm, char floppy, const char* desc, bool pr_set=TRUE);
 | 
					  bool backup(int mode, long firm, char floppy, const char* desc, bool pr_set=TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Effettua il restore della directory
 | 
					  // @cmember Effettua il restore della directory
 | 
				
			||||||
  bool restore(const char* dir, char floppy, bool temp, bool dummy = FALSE);
 | 
					  bool restore(const char* dir, char floppy, bool temp, bool dummy = FALSE);
 | 
				
			||||||
 | 
					  // @cmember Effettua il restore della directory
 | 
				
			||||||
 | 
					  bool restore(const char* dir, const char* fromdir, bool temp, bool dummy = FALSE);
 | 
				
			||||||
  // @cmember Effettua il restore della ditta
 | 
					  // @cmember Effettua il restore della ditta
 | 
				
			||||||
  bool restore(int mode, long firm, char floppy, bool temp, bool pr_set=TRUE);
 | 
					  bool restore(int mode, long firm, char floppy, bool temp, bool pr_set=TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Effettua il backup della directory
 | 
					  // @cmember Effettua il backup della directory
 | 
				
			||||||
  bool zip(const char* dir, char floppy, const char* desc);
 | 
					  bool zip(const char* dir, char floppy, const char* desc);
 | 
				
			||||||
 | 
					  // @cmember Effettua il backup della directory su percorso specificato nel file
 | 
				
			||||||
 | 
						static bool zip(const char* dir, const TFilename& work);
 | 
				
			||||||
  // @cmember Effettua il backup della ditta
 | 
					  // @cmember Effettua il backup della ditta
 | 
				
			||||||
  bool zip(int mode, long firm, char floppy, const char* desc);
 | 
					  bool zip(int mode, long firm, char floppy, const char* desc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // @cmember Effettua il restore della directory
 | 
					  // @cmember Effettua il restore della directory
 | 
				
			||||||
  bool unzip(const char* dir, char floppy, bool temp);
 | 
					  bool unzip(const char* dir, char floppy, bool temp);
 | 
				
			||||||
 | 
					  // @cmember Effettua il restore della directory
 | 
				
			||||||
 | 
					  bool unzip(const char* dir, const char* fromdir, bool temp);
 | 
				
			||||||
  // @cmember Effettua il restore della ditta
 | 
					  // @cmember Effettua il restore della ditta
 | 
				
			||||||
  bool unzip(int mode, long firm, char floppy, bool temp);
 | 
					  bool unzip(int mode, long firm, char floppy, bool temp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user