fdbdc4c011
ba1.cpp Aggiunti commenti ba1300.cpp Nessuna differenza ba2* Gestione backup con pkzip ba3* e b4* Aggiornata get_next_key git-svn-id: svn://10.65.10.50/trunk@6594 c028cbd2-c16b-5b4b-a496-9718f37d4682
123 lines
2.5 KiB
C++
Executable File
123 lines
2.5 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <archives.h>
|
|
#include <isam.h>
|
|
#include <mask.h>
|
|
#include <prefix.h>
|
|
|
|
#include "ba2200.h"
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Archiving application
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TArchive_app : public TSkeleton_application
|
|
{
|
|
TArchive _arc;
|
|
|
|
protected:
|
|
virtual bool create();
|
|
virtual void main_loop();
|
|
static bool test_firm(TMask_field& f, KEY k);
|
|
KEY query(long& firm, char& floppy, TString& desc, bool& tmp, bool& zip) const;
|
|
|
|
public:
|
|
void stop_job();
|
|
|
|
TArchive_app() {}
|
|
virtual ~TArchive_app() {}
|
|
};
|
|
|
|
bool TArchive_app::create()
|
|
{
|
|
bool ok = TRUE;
|
|
|
|
TIsamfile utenti(LF_USER);
|
|
utenti.open(_excllock);
|
|
for (int err = utenti.first(); err == NOERR; err = utenti.next())
|
|
{
|
|
const TString16 u = utenti.get("USERNAME");
|
|
if (u != user() && utenti.get_bool("CONNECTED"))
|
|
{
|
|
ok = error_box("L'archiviazione non puo' essere effettuata\n"
|
|
"se ci sono altri utenti collegati: %s", (const char*)u);
|
|
}
|
|
}
|
|
utenti.close();
|
|
|
|
if (ok)
|
|
ok = TSkeleton_application::create();
|
|
|
|
return ok;
|
|
}
|
|
|
|
bool TArchive_app::test_firm(TMask_field& f, KEY k)
|
|
{
|
|
if (k == K_SPACE)
|
|
{
|
|
const char* d = f.mask().get(F_CODDITTA);
|
|
const long firm = atol(d);
|
|
if (firm > 0 && !prefix().exist(firm))
|
|
return f.error_box("La ditta %s non esiste.",d);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const
|
|
{
|
|
TMask m("ba2200");
|
|
|
|
m.set_handler(F_SALVA,test_firm);
|
|
|
|
const KEY k = m.run();
|
|
|
|
if (k != K_QUIT)
|
|
{
|
|
if (m.get(F_DATA) == "T")
|
|
firm = -1;
|
|
else
|
|
firm = m.get_long(F_CODDITTA);
|
|
floppy = m.get(F_FLOPPY)[0];
|
|
desc = m.get(F_DESCR);
|
|
temp = m.get_bool(F_TEMP);
|
|
zip = m.get_bool(F_ZIP);
|
|
}
|
|
|
|
return k;
|
|
}
|
|
|
|
void TArchive_app::main_loop()
|
|
{
|
|
KEY k;
|
|
long firm;
|
|
char floppy;
|
|
TString desc(80);
|
|
bool temp;
|
|
bool zip;
|
|
|
|
while ((k = query(firm, floppy, desc, temp, zip)) != K_QUIT)
|
|
{
|
|
if (k == K_SAVE)
|
|
{
|
|
if (zip)
|
|
_arc.zip(firm, floppy, desc);
|
|
else
|
|
_arc.backup(firm, floppy, desc);
|
|
}
|
|
else
|
|
{
|
|
if (zip)
|
|
_arc.unzip(firm, floppy, temp);
|
|
else
|
|
_arc.restore(firm, floppy, temp);
|
|
}
|
|
}
|
|
}
|
|
|
|
int ba2200(int argc, char* argv[])
|
|
{
|
|
TArchive_app a;
|
|
a.run(argc, argv, "Archiviazione");
|
|
return 0;
|
|
}
|
|
|