Patch level : 10.0

Files correlati     : ba0 ba1
Ricompilazione Demo : [ ]
Commento            :
Migliorata gestione dninst.zip


git-svn-id: svn://10.65.10.50/trunk@19861 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-01-04 10:11:51 +00:00
parent 6237b1ae22
commit 10b8b17bf4
8 changed files with 106 additions and 381 deletions

View File

@ -190,7 +190,7 @@ bool TMenuitem::create(const char* t)
// Controlla lo stato di aggiornamento // Controlla lo stato di aggiornamento
if (_enabled && is_program()) if (_enabled && is_program())
_enabled = !menu().is_dangerous(_action); _enabled = !menu().is_dangerous(_action) && !menu().is_vanished(_action);
return visible; return visible;
} }
@ -333,14 +333,6 @@ bool TMenuitem::perform_program() const
if (ok) if (ok)
{ {
TCurrency::force_cache_update(); // Chiude cache valute TCurrency::force_cache_update(); // Chiude cache valute
// Anti TASSAN
if (_action.starts_with("lv") && is_tassan())
{
((TString&)_action) = "lv";
((TString&)_caption) << " lavanderie";
}
TExternal_app a(_action); TExternal_app a(_action);
const bool install_app = _action.starts_with("ba1 -6", true); const bool install_app = _action.starts_with("ba1 -6", true);
@ -584,6 +576,9 @@ bool TMenu::read(const char* name, TString& root)
bool TMenu::read(const char* name) bool TMenu::read(const char* name)
{ {
Tdninst dninst;
dninst.find_killed(_vanished);
TString root; TString root;
bool ok = read(name, root); bool ok = read(name, root);
if (ok && _current == NULL) if (ok && _current == NULL)
@ -781,8 +776,12 @@ void TMenu::reload_images()
bool TMenu::has_module(const char* mod) bool TMenu::has_module(const char* mod)
{ {
const word module = dongle().module_name2code(mod); TDongle& donkey = dongle();
return main_app().has_module(module); const word module = donkey.module_name2code(mod);
bool yes = module == BAAUT;
if (!yes && donkey.active(module))
yes = main_app().has_module(module) && !is_vanished(mod);
return yes;
} }
bool TMenu::is_dangerous(const char* mod) bool TMenu::is_dangerous(const char* mod)
@ -791,21 +790,28 @@ bool TMenu::is_dangerous(const char* mod)
return _dangerous.get_pos(code) >= 0; return _dangerous.get_pos(code) >= 0;
} }
bool TMenu::is_vanished(const TString& app)
{
if (_vanished.empty() || app.starts_with("ba"))
return false;
if (_vanished.find('*') >= 0)
return true;
bool yes = _vanished.get_pos(app) >= 0;
if (!yes && app[0] != '7' && isdigit(app[0]))
{
TString4 mod; mod << app[0] << app[1];
const int cod = dongle().module_name2code(mod);
mod = dongle().module_code2name(cod);
yes = _vanished.get_pos(mod) >= 0;
}
return yes;
}
TMenu::TMenu() : _current(NULL), _item(0), _mask_mode(0) TMenu::TMenu() : _current(NULL), _item(0), _mask_mode(0)
{ } { }
TMenu::~TMenu() TMenu::~TMenu()
{ } { }
bool is_tassan()
{
bool yes = false;
if (dongle().number() == 202)
{
const TDate morte(07, 01, 2010); // Giorno della morte del programma
const TDate oggi(TODAY);
yes = oggi >= morte;
}
return yes;
}

View File

@ -1,10 +1,6 @@
#ifndef __BA0101_H #ifndef __BA0101_H
#define __BA0101_H #define __BA0101_H
#ifndef __ASSOC_H
#include <assoc.h>
#endif
#ifndef __COLORS_H #ifndef __COLORS_H
#include <colors.h> #include <colors.h>
#endif #endif
@ -13,15 +9,10 @@
#include <image.h> #include <image.h>
#endif #endif
#ifndef __SCANNER_H
#include <scanner.h>
#endif
#ifndef __STACK_H #ifndef __STACK_H
#include <stack.h> #include <stack.h>
#endif #endif
class TSubmenu; class TSubmenu;
class TMenu; class TMenu;
@ -132,7 +123,7 @@ class TMenu : public TAssoc_array
TAssoc_array _images; TAssoc_array _images;
TToken_string _dangerous; TToken_string _dangerous, _vanished;
TString _last_search; TString _last_search;
TAssoc_array _ignore_list; TAssoc_array _ignore_list;
@ -169,6 +160,7 @@ public:
bool has_module(const char* mod); bool has_module(const char* mod);
bool is_dangerous(const char* mod); bool is_dangerous(const char* mod);
bool is_vanished(const TString& app);
void set_dangerous_modules(const TToken_string& mod) void set_dangerous_modules(const TToken_string& mod)
{ _dangerous = mod; } { _dangerous = mod; }
@ -182,6 +174,5 @@ public:
void set_installing_flag(); void set_installing_flag();
bool installing(); bool installing();
bool is_tassan();
#endif #endif

View File

@ -243,10 +243,6 @@ void TBook_window::set_page_caption(short page, const TString& caption, int icon
xvt_notebk_set_tab_title(_ctrl, page, caption); // Titolo dell'orecchio xvt_notebk_set_tab_title(_ctrl, page, caption); // Titolo dell'orecchio
xvt_notebk_set_tab_icon(_ctrl, page, icon); // Icona dell'orecchio xvt_notebk_set_tab_icon(_ctrl, page, icon); // Icona dell'orecchio
xvt_notebk_set_page_title(_ctrl, page, caption); // Titolo della finestra xvt_notebk_set_page_title(_ctrl, page, caption); // Titolo della finestra
// Anti TASSAN
if (caption.find("avand") > 0 && is_tassan())
set_logo("lv00");
} }
} }

