









                                  MDIFF  -  MPATCH
                                    Release  1.60










          Un software semplice ma completo per produrre e applicare patch a
           programmi e file di dati per Dos, OS/2, Windows95 e WindowsNT.








                             Manuale in lingua italiana.












               (C) 1997/98 Maurizio Giunti - Tutti i diritti riservati






     1.SOMMARIO


     1.SOMMARIO                                                               2


     2.GARANZIE                                                               3


     3.USO E DISTRIBUZIONE                                                    3


     4.PERCHE'                                                                3


     5.A COSA SERVE                                                           3


     6.ESEMPIO                                                                4


     7.DOS, OS/2, WINDOWS 95 E WINDOWS NT                                     4


     8.LIMITI E BUG NOTI                                                      4


     9.MDIFF - MDIFF2 - MDIFFW                                                5


     10.MPATCH - MPATCH2 - MPATCHW                                            5


     11.MDF2EXE - MDF2EXE2 - MDF2EXEW                                         6


     12.ALCUNI CONSIGLI                                                       6


     13.LIBRERIE PER APPLICARE PATCH                                          7


     14.COME REGISTRARSI                                                      7


     15.COME CONTATTARE L'AUTORE                                              7


     16.RINGRAZIAMENTI                                                        8





                                                                              2






     2.GARANZIE
     QUESTO SOFTWARE E I FILE CHE LO ACCOMPAGNANO SONO DISTRIBUITI COSI' COME
     SONO, E SENZA GARANZIE DI FUNZIONAMENTO O QUALUNQUE ALTRA GARANZIA.
     L'unica  garanzia  fornita con  questo software    che occupa  spazio  su
     disco.  Non posso assolutamente  garantire che   funzioni perfettamente  o
     rappresenti la soluzione di ogni vostro problema. Sono inoltre  sicuro che
     non   un virus e   non contiene (a  meno che non sia  stato infettato   o
     modificato  dopo  la  compilazione)  Trojan-Horses,  Back-Doors   o  altre
     diavolerie  simili.  In ogni  caso  l'autore declina  ogni  responsabilit
     diretta  o indiretta, per  eventuali danni   morali o materiali  derivanti
     dal suo uso.

     3.USO E DISTRIBUZIONE
     Questo software appartiene allo Shareware, ci significa che  chiunque pu
     liberamente  distribuirlo e  pu usarlo  gratuitamente per  un periodo  di
     prova  di 15 giorni.  Dopo tale  periodo gli utenti  che continueranno  ad
     usarlo  devono registrare la loro  copia mandando il contributo  richiesto
     all'autore, Maurizio Giunti.
     Gli  utenti cos registrati riceveranno  un "codice di registrazione"  che
     conterr  il loro  nome (o  il nome  della loro  impresa in  caso di  site
     license).
     Questo  software  pu  essere liberamente  distribuito  ma  gratuitamente,
     salvo le spese di copia e spedizione.
     E'  imperativo che  il pacchetto  originale che contiene  il software  sia
     distribuito senza alcuna modifica.
     Gli   utenti  registrati  potranno  distribuire  liberamente   MPATCH.EXE,
     MPATCH2.EXE  e MPATCHW.EXE insieme a uno o pi file *.MDF prodotti con  la
     loro  copia registrata di  MDIFF. Inoltre gli  utenti registrati  potranno
     liberamente  distribuire patch  auto installanti  create con  MDF2EXE.EXE,
     MDF2EXE2.EXE  e MDF2EXEW.EXE,  che contengano solo  file *.MDF  realizzate
     con una copia registrata di MDIFF.
     In  ogni  caso i  file  di patch  *.MDF  create da  MDIFF  possono  essere
     liberamente  distribuiti, l'autore di MDIFF  non reclama alcun diritto  su
     di essi.

     4.PERCHE'
     Qualche  tempo fa  dovevo rilasciare  una versione  aggiornata di  un  mio
     programma:  il pacchetto compresso "pesava"  pi  di 200 Kbyte, e  sarebbe
     stato  sicuramente  pi  conveniente  per  tutti  aggiornare   il  vecchio
     eseguibile  tramite una patch.   Mi misi in caccia  di un software che  mi
     permettesse  di creare e distribuire patch dei  miei programmi  per Dos  e
     OS/2:  per Dos ne ho trovati alcuni (ma non mi hanno soddisfatto per  vari
     motivi),   per  OS/2  neanche  uno!  Ho  quindi  deciso  di  farmene   uno
     e....eccolo qui ! 8-)

     5.A COSA SERVE
     MDIFF  crea un file binario  di differenza tra due  file. Con MPATCH e  il
     vecchio  file  si  pu ricreare  il  nuovo  file   partendo  dal  file  di
     differenza.  Cosa c' di buono in tutto  ci? Semplice: supponendo che  il
     file  di differenza  sia   pi breve  del nuovo  file,   pi  conveniente
     distribuire  solo  quello invece  di  tutto  il file,  soprattutto  se  la
     distribuzione avviene via modem.


                                                                              3





     6.ESEMPIO
     A  titolo  di  esempio ho  messo  in  due directory  chiamate  OLD  e  NEW
     rispettivamente  MDIFF.EXE  release 1.45a  (una release  intermedia  sulla
     quale stavo lavorando) e MDIFF.EXE release 1.45 definitiva:

     Directory of  OLD\*.EXE
     MDIFF.EXE       46602  16/08/95   21.01

     Directory of  NEW\*.EXE
     MDIFF.EXE       46602   21/08/95  00.45

     C:\>mdiff OLD\MDIFF.EXE NEW\MDIFF.EXE
     MDIFF  V1.50 - MDF file generator (Dos)
     (C) Copyright 1995/96 Maurizio Giunti

     Registered to: MAURIZIO GIUNTI

     OLD\MDIFF.EXE,NEW\MDIFF.EXE => MDIFF.MDF
     Working...(100%)   MDF size: 1215 bytes   Rate: 2%
     <Done!>

     Directory of  *.MDF
     MDIFF.MDF        1215   7/10/95  13.43

     Adesso  possiamo applicare la  patch MDIFF.MDF al  vecchio eseguibile  per
     ricostruire quello nuovo:

     C:\>mpatch MDIFF.MDF old\MDIFF.EXE
     MPATCH  V1.50 - MDF file applier (Dos)
     (C) Copyright 1995/96 Maurizio Giunti

     MDF file produced by: MAURIZIO GIUNTI

     Working: 0% |###########| 100%
     <Done!>

     Ottenendo il seguente file:

     Directory of  *.EXE
     MDIFF.EXE       46602  21/08/95   0.41

     che  identico al file MDIFF.EXE che della directory NEW.

     7.DOS, OS/2, WINDOWS 95 E WINDOWS NT
     MDIFF  e  MPATCH  per  Dos,  OS/2  e  Windows  sono  ottenuti  tramite  la
     compilazione  dei  medesimi sorgenti,  quindi  non c'  alcuna  differenza
     nella  funzione e nell'uso di tali  programmi sui vari sistemi  operativi.
     Inoltre  i  files  *.MDF  prodotti  con MDIFF  per    Dos  possono  essere
     utilizzati con MPATCH per OS/2 o Windows32 e viceversa.

     8.LIMITI E BUG NOTI
     MDIFF  non pu trattare files pi ampi di 16 Megabyte o pi piccoli  di 20
     volte la lunghezza del chunk settata.


                                                                              4





     Dato  che MDIFF per OS/2,  ottenuto tramite una compilazione diretta  dei
     sorgenti  di MDIFF  per Dos,  non   in grado  di trattare  gli  attributi
     estesi, quindi si limiter ad ignorarli.
     Inoltre  se si costruisce un file di patch con  MDIFF per Dos o OS/2 e  si
     applica  con MPATCH per  Windows32 (o  viceversa) il file  che si  otterr
     avr  la data  errata; ci  dipende da una  diversa implementazione  della
     funzione utime() nei compilatori Borland e Microsoft.

     9.MDIFF - MDIFF2 - MDIFFW
     Il programma MDIFF si occupa di comparare due files e di  immagazzinare le
     differenze  tra di essi in un terzo  file  che, generalmente,  molto  pi
     compatto. Vediamo come si usa:

        MDIFF [-C<c>] [-R<r>] [-F<f>] [-S] [-Z] [-P<pwd>] <OldFile> <NewFile>
                                     [<MDFfile>]

     <OldFile>  ovviamente   il nome  della versione  precedente del  file  da
     comparare,  mentre  <NewFile>    il nome  della    versione  attuale.  Se
     necessario  si pu specificare il  nome del file  di differenza da  creare
     <MDFfile>,  altrimenti   MDIFF  crea un  file  che ha  lo stesso  nome  di
     <NewFile>  ma estensione ".MDF".  Per cercare le  parti simili nei  files,
     MDIFF  si serve di una stringa base di lunghezza predefinita detta  chunk.
     La  lunghezza del chunk  per default viene  scelta automaticamente ma  pu
     essere  impostata (in  un range  4-1024) con  lo switch  -C seguito  dalla
     lunghezza  voluta. Quando  MDIFF perde il sincronismo tra i due files  che
     sta  confrontando,  cerca di  ritrovarlo scandendo  il vecchio  file  alla
     ricerca  del chunk che sta elaborando.  Tale ricerca viene effettuata,  in
     un intorno dell'ultimo chunk trovato, nel range definito dallo  switch -R.
     Per default tale range  di 8 blocchi di 512 byte, ma pu variare tra  1 e
     16.  Se tale    ricerca fallisce  MDIFF cerca  di forzare  il  sincronismo
     cercando in un raggio pi ampio di quello definito solitamente  ampio 1/16
     della  lunghezza del file. Questa seconda ricerca pu essere  disabilitata
     o  il suo range pu essere cambiato tramite lo switch -F. Specificando  lo
     switch   -S, alla fine dell'operazione, MDIFF   fornir alcuni dati  sulla
     composizione del file di patch.
     E'  inoltre  possibile,  tramite  lo  switch  -Z,  inserire  nel  file  di
     differenza  un breve commento (al massimo 2 Kbyte), che sar  visualizzato
     durante  l'applicazione della patch da parte di MPATCH. Il commento  viene
     prelevato  direttamente  dallo  standard  input  e  quindi  pu  essere  o
     digitato o prelevato da un file tramite l'apposito comando  di redirezione
     "<".
     Tramite lo switch -P si pu proteggere la patch con una  password (<pwd>):
     chi non conosce tale password non potr applicare la patch.

     10.MPATCH - MPATCH2 - MPATCHW
     MDIFF  sarebbe  un programma  inutile  se non  esistesse  MPATCH.  Infatti
     MPATCH  si occupa,  dati <OldFile>  e  <MDFfile>,  di ricreare  <NewFile>.
     Vediamo come si usa:

                 MPATCH [-P<pwd>] <MDFfile> [<OldFile> [<NewFile>]]

     L'unico  parametro necessario  il nome  del file di differenza  <MDFfile>
     perch  esso  contiene i  nomi  degli altri  due   file,  ma    possibile
     modificare  tale impostazione   semplicemente specificando  i nomi  voluti

                                                                              5





     nell'esatto  ordine.  MPATCH  ha  il  solo  switch  -P  che   permette  di
     specificare una eventuale password necessaria per applicare la patch.
     In   caso  di  errore  MPATCH  ritorna  un  errorlevel  che  deve   essere
     interpretato secondo la seguente tabella:
     Codice      Descrizione
     0           "OK!"
     1           "Out of memory !"
     2           "Can't open MDF file !"
     3           "Invalid MDF file !"
     4           "MDF file version mismatch !"
     5           "UNREGISTERED !"
     6           "Bad or incorrect OLD file !"
     7           "Can't open OLD file !"
     8           "Can't create NEW file !"
     9           "General failure: NEW file corrupted !"
     10          "OLD and NEW can't be the same file !"
     11          "NEW file was already patched ! "
     12          "Wrong password !"

     11.MDF2EXE - MDF2EXE2 - MDF2EXEW
     MDF2EXE  si occupa di trasformare un file di patch *.MDF creato con  MDIFF
     in  un file ESEGUIBILE autoinstallante per Dos (MDF2EXE), OS/2  (MDF2EXE2)
     o Windows95/WindowsNT (MDF2EXEW).
     Il file cos creato conterr al suo interno il programma  di installazione
     e un certo numero di file di patch (al massimo 127).
     La sintassi per creare una patch autoinstallante :

           MDF2EXE <mdf_file 1> [<mdf_file 2>....<mdf_file n>] <exe_file>

     I  vari <mdf_file  x> possono  contenere anche  wildcard, in  questo  caso
     MDF2EXE crchera' automaticamente i files da inserire.
     Il  file eseguibile creato (che DEVE  avere estensione .EXE) potr  essere
     avviato   senza  alcun  parametro  sulla  linea  di  comando  e   cercher
     automaticamente i file da aggiornare. Opzionalmente pu  essere utilizzato
     lo  switch -P per specificare una password  oppure gli switch -V o -L  per
     visualizzare la lista delle patch contenute nel file.
     Un'unica  nota: non comprimete le patch autoinstallanti con PKLite,  LZExe
     o altri software simili, altrimenti esse cesseranno di funzionare.

     12.ALCUNI CONSIGLI
     Il  metodo ottimale per costruire un file di differenza sarebbe quello  di
     ricercare  per tutto il  vecchio file i  chunks  che  compongono il  nuovo
     file;  ovviamente  tale  metodo  sarebbe  di  una   lentezza  esasperante.
     L'algoritmo  su  cui    basato  MDIFF  rappresenta  un   compromesso  tra
     risultato  e  velocit di  esecuzione,  per questo    talvolta  opportuno
     regolare  i  parametri di  funzionamento  di MDIFF  tramite  gli  appositi
     switch. Vediamo come comportarsi in  alcune situazioni tipiche:
     1. 
       File  con pochissime modifiche:   opportuno utilizzare  un chunk  molto
       ampio (32, 64 o pi) in modo da  ridurre il pi possibile  le dimensioni
       del  file di differenza, soprattutto  se si sta  lavorando con files  di
       testo o con archivi.
     2. 
       File di testo: di solito un chunk di dimensione 32  il pi  indicato, 
       opportuno  provare  a  diminuire o  togliere  il    sincronismo  forzato
       tramite lo switch -F.

                                                                              6





     3. 
       File  eseguibili molto  ampi: spesso   si  ottengono risultati  migliori
       allargando il range di ricerca del  sincronismo  tramite lo switch -R.
     Un  ultimo consiglio: non  attendetevi miracoli  da MDIFF. Se  i due  file
     confrontati  sono molto dissimili il file di patch risulter molto  ampio.
     In questi casi c' ben poco da fare, bisogna rassegnarsi a  distribuire il
     nuovo  file interamente. MDIFF  realmente utile  solo se il numero  delle
     modifiche apportate ai file non  troppo grande.

     13.LIBRERIE PER APPLICARE PATCH
     Fino  alla release  1.50 nel  pacchetto di  distribuzione di  MDIFF  erano
     incluse  alcune librerie  per realizzare  programmi per  applicare  patch.
     Tali  librerie non sono pi distribuite. Al loro posto  invece  possibile
     ordinare  (vedi cap. 14)  i sorgenti in  linguaggio C di  un programma  di
     esempio per applicare patch prodotte da una copia registrata di MDIFF.

     14.COME REGISTRARSI
     Registrando  MDIFF otterrete un "codice di registrazione" che contiene  il
     vostro  nome (o il  nome della vostra  impresa in caso  di site  license).
     Producendo  una patch con  una copia  registrata di MDIFF  nel file  *.MDF
     risultante  verr incluso tale nome, in questo  modo al momento in cui  la
     patch  verr applicata MPATCH potr mostrare il nome di chi ha  realizzato
     la patch stessa.
     Inoltre  gli utenti registrati sono autorizzati a distribuire  liberamente
     MPATCH.EXE,  MPATCH2.EXE e MPATCHW.EXE  insieme alle patch  *.MDF da  essi
     prodotte,  e a distribuire ogni patch  auto installante che contenga  solo
     file *.MDF prodotti con la loro copia registrata di MDIFF.
     Per  registrare MDIFF  dovrete utilizzare  il programma  REGISTER.EXE  che
     troverete nel pacchetto di distribuzione. REGISTER.EXE   una applicazione
     per  Windows  scritta  da  Grzegorz (Greg)  Kochaniak  che  si  occupa  di
     raccogliere   interattivamente  tutte  le   informazioni  necessarie   per
     richiedere  la registrazione  di MDIFF,  e a prepararle  per spedirle  via
     Posta,  TeleFAX o e-mail alla Kagi Shareware. Se non siete utenti  Windows
     contattatemi.
     Per  qualunque informazioni  sui servizi  di Kagi  Shareware vi  invito  a
     leggere il file KAGI.TXT o a esplorare il seguente URL:
                                http://www.kagi.com/

     15.COME CONTATTARE L'AUTORE
     Se avete qualche domanda potete contattarmi ai seguenti indirizzi:

     Posta:
                     Maurizio Giunti
                     Via G.B. Foggini, 24
                     50142 Firenze (FI)
                     ITALY

     e-mail:
                     Fidonet:      2:332/102.3
                     Internet:     giunti@kagi.com
                     URL:          http://www.kagi.com/authors/giunti/





                                                                              7





     16.RINGRAZIAMENTI
     Vorrei  brevemente  ringraziare  gli amici  che  mi  hanno  aiutato  nello
     sviluppo  di questo software e  della  documentazione  allegata, o che  si
     sono coraggiosamente offerti come beta-testers. In ordine alfabetico:

                             Mauricio Mello de Andreade

                                   Andrea Baitelli

                                    Silvia Borri

                                 Juan Jose Comellas

                                    Filippo Dini

                                 Fabrizio Fioravanti

                                 Cristiano Guidoccio

                                Giovanni Lopes Pegna

                                  Marco Maccaferri

                                  Marco Menichelli

                                   Giuseppe Scarpi

                                   Toni Tatafiore

                                    Duncan Wilcox

























                                                                              8
