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
					
				@ -338,42 +338,13 @@ bool TArchive::zip(
 | 
			
		||||
 | 
			
		||||
// @comm Il parametro <p pr_set> e' utilizzato per evitare errori di riaperture di files.
 | 
			
		||||
 | 
			
		||||
{                                      
 | 
			
		||||
  safely_close_closeable_isamfiles();
 | 
			
		||||
{
 | 
			
		||||
	const TFilename workdir = dir;
 | 
			
		||||
	const TString name = workdir.name();
 | 
			
		||||
	// Nome del file compresso
 | 
			
		||||
	TFilename work; work.tempdir(); work.add(name); work.ext("zip");
 | 
			
		||||
 | 
			
		||||
  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 TString name = workdir.name();
 | 
			
		||||
  
 | 
			
		||||
  // Nome del file compresso
 | 
			
		||||
  TFilename work; work.tempdir(); work.add(name); work.ext("zip");
 | 
			
		||||
 | 
			
		||||
  TString title(TR("Archiviazione")); title << ' ' << workdir;
 | 
			
		||||
  TIndwin waitw(100,title,FALSE,FALSE); 
 | 
			
		||||
  TWait_cursor hourglass;
 | 
			
		||||
 | 
			
		||||
  TString_array filenames;
 | 
			
		||||
  list_files("*.*", filenames);
 | 
			
		||||
  
 | 
			
		||||
  // Crea il file con la lista dei file da comprimere
 | 
			
		||||
  const char* const ZIPLIST = "ziplist.txt";
 | 
			
		||||
  FILE* flist = fopen(ZIPLIST, "w");
 | 
			
		||||
 | 
			
		||||
  FOR_EACH_ARRAY_ROW(filenames, r, row)
 | 
			
		||||
    fprintf(flist, "%s\n",(const char *)*row);
 | 
			
		||||
 | 
			
		||||
  fclose(flist);
 | 
			
		||||
 | 
			
		||||
  bool ok = ::aga_zip_filelist(ZIPLIST, work);
 | 
			
		||||
 | 
			
		||||
  remove(ZIPLIST);  //elimina il file di testo con la lista dei files
 | 
			
		||||
 | 
			
		||||
  xvt_fsys_set_dir( &currdir);  //torna a posizionarsi nella directory iniziale
 | 
			
		||||
	bool ok = zip(dir, work);
 | 
			
		||||
 | 
			
		||||
  if (ok)
 | 
			
		||||
    ok = fsplit_zip(work, floppy, desc);
 | 
			
		||||
@ -383,6 +354,43 @@ bool TArchive::zip(
 | 
			
		||||
  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;
 | 
			
		||||
	TIndwin waitw(100, title, FALSE, FALSE);
 | 
			
		||||
	TWait_cursor hourglass;
 | 
			
		||||
 | 
			
		||||
	TString_array filenames;
 | 
			
		||||
	list_files("*.*", filenames);
 | 
			
		||||
 | 
			
		||||
	// Crea il file con la lista dei file da comprimere
 | 
			
		||||
	const char* const ZIPLIST = "ziplist.txt";
 | 
			
		||||
	FILE* flist = fopen(ZIPLIST, "w");
 | 
			
		||||
 | 
			
		||||
	FOR_EACH_ARRAY_ROW(filenames, r, row)
 | 
			
		||||
		fprintf(flist, "%s\n", (const char *)*row);
 | 
			
		||||
 | 
			
		||||
	fclose(flist);
 | 
			
		||||
 | 
			
		||||
	bool ok = ::aga_zip_filelist(ZIPLIST, work);
 | 
			
		||||
 | 
			
		||||
	remove(ZIPLIST);  //elimina il file di testo con la lista dei files
 | 
			
		||||
 | 
			
		||||
	xvt_fsys_set_dir(&currdir);  //torna a posizionarsi nella directory iniziale
 | 
			
		||||
 | 
			
		||||
	return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TArchive::zip(int mode, long firm, char floppy, const char* desc)
 | 
			
		||||
{                     
 | 
			
		||||
  TString_array fl;
 | 
			
		||||
@ -494,6 +502,77 @@ bool TArchive::unzip(
 | 
			
		||||
  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)
 | 
			
		||||
{
 | 
			
		||||
  TString_array fl;
 | 
			
		||||
@ -513,6 +592,12 @@ bool TArchive::backup(const char* dir, char floppy, const char* desc, bool)
 | 
			
		||||
  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)
 | 
			
		||||
{
 | 
			
		||||
  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);
 | 
			
		||||
}
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
@ -50,21 +50,29 @@ public:
 | 
			
		||||
 | 
			
		||||
  // @cmember Effettua il backup della directory
 | 
			
		||||
  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
 | 
			
		||||
  bool backup(int mode, long firm, char floppy, const char* desc, bool pr_set=TRUE);
 | 
			
		||||
 | 
			
		||||
  // @cmember Effettua il restore della directory
 | 
			
		||||
  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
 | 
			
		||||
  bool restore(int mode, long firm, char floppy, bool temp, bool pr_set=TRUE);
 | 
			
		||||
 | 
			
		||||
  // @cmember Effettua il backup della directory
 | 
			
		||||
  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
 | 
			
		||||
  bool zip(int mode, long firm, char floppy, const char* desc);
 | 
			
		||||
 | 
			
		||||
  // @cmember Effettua il restore della directory
 | 
			
		||||
  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
 | 
			
		||||
  bool unzip(int mode, long firm, char floppy, bool temp);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user