View File

@ -141,13 +141,13 @@ void TRequest_form::update_serno(const TString& num)
const TDate today(TODAY); const TDate today(TODAY);
TForm_item& data = find_field('H', odd_page, FF_DATARICH); TForm_item& data = find_field('H', odd_page, FF_DATARICH);
data.set(today.string()); data.set(today.string());
switch (::dongle().hardware() ) const char* hw = "";
switch (::dongle().hardware())
{ {
case _dongle_hardlock: case _dongle_hardlock: hw = "HARDLOCK"; break;
find_field('H',odd_page,FF_DONGLE_HW).set("HARDLOCK"); break; default: hw = "EUTRON"; break;
default:
find_field('H',odd_page,FF_DONGLE_HW).set("EUTRON"); break;
} }
find_field('H',odd_page,FF_DONGLE_HW).set(hw);
TForm_item& serno = find_field('H', odd_page, FF_DONGLE_SN); TForm_item& serno = find_field('H', odd_page, FF_DONGLE_SN);
serno.set(num); serno.set(num);
} }
@ -157,8 +157,7 @@ void TRequest_form::update_dongle()
const TDongle& d = dongle(); const TDongle& d = dongle();
TForm_item& year = find_field('H', odd_page, FF_YEAR); TForm_item& year = find_field('H', odd_page, FF_YEAR);
TString16 str; TString16 str; str << d.year_assist();
str << "31-12-" << (int)d.year_assist();
year.set(str); year.set(str);
TForm_item& user = find_field('H', odd_page, FF_NUTENTI); TForm_item& user = find_field('H', odd_page, FF_NUTENTI);
@ -168,14 +167,8 @@ void TRequest_form::update_dongle()
void TRequest_form::update_os() void TRequest_form::update_os()
{ {
const char* stros = NULL; char stros[256];
switch (xvt_sys_get_os_version()) xvt_sys_get_version(stros, NULL, sizeof(stros));
{
case XVT_WS_LINUX : stros = "Linux"; break;
case XVT_WS_WIN_95: stros = "Windows 95"; break;
case XVT_WS_WIN_98: stros = "Windows 98"; break;
default : stros = "Windows NT/2000/XP"; break;
}
TForm_item& os = find_field('H', odd_page, FF_OS); TForm_item& os = find_field('H', odd_page, FF_OS);
os.set(stros); os.set(stros);
@ -252,7 +245,6 @@ protected:
void print_request(); void print_request();
void print_answer(); void print_answer();
void print_status(); void print_status();
//void print_listino();
public: public:
virtual void print(); virtual void print();
@ -261,159 +253,7 @@ public:
virtual ~TAttivazione_moduli() { } virtual ~TAttivazione_moduli() { }
}; };
HIDDEN TAttivazione_moduli& app() { return (TAttivazione_moduli&)main_app(); }
HIDDEN TAttivazione_moduli& app() { return (TAttivazione_moduli &)main_app(); }
int round_price(int val)
{
if (val>50000)
val=int((val+9)/10000)*10000;
else
val=int((val+9)/10)*10;
return val;
}
bool TAttivazione_moduli::sh_nposti_handler(TMask_field& fld, KEY key)
{
if (key == K_TAB && fld.focusdirty())
{
// default
int posti = atoi(fld.get());
if (posti<=1)
return true;
int val = fld.mask().get_int(F_ACQ1);
switch (posti)
{
case 2:
val = int(val * .30); break;
case 3:
val = int(val * .20); break;
case 5:
val = int(val * .15); break;
case 9:
val = int(val * .10); break;
case 30:
val = int(val * .05); break;
default:
val=0;
}
val = round_price(val);
if (fld.mask().field(fld.dlg()+1).empty())
fld.mask().field(fld.dlg()+1).set(val) ; // costo di acquisto
val=fld.mask().get_int(fld.dlg()+1);
val = int (val * .35);
val = round_price(val);
fld.mask().field(fld.dlg()+2).set(val) ; // costo di aggiornamento
}
return true;
}
bool TAttivazione_moduli::sh_acquisto_handler(TMask_field& fld, KEY key)
{
return true;
}
bool TAttivazione_moduli::sh_aggiornamento_handler(TMask_field& fld, KEY key)
{
if (key == K_TAB && fld.empty())
{
}
return true;
}
void TAttivazione_moduli::update_listino()
{
TMask msklistino("ba1500b") ;
TMask &smask = msklistino.sfield(F_MODULILIST).sheet_mask();
for (int c=0; c<6; c++)
{
smask.set_handler(F_POSTI1+3*c, sh_nposti_handler );
smask.set_handler(F_ACQ1+3*c, sh_acquisto_handler );
smask.set_handler(F_AGG1+3*c, sh_aggiornamento_handler);
}
load_masklistino(msklistino);
if (msklistino.run()==K_ENTER)
{
save_masklistino(msklistino);
}
}
void TAttivazione_moduli::load_masklistino(TMask &msklistino)
{
TWait_cursor hourglass;
TInstall_ini ini;
TDate dt(ini.get("Listino","Main"));
if (!dt.empty())
msklistino.set(F_DATALIST,dt);
TSheet_field& sf = msklistino.sfield(F_MODULILIST);
for (int i = 0; i < sf.items(); i++)
{
const TString16 modname(_im->get_name_by_order(i));
if (modname.empty())
break;
TToken_string& riga = sf.row(i);
riga=modname;
const TFixed_string d(_im->get_description_by_order(i));
riga.add(d);
riga.trim();
riga.add("1"); // prima colonna = monoutenza
TString_array prices;
ini.set_paragraph(modname);
ini.list_variables(prices, true,modname,true); // get array sorted by var name
FOR_EACH_ARRAY_ROW(prices, v, key)
{
const TFixed_string price(key->get(0));
if (price.compare("Prezzo", 6, true) == 0)
{
TString16 colonna(price.sub(7,price.len()-1));
if (atoi(colonna) != 1)
riga.add(colonna);
TToken_string valori(key->get(1),',');
riga.add(valori.get(0));
riga.add(valori.get(1));
}
}
sf.check_row(i);
}
}
void TAttivazione_moduli::save_masklistino(TMask &msklistino)
{
TWait_cursor hourglass;
TInstall_ini ini;
ini.set_paragraph("Main");
ini.set("Listino",msklistino.get(F_DATALIST));
TSheet_field& sf = (TSheet_field&)msklistino.field(F_MODULILIST);
const int items=sf.items();
for (int i = 0; i < items; i++)
{
TToken_string& riga = sf.row(i);
TString tmpstr(riga.get(0));
ini.set_paragraph(tmpstr);
int nposti;
for (int col=0; col < 6; col++)
{
const char * p=riga.get(3*col+2);
if (p==NULL || (nposti=atoi(p))==0 )
break;
tmpstr = riga.get(3*col+3);
if (tmpstr.blank())
continue;
tmpstr << ',' << riga.get(3*col+4);
TString16 varname("Prezzo");
varname << '(' << nposti << ')';
ini.set(varname,tmpstr);
if (ini.new_paragraph())
ini.set("Descrizione",riga.get(1));
}
}
}
int TAttivazione_moduli::build_sheet(bool on) int TAttivazione_moduli::build_sheet(bool on)
{ {
@ -738,15 +578,6 @@ bool TAttivazione_moduli::print_handler(TMask_field& fld, KEY key)
return true; return true;
} }
/*
bool TAttivazione_moduli::printlist_handler(TMask_field& fld, KEY key)
{
if (key == K_SPACE)
app().print_listino();
return true;
}
*/
bool TAttivazione_moduli::aga_handler(TMask_field& fld, KEY key) bool TAttivazione_moduli::aga_handler(TMask_field& fld, KEY key)
{ {
if (key == K_SPACE) if (key == K_SPACE)
@ -850,47 +681,6 @@ bool TAttivazione_moduli::k_notify(TSheet_field& f, int r, KEY k)
return true; return true;
} }
bool TAttivazione_moduli::modifica_listino_handler(TMask_field& fld, KEY key)
{
if (key == K_SPACE)
app().update_listino();
return true;
}
bool TAttivazione_moduli::aggiorna_listino_handler(TMask_field& fld, KEY key)
{
bool ok = true;
if (key == K_SPACE)
{
TInstall_ini ini;
TFilename name = ini.get("DiskPath");
name.add(ini.default_name());
while (!name.exist())
{
TMask msk(TR("Aggiornamento listino"), 1, -1, -1, 60, 4);
msk.add_string(DLG_USER, 0, PR("Percorso "), 1, 1, 50);
msk.add_button(DLG_CANCEL, 0, "", -12, -1, 10, 2);
msk.add_button(DLG_OK, 0, "", -22, -1, 10, 2);
msk.set(DLG_USER, name);
if (msk.run() == K_ENTER)
name = msk.get(DLG_USER);
else
{
ok = false;
break;
}
}
if (ok)
{
if (ok = ini.update_prices(name))
message_box(TR("Listino aggiornato"));
else
message_box(TR("Listino già aggiornato"));
}
}
return ok;
}
void TAttivazione_moduli::print_request() void TAttivazione_moduli::print_request()
{ {
TRequest_form form("ba1500a"); TRequest_form form("ba1500a");
@ -1147,13 +937,6 @@ bool TAttivazione_moduli::create()
return error_box(TR("Questo programma non puo' funzionare mentre e' in funzione il server di autorizzazioni")); return error_box(TR("Questo programma non puo' funzionare mentre e' in funzione il server di autorizzazioni"));
ok = TApplication::test_assistance_year(); ok = TApplication::test_assistance_year();
#ifdef DBG
// Backdoor nascosta per la cifratura del dninst.zip
// Mettere nella cartella dei programi il file dninst.txt ...
// ... e nascera' in automagico il file dninst.zip per Luca
if (ok && argc() > 2 && strcmp(argv(2), "-dninst") == 0)
ok = false;
#endif
if (!ok) if (!ok)
{ {
ok = update_assistance_year(); ok = update_assistance_year();

View File

@ -1,75 +1,16 @@
#include <applicat.h> #include <applicat.h>
#include <config.h> #include <config.h>
#include <dongle.h>
#include <modaut.h>
#include <scanner.h> #include <scanner.h>
#include <utility.h> #include <utility.h>
#include "ba1500.h" #include "ba1500.h"
HIDDEN void build_key(char* dninst_key)
{
for (int i = 0; i < 8; i++)
dninst_key[i] = 'A'+ rand() % 26;
}
HIDDEN void decode_string(char* dninst_key, char* data)
{
build_key(dninst_key);
char tmp[1024];
int i;
for (i = 0; data[i]; i++)
tmp[i] = data[i] - (i < 8 ? dninst_key[i] : tmp[i - 8]);
tmp[i] = '\0';
strcpy(data, tmp);
}
#ifdef DBG
HIDDEN void encode_string(char* dninst_key, char* data)
{
build_key(dninst_key);
char tmp[1024];
int i;
for (i = 0; data[i]; i++)
tmp[i] = data[i] + (i < 8 ? dninst_key[i] : data[i - 8]);
tmp[i] = '\0';
strcpy(data, tmp);
}
HIDDEN bool build_dninst()
{
ifstream inf("dninst.txt", ios::in);
if (inf.good())
{
char dninst_key[8] = "";
ofstream ouf("dninst.zip", ios::out | ios::binary);
char line[256];
inf.getline(line, sizeof(line));
const int year = atoi(line);
CHECKD(year >= 2091 && year <= 3000, "Anno errato:", year);
srand(883); // Inizializza generatore numeri casuali per l'anno
encode_string(dninst_key, line);
ouf << line << '\n';
srand(year); // Inizializza generatore numeri casuali per i moduli
while (!inf.eof())
{
inf.getline(line, sizeof(line));
encode_string(dninst_key, line);
ouf << line << '\n';
}
return true;
}
return false;
}
#endif
const char* split_ass(const int ass_year) const char* split_ass(const int ass_year)
{ {
int year = ass_year, number = 0; int year = ass_year, number = 0;
if (ass_year > 2008) if (ass_year >= 2009)
{ {
year = (ass_year/1000)*1000 + (ass_year%1000)/10; year = (ass_year/1000)*1000 + (ass_year%1000)/10;
number = ass_year%10; number = ass_year%10;
@ -82,7 +23,6 @@ const char* split_ass(const int ass_year)
return tmp; return tmp;
} }
HIDDEN bool show_error(const char* str) HIDDEN bool show_error(const char* str)
{ {
int app_year, dum1, dum2, dum3; int app_year, dum1, dum2, dum3;
@ -97,14 +37,6 @@ HIDDEN bool show_error(const char* str)
// Copia il file dninst.zip dal CD/server alla cartella corrente // Copia il file dninst.zip dal CD/server alla cartella corrente
bool update_dninst(bool force) bool update_dninst(bool force)
{ {
#ifdef DBG
if (force && main_app().argc() > 2 && strcmp(main_app().argv(2), "-dninst") == 0)
{
build_dninst();
return true;
}
#endif
//legge dal diskpath di install.ini la directory da cui aggiornarsi;se il dninst.zip di tale.. //legge dal diskpath di install.ini la directory da cui aggiornarsi;se il dninst.zip di tale..
//..directory e' piu' nuovo di quello in locale -> lo copia in locale //..directory e' piu' nuovo di quello in locale -> lo copia in locale
const TFilename local_name = "setup/dninst.zip"; const TFilename local_name = "setup/dninst.zip";
@ -134,59 +66,50 @@ bool update_dninst(bool force)
bool update_assistance_year() bool update_assistance_year()
{ {
if (dongle().hardware() == _dongle_network) TDongle& donkey = dongle();
{ if (donkey.hardware() == _dongle_network)
show_error(TR("Il server di autorizzazioni deve essere disattivato")); return show_error(TR("Il server di autorizzazioni deve essere disattivato"));
return false;
}
update_dninst(true); update_dninst(true);
const TFilename dninst = "setup/dninst.zip"; Tdninst dninst;
if (dninst.exist()) const int dninst_year = dninst.assist_year();
if (dninst_year > 0)
{ {
char dninst_key[8] = "";
TScanner keys(dninst);
TString& anno = keys.line();
srand(883);
decode_string(dninst_key, anno.get_buffer());
const int ass_year = atoi(anno);
//se l'anno di assistenza della versione (dninst.zip) e' piu' grande di quello attualmente registrato sulla... //se l'anno di assistenza della versione (dninst.zip) e' piu' grande di quello attualmente registrato sulla...
//...chiavetta controlla se il serialnumber della chiavetta e' presente nella lista dei codici... //...chiavetta controlla se il serialnumber della chiavetta e' presente nella lista dei codici...
//...validi dentro il dninst.zip //...validi dentro il dninst.zip
if (ass_year > dongle().year_assist()) if (dninst_year > donkey.year_assist())
{ {
const int serno = get_serial_number(); const int serno = get_serial_number();
srand(ass_year); TToken_string to_be_killed;
while (!keys.eof()) if (dninst.find_killed(to_be_killed))
{ {
TString& line = keys.line(); donkey.set_year_assist(dninst_year);
if (line.empty()) FOR_EACH_TOKEN(to_be_killed, mod)
break;
decode_string(dninst_key, line.get_buffer());
const int sn = atoi(line);
if (sn == serno || line[0] == '*')
{ {
dongle().set_year_assist(ass_year); if (strlen(mod) == 2)
if (dongle().burn())
{ {
return true; //Complimenti,la chiavetta e' presente nella lista e sara' aggiornato l'anno di assistenza const word aut = donkey.module_name2code(mod);
if (aut > BAAUT && aut < ENDAUT)
donkey.deactivate(aut);
} }
else }
{ if (donkey.burn())
show_error(FR("Errore di scrittura sulla chiave di protezione")); return true; // Complimenti,la chiavetta e' presente nella lista e sara' aggiornato l'anno di assistenza
return false; else
} //if(dongle().burn... return show_error(FR("Errore di scrittura sulla chiave di protezione"));
} //if(sn==serno... } //if(sn==serno...
} //while(!keys.eof()... else
//Non e' riuscito a trovare la chiavetta nell'elenco, non puo' aggiornare automaticamente {
show_error(TR("Il numero di serie di questa postazione non è presente sul database")); //Non e' riuscito a trovare la chiavetta nell'elenco, non puo' aggiornare automaticamente
show_error(TR("Il numero di serie di questa postazione non è presente sul database"));
}
} }
else //if(ass_year>dongle... else //if(ass_year>dongle...
{ {
//Se l'anno di assistenza sulla chiave e' maggiore di quello sul dninst segnala l'incongruenza e poi? //Se l'anno di assistenza sulla chiave e' maggiore di quello sul dninst segnala l'incongruenza e poi?
if (ass_year < dongle().year_assist()) if (dninst_year < donkey.year_assist())
show_error(TR("L'anno di assistenza sul database e' inferiore a quello registrato sulla chiave di protezione")); show_error(TR("L'anno di assistenza sul database e' inferiore a quello registrato sulla chiave di protezione"));
//Se l'anno di assistenza coincide con quello sulla chiave -> la chiave ha gia' l'assistenza... //Se l'anno di assistenza coincide con quello sulla chiave -> la chiave ha gia' l'assistenza...
//...corretta abilitata e puo' proseguire l'aggiornamento //...corretta abilitata e puo' proseguire l'aggiornamento

View File

@ -1931,7 +1931,10 @@ long TFascicolator_mask::find_signature(const TFilename& filename, const char* s
if (car == signature[compare]) if (car == signature[compare])
{ {
if (compare == 0) if (compare == 0)
position = infile.tellg()-1L; {
position = infile.tellg();
position--;
}
compare++; compare++;
if (signature[compare] == '\0') if (signature[compare] == '\0')
{ {

View File

@ -194,7 +194,7 @@ bool TInstaller_mask::is_visible_patch(TConfig& ini) const
// Pezza temporanea: assegno OEM noti // Pezza temporanea: assegno OEM noti
switch (mod) switch (mod)
{ {
case LVAUT: oem = "2,4"; break; case LVAUT: oem = "2"; break;
case PEAUT: oem = "3"; break; case PEAUT: oem = "3"; break;
case COAUT: oem = "5"; break; case COAUT: oem = "5"; break;
default: break; default: break;
@ -427,9 +427,16 @@ bool TInstaller_mask::autoload()
//se si ritrova dei vecchi file nella directory temporanea, la pulisce per evitare casini //se si ritrova dei vecchi file nella directory temporanea, la pulisce per evitare casini
ininame = path; ininame.add("*.*"); ininame = path; ininame.add("*.*");
TString_array list; TString_array list;
::list_files(ininame, list); const int cache_files = ::list_files(ininame, list);
FOR_EACH_ARRAY_ROW(list, i, row) if (cache_files > 0)
xvt_fsys_remove_file(*row); {
TProgind pi(cache_files, TR("Azzeramento cache"), false, true);
FOR_EACH_ARRAY_ROW(list, i, row)
{
pi.addstatus(1);
xvt_fsys_remove_file(*row);
}
}
ininame = path; ininame = path;
ininame.add(TInstall_ini::default_name()); ininame.add(TInstall_ini::default_name());
@ -437,9 +444,25 @@ bool TInstaller_mask::autoload()
{ {
TFilename remote_ini = http_path; TFilename remote_ini = http_path;
remote_ini << TInstall_ini::default_name(); remote_ini << TInstall_ini::default_name();
if (remote_ini.full()) // dummy test
{ {
TTimerind contacting(30*1000, TR("Connessione al server HTTP..."), false, false); TTimerind contacting(30*1000, TR("Connessione al server HTTP..."), false, false);
http_get(http_server, remote_ini, ininame); http_get(http_server, remote_ini, ininame);
// Cerca di prelevare anche dninst.zip
const char* const local_dninst = "setup/dninst.zip";
TFilename remote_dninst = http_path;
remote_dninst << local_dninst;
if (!http_get(http_server, remote_dninst, local_dninst))
{
// Se non aggiorno da release riprovo con l'indirizzo dell'OEM
remote_dninst = http_default_path();
remote_dninst << local_dninst;
const int slash = remote_dninst.find('/');
if (slash > 0)
http_get(remote_dninst.left(slash), remote_dninst.mid(slash), local_dninst);
}
} }
} }
} //if(internet... } //if(internet...

View File

@ -509,16 +509,16 @@ TFields_sheet::~TFields_sheet()
bool TWizard_mask::file_open(TFilename& fname) const bool TWizard_mask::file_open(TFilename& fname) const
{ {
DIRECTORY dir; DIRECTORY dir;
FILE_SPEC fs; xvt_fsys_get_dir(&dir); // Save dir
xvt_fsys_get_dir(&dir); FILE_SPEC fs;
xvt_fsys_get_dir(&fs.dir); fs.dir = dir;
strcpy(fs.type, fname.ext()); strcpy(fs.type, fname.ext());
strcpy(fs.name, fname); strcpy(fs.name, fname);
strcpy(fs.creator, "WIZ"); strcpy(fs.creator, "WIZ");
const bool good = xvt_dm_post_file_open(&fs, TR("Selezionare il file ...")) == FL_OK; const bool good = xvt_dm_post_file_open(&fs, TR("Selezionare il file ...")) == FL_OK;
xvt_fsys_set_dir(&dir); xvt_fsys_set_dir(&dir); // Restore dir
if (good) if (good)
fname = fs.name; fname = fs.name;