WordUtil Package
                                       
                     Utility per la gestione di wordlist.
                                       
                         Versione 1.11, 27 Giugno 1994





























 
 
 


                             WordUtil Package 1.11
 
 

    1 - GNU Disclaimer

        WordUtil Package 1.11 : Wordlist utilities.
        Copyright (C) 1994  Sbragion Denis
    
        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.
    
        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
    
        You should have received a copy of the GNU General Public License
        along with this program; if not, write to the Free Software
        Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

    2 - Introduzione

    Questo  pacchetto  contiene  un'  insieme  di  programmi  utili  per la
    gestione  di  wordlist.  Nella realizzazione di questo pacchetto non si
    e` cercato di ottenere prestazioni elevate o funzionalita` particolari,
    ma,  soprattutto, di assicurare la piu` ampia portabilita` del sistema,
    in  modo  da poter permettere la condivisione delle wordlist su tutti o
    quasi i sistemi operativi esistenti.  Come conseguenza, buona parte dei
    programmi  implementati risultano essere dei duplicati di funzioni gia`
    fornite come standard da molti sistemi operativi.

         Per  ottenere  la  massima  portabilita`  tutti  i  programmi sono
    rigorosamente   realizzati   in   ANSI   C,   senza   sfruttare  alcuna
    caratteristica  che  sia  dipendente  dal  sistema  operativo  o  dalla
    macchina.   L' unica assunzione non portabile riguarda il tipo char del
    C,  che  si  e` supposto coincidente con un byte fisico della macchina.
    Sebbene questo non sia assicurato dalle norme ANSI, una tale assunzione
    risulta  verificata  praticamente  su  tutte le macchine attualmente in
    circolazione e quindi non costituisce un problema.

    2.1 - Contenuto del pacchetto

    Il pacchetto completo contiene i seguenti file:

      boolean.h       Definizione tipo Boolean.
      copying         GNU General Public License.
      error.h         Definizione tipo ErrorType.
      issorted.c      Verifica dell' ordinamento.
      msort.c         Combinazione di due wordlist.
      split.c         Divisione di una wordlist.
      strcomp.c       Libreria compressione wordlist.
      strcomp.h       Header per strcomp.c
      unique.c        Eliminazione di parole duplicate.
      change.c        Sostituzione di sequenze di caratteri.
 
 
    -1-                                       2.1 - Contenuto del pacchetto


                             WordUtil Package 1.11
 
 
      wlc.c           Compressione di wordlist.
      wle.c           Espansione di wordlist.
      wordutil.txt    Breve manuale in formato ascii.

    In  particolare  e` importante leggere attentamente il file copying che
    contiene   la  GNU  General  Public  License.   Questa  licenza  spiega
    dettagliatamente  sotto  quali  condizioni  il  pacchetto  puo`  essere
    redistribuito.

    2.2 - Compilazione del pacchetto

    Il   pacchetto  non  contiene  file  che  effettuino  una  compilazione
    automatica  dei  vari  programmi.  Questo perche' una tale possibilita`
    risulta  troppo  legata  al  sistema  operativo  in  cui ci si trova ad
    operare.   La  compilazione  deve  quindi essere effettuata a mano.  L'
    operazione  e`  comunque molto semplice.  E sufficiente tenere presente
    che  tutti  i  programmi  forniti  si  appoggiano  sul  piccolo file di
    libreria strcomp.c, che deve quindi essere incluso nella compilazione.

         Supponiamo quindi di avere posto tutti i file del pacchetto in una
    directory  e  di  trovarci all' interno di tale directory.  I programmi
    forniti  possono  essere  compilati  con  una linea di comando del tipo
    seguente:

      cc -ansi filename.c strcomp.c

    In  questa linea cc dovra` essere sostituito dal nome del compilatore C
    disponibile  sulla macchina.  L' opzione -ansi dovra` essere sostituita
    con  l'  opportuna  opzione  del  compilatore  per  l'  utilizzo  della
    modalita`  ANSI.   Il  nome  di  questa  opzione varia da compilatore a
    compilatore.   Filename.c  indica  il nome del programma che si intende
    compilare  e  potra`  essere  di  volta  in volta: issorted.c, msort.c,
    split.c, unique.c, change.c, wlc.c o wle.c.

         Su  alcuni sistemi il compilatore funziona di default in modalita`
    ANSI  e  quindi  l'  opzione  -ansi  puo` essere omessa.  Su altri puo`
    essere  necessario  aggiungere  un  opzione  del  tipo  -ofilename  per
    indicare  il  nome da dare all' eseguibile generato.  In alcuni casi la
    presenza  di caratteri di fine linea non corretti, dovuta ad un' errata
    conversione  dei  file  da  un  sistema  all'  altro, puo` provocare un
    arresto  della compilazione.  In questo caso e` necessario convertire i
    sorgenti  nel formato corretto.  In ogni caso e` opportuno consultare i
    manuali del compilatore utilizzato.

    3 - Funzionamento dei programmi

    Tutti  i  programmi  forniti, se vengono eseguiti senza alcun parametro
    sulla  linea  di  comando,  forniscono  una  breve spiegazione sul loro
    utilizzo.   Questa, data la semplicita` delle funzioni, e` generalmente
    piu`  che sufficiente per il corretto utilizzo dei programmi.  Si tenga
    comunque   presente  che  non  viene  effettuato  alcun  controllo  per
    prevenire  eventuali  sovrascritture di file gia` esistenti.  E` quindi
    necessaria una certa prudenza.

 
 
    -2-                                     3 - Funzionamento dei programmi


                             WordUtil Package 1.11
 
 
    3.1 - IsSorted

    IsSorted  controlla se una wordlist e` ordinata.  L' unico parametro da
    fornire  sulla linea di comando e` il nome del file da controllare.  Se
    la  wordlist  risulta  ordinata  viene  scritto su console un messaggio
    indicante  il  successo e il numero delle linee verificate.  Altrimenti
    il  programma  si ferma riportando un messaggio di errore unitamente al
    numero di linea che ha provocato il fallimento.

      Esempio :
        issorted lista.txt

    3.2 - MSort

    MSort  combina  insieme  due  liste  ordinate  generandone  una terza e
    mantenendo  l' ordinamento.  Gli unici parametri da fornire sulla linea
    di comando sono i nomi dei due file contenenti le wordlist originarie e
    il nome del file destinazione in cui riporre la lista combinata.  MSort
    non  controlla  se le due wordlist in ingresso sono ordinate.  Nel caso
    non lo siano il file risultante risulta non ordinato.

      Esempio :
        msort lista1.txt lista2.txt lista.txt

    3.3 - Split

    Split  permette  di  spezzare  una  wordlist  in  piu`  file contenenti
    ciascuno  un  numero  selezionabile  di  linee.  I parametri da fornire
    sulla linea di comando sono il numero di linee dei file che si vogliono
    generare  e  il  nome  del  file  contenente  la  wordlist da spezzare.
    Vengono generati una serie di file nella forma split.XXX dove XXX e` un
    numero  decimale  progressivo  generato automaticamente.  Opzionalmente
    puo`  essere  fornito  un  terzo  parametro  che  indichi  il  nome  da
    utilizzare  per  la  generazione  dei  file  di  suddivisione.  Al nome
    fornito sulla linea di comando viene aggiunto un numero progressivo per
    distinguere  le varie parti della wordlist, analogamente a quanto viene
    fatto con il nome "split.".

      Esempio :
        split 5000 lista.txt
        split 5000 lista.txt parti.

    3.4 - Unique

    Unique elimina le parole doppie da una wordlist.  Affinche' il processo
    abbia   successo  e`  assolutamente  necessario  che  la  wordlist  sia
    ordinata.   Gli  unici  parametri  da  fornire sono il nome del file in
    ingresso  e  il  nome  del file in cui riporre la wordlist senza parole
    doppie.   Il  numero  di  parole  doppie eliminate viene indicato sulla
    console.

      Esempio :
        unique lista.txt singole.txt

 
 
    -3-                                                        3.4 - Unique


                             WordUtil Package 1.11
 
 
    3.5 - Change

    Change permette di sostituire sequenze di caratteri all' interno di una
    wordlist.   Lo  scopo  principale  di  questo  programma  e  quello  di
    permettere   la   sostituzione   di  opportune  sequenze  ascii  con  i
    corrispondenti  caratteri  accentati,  in  modo  da  poter  adattare la
    wordlist alle proprie esigenze.  Sulla linea di comando occorre fornire
    file  di  ingresso,  file  di  uscita  e sostituzioni, rappresentate da
    coppie  di  stringhe  separate  da uno spazio.  Le sostituzioni vengono
    effettuate  nell'  ordine  in cui sono inserite nella linea di comando.
    Quindi la linea:

      change lista.txt lista.sub \`a a` a` a

    e` equivalente alla linea:

      change lista.txt lista.sub \`a a a` a

    in  quanto  la  prima sostituzione viene poi trasformata dalla seconda.
    Si  possono  fornire al massimo 20 sostituzioni ed ognuna di queste non
    deve  contenere piu` di 16 caratteri per stringa.  Si ricordi che i due
    apici  `'  sono  interpretati  in  maniera particolare da molti sistemi
    operativi  per  cui  e`  necessario rappresentarli con qualche sequenza
    particolare,  ovviamente  dipendente dal sistema.  Consultare i manuali
    del sistema per avere maggiori informazioni in proposito.

      Esempio :
        subst lista.txt noacc.txt a` a e' e
        subst lista.txt lista.asc \`a a` \`e e` \`i i` \`o o` \`u u` \e' e'

    3.6 - Wlc (Word List Compressor)

    Wlc comprime una wordlist utilizzando una tecnica specifica.  Affinche'
    il  processo funzioni la wordlist deve essere ordinata.  Le prestazioni
    fornite  da  wlc,  in  termini  di compressione, non sono molto elevate
    (mediamente  circa  3  a  1),  ma  diventano  molto  interessanti se si
    comprime  ulteriormente  il  file  risultante  con  uno  qualunque  dei
    compattatori  piu`  diffusi.   In questo caso si raggiungono fattori di
    compressione  dell'  ordine di 10 a 1, fattori comunque piu` elevati di
    quelli che si possono ottenere utilizzando i soli compattatori.

         Inoltre,  i  file  generati  da wlc sono in formato binario, senza
    quindi  problemi  di  conversione  dei  caratteri  di  fine linea da un
    sistema   operativo   all'   altro.    Questi  vengono  automaticamente
    ripristinati  nel  formato  corretto  al momento dell' espansione.  Gli
    unici parametri da fornire sulla linea di comando sono il nome del file
    contenente  la  wordlist  e il nome del file in cui riporre la wordlist
    compressa.

      Esempio :
        wlc lista.txt lista.wlc



 
 
    -4-                                    3.6 - Wlc (Word List Compressor)


                             WordUtil Package 1.11
 
 
    3.7 - Wle (Word List Expander)

    Wle  espande  una wordlist compressa con wlc.  Anche in questo caso gli
    unici parametri da fornire sulla linea di comando sono il nome del file
    con la wordlist compressa e il nome del file in cui riporre la wordlist
    espansa.    I   caratteri   di   fine   linea  vengono  automaticamente
    ripristinati  nel  formato corretto.  Wle non effettua nessuna verifica
    per accertare il formato del file fornito in ingresso.

      Esempio :
        wle lista.wlc lista.txt

    4 - Tecnica di compressione

    La  tecnica  di  compressione usata e` molto semplice.  Sostanzialmente
    per  ogni parola della wordlist vengono conteggiate le lettere iniziali
    che  sono  in  comune  con  la parola precedente.  Dopodiche' la parola
    viene  codificata  scrivendo  nel  file  compresso  il  conteggio delle
    lettere  in  comune e, di seguito inalterate, le lettere rimanenti.  Se
    la  wordlist  e`  ordinata  questo  comporta  un  notevole risparmio di
    spazio.  Questa tecnica non e` ne nuova ne originale, ma permette buone
    prestazioni  e semplicita` di implementazione.  Chi fosse interessato e
    non  riesca  a decifrare i particolari dal semplicissimo codice fornito
    nel  file  strcomp.c  si  metta  pure in contatto tramite gli indirizzi
    indicati nel seguito.

    5 - Errori e suggerimenti

    Ogni  errore  o  suggerimento puo` essere riportato via Internet ad uno
    dei seguenti indirizzi:

      sbragion@ghost.sm.dsi.unimi.it (preferito)
      denissbr@ipo.sm.dsi.unimi.it

    Questi  indirizzi  dovrebbero rimanere stabili fino a circa meta` dell'
    anno  1995.   Tramite  posta  ordinaria  mi  si  puo` rintracciare all'
    indirizzo:

      Sbragion Denis
      Via E. Fermi 18
      20046 Biassono (MI)
        ITALY

    La posta elettronica e` ovviamente preferita.

         Nel  riportare  gli  errori  si  prega  di  essere il piu` precisi
    possibile, riportando macchina e sistema operativo usati, condizione in
    cui   si  verifica  l'  errore,  tecnica  usata  per  la  compilazione,
    descrizione  dettagliata dell' errore e quant' altro possa essere utile
    all'  individuazione delle cause.  Ogni suggerimento e` benvenuto.  Nel
    caso  si  effettuino  delle  modifiche o dei miglioramenti ai sorgenti,
    oppure  nel  caso  in  cui  si includa parte dei miei sorgenti in altri
    programmi   (mi   riferisco  qui  in  particolar  modo  alla  parte  di
    compressione) sarei felice se me ne venisse data comunicazione.
 
 
    -5-                                           5 - Errori e suggerimenti


                             WordUtil Package 1.11
 
 
         I  programmi  sono  stati testati, per ora, solo su alcuni sistemi
    unix   e   dos.    Sono  particolarmente  interessato  ai  problemi  di
    portabilita`  e quindi, se il pacchetto venisse testato con successo su
    altri sistemi, pregherei di darmene comunicazione.

















                             Indice Dei Contenuti


       1 - GNU Disclaimer ............................................... 1
       2 - Introduzione ................................................. 1
          2.1 - Contenuto del pacchetto ................................. 1
          2.2 - Compilazione del pacchetto  ............................. 2
       3 - Funzionamento dei programmi  ................................. 2
          3.1 - IsSorted  ............................................... 3
          3.2 - MSort ................................................... 3
          3.3 - Split ................................................... 3
          3.4 - Unique  ................................................. 3
          3.5 - Change  ................................................. 4
          3.6 - Wlc (Word List Compressor)  ............................. 4
          3.7 - Wle (Word List Expander)  ............................... 5
       4 - Tecnica di compressione  ..................................... 5
       5 - Errori e suggerimenti  ....................................... 5
















 
 
    -6-