home *** CD-ROM | disk | FTP | other *** search
- VIF.
-
- _V_ery _I_ntelligent _F_ilter
-
- (Filtro molto intelligente)
-
- C1990 Pagani Massimiliano
-
-
-
- 0 CONDIZIONI DI DISTRIBUZIONE
- E' possibile copiare liberamente questo programma e darne una copia a
- chiunque, basta che la transazione avvenga GRATUITAMENTE e con tutti i
- files relativi. E' possibile mettere a disposizione questi files su banca
- dati od in raccolte di programmi share-ware e pubblico dominio purchè non
- siano a fini di lucro.
- E' VIETATO modificare i files vif.doc e vif.c senza il consenso del
- sottoscritto.
- Ribadendo quanto detto sopra, l'unico mezzo di diffusione di questo
- programma deve essere la donazione gratuita.
- L'autore non può essere ritenuto responsabile di perdite o danneggiamento
- di dati derivati dall'uso diretto o indiretto, corretto o meno, di VIF.
-
- OK. Basta con le scartoffie legali e veniamo al sodo.
-
-
- 0.1 Files
- VIF deve essere distribuito con i seguenti files:
-
- VIF - l'eseguibile (13364 bytes)
- VIF.c - il sorgente (10797 bytes)
- VIF.doc - questo documento (9801 bytes)
- VIF.e.doc - la versione inglese di questo documento (7794 bytes)
-
- Se non trovate tutti questi files, potete contattarmi per avere la
- versione aggiornata e completa (il mio indirizzo è alla fine di questo
- file).
-
-
-
- 1 COSA FA VIF?
- VIF è un filtro. Un programma che prende un file di testo e lo trasforma
- in un altro.
- In questa operazione VIF toglie tutti quei caratteri che non servono
- (vedremo un po' più sotto esattamente quali) e li elimina mantenendo, sia
- l'intero testo significativo, sia le corrette spaziature.
- Questo programma è nato dall'esigenza di sistemare numerosi file di
- documenti in maniera organica. Prima di scrivere VIF utilizzavo un editor
- per rimuovere gli spazi a fine linea (mediante ricerca e sostituzione) e
- per far sostituire a spazi consecutivi tabulazioni.
- VIF è stato pensato per essere utilizzato esclusivamente da CLI, quindi è
- rivolto agli utenti del Computer con almeno una minima esperienza di
- AmigaDOS.
-
-
-
- 2 QUALI SONO I CARATTERI ELIMINATI
-
- 2.1 spazi -> tab
- Una tabulazione consente di risparmiare da 1 a 7 caratteri. Esempio:
-
- T-------T-------T-------T-------T-------T-------T-------T-------T
- __qualche_carattere________________altri_caratteri.
-
- Nella prima linea ho segnato le tabulazioni (una ogni 8 caratteri), mentre
- nella seconda un esempio di testo possibile. Con il simbolo '_' ho
- rappresentato lo spazio. VIF sostituisce la linea con la seguente linea:
-
- T-------T-------T-------T-------T-------T-------T-------T-------T
- __qualche_carattere<T> <T> ___altri_caratteri.
-
- Dove con <T> ho indicato il carattere di tabulazione. In questo modo la
- linea ha conservato sia i caratteri significativi che la posizione di
- questi, ma è passata da 51 a 39 caratteri.
-
-
- 2.2 Spazi e tabulazione a fine linea
- Dei caratteri invisibili (spazi e tabulazioni) a fine linea non sono di
- alcuna importanza, vengono quindi eliminati senza pietà.
-
-
- 2.3 NewLines a fine file
- Discorso analogo a quello fatto per il punto 2.2. Linee vuote alla fine del
- file non sono di alcun giovamento.
- VIF si comporta in maniera abbastanza intelligente: se alla fine c'è una
- serie di linee vuote ed una di queste contiene caratteri tipo spazio tab,
- questa viene considerata vuota e rimossa. (EhEh)
-
-
- 2.4 Spazi coperti da tabulazioni.
- Nell'esempio sottoriportato:
-
- T-------T-------T-------T-------T-------T-------T-------T-------T
- __<T> qualche carattere
-
- E' immediato vedere che i primi due spazi sono inutili in quanto sono già
- "coperti" dal carattere di tabulazione successivo. Questi due spazi vengono
- quindi rimossi.
-
-
- 2.5 ^M e ^Z
- I baracchi (leggi MS-DOS) usano delle convenzioni alquanto dispendiose in
- termini di memoria per quanto riguarda il testo: per terminare ogni linea
- utilizzano due caratteri, uno per riportare il "carrello" in prima colonna
- (carriage return) e l'altro per farlo avanzare di una linea (line feed).
- Per Amiga (e per molti altri computer moderni) è sufficiente un solo
- carattere per questa operazione. Risultato di tutta la storia è che per
- Amiga i caratteri ^M all'interno dei file di testo sono inutili.
- Come sono inutili i caratteri ^Z che, sempre per i baracchi, indicano la
- fine del file.
-
-
- 2.6 opzionalmente le sequenze di escape.
- Questa è un'opzione del programma, quindi non deve essere necessariamente
- impiegata. L'ho inserita nel programma in quanto mi sembra particolarmente
- utile per avere documenti uniformi.
- Una sequenza di escape è qualcosa che inizia col carattere 0x1B (27
- decimale) seguito da '[', quindi nessuno o più numeri separati da ';' ed
- infine una lettera. Tali sequenze servono per cambiare colore, carattere
- (grassetto, italico, sottolineato) o per spostare la posizione del cursore,
- o per altre operazioni più o meno complesse.
- Se il file ascii viene stampato con un comando di tipo "type" non ci sono
- problemi: queste sequenze vengono interpretate correttamente, ma se il file
- viene letto con un editor o con alcuni programmi del tipo (more) possono
- venire interpretati erroneamente o non interpretati del tutto, con notevole
- difficoltà di interpretazione.
-
-
-
- 3. USO
- Come già detto, VIF si usa da CLI, quindi niente interfaccia utente
- dall'aspetto amichevole. Potrebbe essere un'idea per una futura
- versione...
- Esistono diversi modi per invocare VIF. In ogni caso se si desidera
- ottenere alcune indicazioni utili direttamente dal programma è sufficiente
- impartire:
-
- 1> vif ?
-
- Verranno visualizzate delle sintetiche istruzioni e generalità del
- programma.
-
-
- 3.1 Opzioni
- In qualsiasi modo di funzionamente è possibile specificare delle opzioni a
- VIF, nel seguente modo:
-
- 1> vif -<lettere>
-
- Attualmente sono supportate le seguenti opzioni:
- -e Le sequenze di escape vengono conservate.
- -q Il programma non produce alcuna scritta.
- -p Ogni 16 linee lette viene stampato il carattere '#'.
- Queste opzioni possono essere combinate semplicemente indicando più di una
- lettera dopo il carattere '-'. [Ad esempio per conservare le sequenze di
- escape ed osservare il procedere del programma bisogna indicare:
-
- 1> vif -ep
-
- E NON
-
- 1> vif -e -p
-
- Questa sintassi potrà essere supportata in una futura versione, ma
- attualmente non funziona.]
-
-
- 3.2 Da stdin a stdout.
- Il filtro viene applicato dallo standard input allo standard output,
- semplicamente senza indicare ulteriori parametri oltre ad eventuali
- opzioni.
- Questo modo di funzionamento è particolarmente utile quando si utilizzano
- redirezioni e pipe.
- Utilizzando questa modalità viene disattivata l'opzione -p ed attivata
- l'opzione -q, differenti specifiche dell'utente verranno ignorate.
- Es:
-
- 1> vif
-
-
- 3.3 Da un file ad un altro.
- La sintassi è la seguente:
-
- vif [-epq] file_sorgente file_destinazione
-
- Con significato evidente. Il file_destinazione viene creato (se c'era un
- file con questo nome viene cancellato senza indugio e senza comunicazione
- all'utente).
-
-
- 3.4 Da un file ad esso stesso
- Il filtro viene applicato sul file con il risultato in un file temporaneo,
- quindi il file originario viene cancellato ed il file temporaneo lo
- rimpiazza.
- La sintassi è:
-
- vif [-epq] file
-
- Anche qui con ovvio significato.
- Il file temporaneo è chiamato t:viftemp%d. Dove %d indica un numero.
- Ovviamente è necessario avere il device T: Questo è generalmente associato
- alla directory ram:T. VIF controlla se esiste già un file temporaneo, in
- caso affermativo cambia il numero in coda al nome fino a quando non riesce
- ad avere un file non ancora esistente.
- E' importante notare che il filtro non opera direttamente sul file
- indicato, quindi è sempre possibile, in caso di errori, recuperare il file
- originale od il file completamente filtrato.
- Inoltre questa modalità, come la precedente abbisogna di uno spazio libero
- pari allo spazio occupato dall'orginale (potrebbe non esserci alcuna
- riduzione).
-
-
- 4 PROSSIMAMENTE SU QUESTI SCHERMI
- Ho diverse idee riguardo all'evoluzione di VIF. Così com'è è comodo, forse
- non eccessivamente piccolo, ma fa molte cose utili. Sotto UNIX la cosa
- migliore sarebbe stata quella di fare molti filtri specifici che combinati
- in una pipeline avrebbero prodotto il risultato desiderato, purtroppo in
- AmigaDOS l'utilizzo delle pipe non è così immediato ed una pipeline sarebbe
- un'operazione piuttosto macchinosa.
- Possibili ampliamenti nel futuro potranno essere:
- - Riformattazione dei paragrafi con o senza riempimento.
- - Sostituzione delle vocali accentate: e' -> è.
- - Interfaccia utente per operazioni in batch.
- - rimozione dei commenti e degli spazi inutili dai sorgenti C (eheh).
- - impaginazione automatica
-
-
- 5 ALCUNE CONSIDERAZIONI FINALI
- Nel realizzare questo programma ho messo in pratica tutte le buone regole
- di programmazione apprese a scuola e sul campo, quindi non dovrebbero
- esserci problemi neanche nelle situazioni particolarmente critiche (poca
- memoria, dischi pieni, errori di lettura/scrittura). In ogni caso è sempre
- possibile recuperare completamente i dati tranne quando il filtro viene
- applicato dallo stdin allo stdout. Infatti VIF non scrive direttamente sul
- file che sta processando.
- Attualmente VIF NON è puro, quindi se viene reso residente, non può essere
- utilizzato da più processi. Se dovessero esserci abbastanza richieste in
- tal senso, andrò alla ricerca della documentazione sui programmi puri ed
- opererò su VIF alla bisogna.
- Penso che questo programma possa risultare molto utile a tutti quelli che
- abbiano a che fare con files di testo non scritti da loro.
- Se utilizzate il programma e potete permettervelo mandatemi un'offerta (a
- vostra discrezione) al seguente indirizzo:
-
- Pagani Massimiliano
- via Mazzini 40
- 21052 Busto Arsizio (VA)
- ITALIA
-
- Se invece avete trovato un sistema interessante per avere una GURU tramite
- VIF o avete consigli, questioni, suggerimenti potete anche contattarmi al
- seguente indirizzo di e-mail:
-
- ele9133@cdc835.cdc.polimi.it
-
- [L'indirizzo equivale a 131.175.6.2]
-
- Grazie e buon utilizzo
-