#include #include #include #include #include #include typedef unsigned char bool ; #define FALSE 0 #define TRUE 1 int main(int argc, char** argv); bool fcopy(const char* orig, const char* dest); bool fexist(const char* file); int update_file(const char *from, const char * to); bool fexist( const char* file) // @parm Nome del file di cui contrallarne l'esistenza { int err = access(file, 0); return err == 0; } bool fcopy( const char* orig, // @parm Nome del file di origine const char* dest) // @parm Nome del file di destinazione // file

in coda al file

(default FALSE) // @comm Nel caso vengano ravvisati degli errori durante l'operazione vengono // creati dei box di comunicazione che indicano la causa del problema { // Copia il file su se stesso? if (stricmp(orig, dest) == 0) return TRUE; // Or FALSE? FILE* i = fopen(orig, "rb"); if (!i) return fprintf(stderr,"Impossibile leggere il file %s", orig); FILE* o = fopen(dest, "wb"); if (!o) { fclose(i); return fprintf(stderr,"Impossibile scrivere il file ", dest); } const word size = 16*1024; unsigned char * buffer=new unsigned char[size]; bool ok = TRUE; while (ok) { const word letti = fread(buffer, 1, size, i); ok = fwrite(buffer, 1, letti, o) == letti; if (letti < size) break; } if (!ok) fprintf(stderr,"Errore di scrittura: probabile disco pieno!"); fclose(o); fclose(i); delete buffer; return ok; } int update_file(const char *from, const char * to) { int r=0; if (fexist(from)) { if (fcopy(from,to)) r=remove(from); } return r; } int PASCAL WinMain(HINSTANCE _this, HINSTANCE _prev , LPSTR _cmd,int _mode) { int r=0; char ba1exe[]="ba1.exe",ba1ex[]="ba1.ex_"; char ba0exe[]="ba0.exe",ba0ex[]="ba0.ex_"; update_file(ba1ex,ba1exe); update_file(ba0ex,ba0exe); return 0; }