#ifndef __ARCHIVES_H
#define __ARCHIVES_H

#ifndef __STRINGS_H
#include <strings.h>
#endif

///////////////////////////////////////////////////////////
// TArchive
///////////////////////////////////////////////////////////

// @doc EXTERNAL

// @class TArchive | Classe per effettuare compressione e archiviazione di dati
//
// @base public | TObject
class TArchive : public TObject

// @author:(INTERNAL) Angelo

// @access:(INTERNAL) Private Member
{

// @access Protected Member
protected:
        
  // @cmember Sposta il file nella directory dir
  bool move_file(const TFilename& file, const char* dir) const;
  
	// @cmember Spezza un file in pezzi da max_chunk
  bool split_file(const TFilename& archive, unsigned long max_chunk) const;
  
	// @cmember Spezza il file.zip in modo da farlo stare sul dischetto
  bool fsplit_zip(const char* filename, char floppy, const char* desc = "") const;

  // @cmember Ricostruisce la lista dei file contenuti nel backup
  int build_backup_list(int mode, long firm, TString_array& fl) const;
  // @cmember Scrive il file backup.ini sul drive indicato
  bool write_ini(TFilename& name, int disk, long tot, const char* desc, char floppy) const;                          
  
  // @cmember Costruisce la lista delle directory da scompattare
  int build_restore_list(int& mode, long firm, char floppy, TString_array& fl) const;
  
// @access Public Member
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 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 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 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 ditta
  bool unzip(int mode, long firm, char floppy, bool temp);

  TArchive() { }
  virtual ~TArchive() { }
};           

#endif