/************************************************************************/
/**     Informazioni su                                                **/
/**                          GCd V2.3                                  **/
/**                                                                    **/
/**     un programma Shareware              scritto da Giulio Ceriola  **/
/**                                                                    **/
/**                                 ( Versione ultimata il 15-Dic-94 ) **/
/************************************************************************/

Tale programma e' stato scritto da Giulio Ceriola ed e' liberamente
distribuibile senza alcuna modifica e solo insieme alla relativa
documentazione; consistente in:

                GCd                File eseguibile del programma compatibile
                                   con S.O. 2.x e superiori. Supporta due
                                   lingue: italiano ed inglese.
                GCD_1.3            File eseguibile del programma compatibile
                                   con i S.O. 1.2 e 1.3
                GCd.doc            Documentazione relativa al programma
                                   valida per tutte e due le versioni
                                   (questo file)
                GCd.doc.eng        Breve ma completa documentazione in
                                   inglese.
                GCd_1.3.leggimi    Piccolo addendum per chi utilizza la
                                   versione per i S.O. 1.2 e 1.3 !
                GCd_1.3.readme     Il precedente ... in inglese !
          libs20/reqtools.library  La reqtools.library necessaria per il
                                   funzionamento del programma (versione
                                   S.O. 2.x). Da copiare nella directory
                                   libs: se assente.
          libs20/reqtools.library  Come sopra, ma per i S.O. 1.x.
             libs13/arp.library    La arp.library necessaria per la versione
                                   per S.O. 1.x


Dato il tempo e lo sforzo per scrivere e testare il programma ho deciso che
GCd e' un programma Shareware. Questo significa che se si utilizza regolarmente
il programma, l'utente ha l'obbligo morale di mandare un contributo.
Per questo vedere la sezione Shareware del presente manuale.

L'idea di creare il programma GCd e' partita dall'esigenza di gestire,
tramite shell, l'elevato numero di directory del mio sistema, dopo
l'aggiunta di un HD. C'era bisogno di un comando del genere cd che
fosse capace di entrare in una directory semplicemente ricordando una
perte di essa !
Lo spunto vero e proprio me lo ha dato un altro programma che ha
cercato di porre rimedio allo stesso problema ed e' DC di Peter Struijk.


*****************
CARATTERISTICHE *
*****************

Il programma GCd e' capace di entrare in una directory in quattro modi.
Il primo e' quello UGUALE al comando cd con la stessa sintassi e
simbologia.
Il secondo e' quello di entrare in una directory presente in quella
attuale dello shell, mediante nome parziale, anche a partire da un'altra.
Ad esempio, se la corrente directory e' Ram: ed in essa vi sono le
directory T,ENV,TOOL; si puo' entrare in una di esse specificando solo
un nome parziale (es. t,to ecc..)
Il terzo e' quello di entrare in una QUALUNQUE directory presente in
TUTTE le memorie di massa del sistema mediante nome parziale.
Quest'ultimo uso e' possibile grazie alla presenza di un file, nella
directory s: (o in quella Gcd: precedentemente assegnata dall'utente),
chiamato Lista.gcd, che contiene le directory presenti nelle memorie di
massa che devono essere "ricordate" dal comando Gcd.
Questo file, od archivio, e' completamente ASCII ed eventualmente
modificabile tramite comune text editor; ma il programma prevede anche
delle opzioni per la sua creazione e manipolazione.
Da ora in poi, per riferirmi a questo file usero' le dizioni LISTA o
Lista.gcd; inoltre vengono usati indifferentemente i termini directory
e path (percorso): volendo sempre indicare (un nome di) una directory con il
suo path completo.
Inoltre usero' la dicitura "directory" anziche' la traduzione italiana "cassetto".
L'ultima maniera e' tramite requester.


*********************************
SINTASSI della LINEA di COMANDO *
*********************************

Il comando GCd puo' essere utilizzato solo da CLI o Shell !
La sua sintassi e':

            Gcd [argomento] [opzioni] [numero]

  UTILIZZI

Gcd, come il comando cd, puo' essere usato per vari scopi:

- Mostrare un sommario help                                     (1)
  Sintassi: Gcd ?

- Mostrare la directory attuale                                 (2)     
  Sintassi: Gcd

- Entrare nella(e) directory precedente(i) all'attuale          (3)
  Sintassi: Gcd / (// ...)

- Entrare nella directory specificata INTERAMENTE nel comando   (4)
  Sintassi: Gcd <nome+path nuova directory>

- Cercare una directory nella LISTA conservata e fra i path     (5)
  presenti (attualmente accesibili) fornendone solo una parte
  del nome
  Sintassi: Gcd <nome parziale> [opzioni]

- Entrare in una directory e cercarne un'altra fra quelle da    (5a)
  essa accessibili, fornendo L'INTERO path della prima (1o
  livello) ed anche solo una parte del nome della seconda
  Sintassi: Gcd <path.1o livello+nome parziale> [opzioni]

- Entrare in una directory scegliendola mediante un file-       (6)
  requester.Esso permette anche la "multiselezione", ma
  verra' considerata solo la prima directory selezionata.
  Sintassi: Gcd !

- Modificare la LISTA conservata                                (7)
  Sintassi: Gcd <nome device> opzioni
  (opzioni obbligatorie !)



  OPZIONI

Tutte le opzioni devono essere raggruppate insieme e precedute dal simbolo
"-", oltre ad essere il secondo argomento della linea comando.
Esse riguardano le ultime due funzioni supportate, la ricerca e lo
aggiornamento della LISTA.


Opzioni riguardanti la funzione di ricerca  (5)

  Carattere        Funzione

      p            Esclude la ricerca fra i path della LISTA
      e            Dice di scegliere, se presente, una directory che
                   ha il nome uguale al <nome parziale> specificato
      f            Scegli sempre e comunque la prima directory trovata


Opzioni riguardanti la funzione di aggiornamento del database  (7)

  Carattere        Funzione

      s            Cancella la LISTA attuale e ne crea una contenente
                   tutti i path del device specificato dal primo argomento
      a            Come sopra, ma non cancella la LISTA, ma semplicemente
                   aggiunge i path relativi al device specificato
      u            Aggiorna nella LISTA, tutti i path del device specificato
      n            Non controlla se il primo argomento specificato e' un device
                   (nel caso si vogliano specificare device creati col comando
                   assign)
      o            Effettua tutte le precedenti operazioni cercando il file
                   Lista.gcd nel device Gcd:


NUMERO

Nel caso, specificando un nome parziale, si siano trovate molte directory,
puo' risultare fastidioso ripetere il comando piu' volte sino a trovare quella
esatta. In tal caso si puo' specificare un numero n, in maniera che, fra tutte
le directory trovate verra' direttamente scelta quella n-esima.
Si noti che non e' necessario ricordarsi il numero esatto, ma si potrebbe
scegliere un n piu' piccolo si' da far partire poi Gcd da esso ed arrivare
prima a quello gisto.
Questa opzione funziona solo nel caso di ricerca fra le directory della LISTA.

*************************************
FUNZIONAMENO DELLE VARIE OPERAZIONI *
*************************************

Per le funzioni (1) (2) (3) (4) la sintassi e l'uso sono identici al
comando Cd AmigaDOS.


Per la funzioni (5), il programma COMUNQUE cerca di eseguire l'operazione
(4), e SOLO in caso di fallimento, esegue la ricerca vera e propria.
Il programma confronta l'argomento specificato con tutti i NOMI (e non
i path) delle directory presenti nella LISTA.

Finito il confronto i casi sono tre:

-Ricerca riuscita ... solo un path trovato.
 Il programma mostra qual e'; e poi cambia directory entrando nel path
 trovato.

-Ricerca riuscita ... piu' di un path trovato.
 In questo caso il programma segna su di un file in ENV: il nome parziale
 fornito, il numero dei path trovati in tutto e ... il numero di quello
 attuale. Infatti per scorrere fra i vari path trovati e' sufficiente
 rispecificare lo stesso argomento <nome parziale> ed il programma passera'
 al successivo. In ogni caso, quando Gcd informa del path trovato specifica
 fra parentesi il numero di path in cui e' entrato e il numero totale dei
 path trovati (x/y) !
 Nel caso il device ENV: non sia assegnato o ci siano stati problemi a
 leggere il file registrato, il programma entrera' nel primo path trovato.
 Anche in questi casi, pero', l'opzione n funzionera' correttamente.

-Ricerca fallita ... nessun path trovato.
 (od anche nel caso dell'opzione p specificata)
 In questo caso il programma confronta tutti le directory direttamente
 raggiungibili dalla directory attuale. Alla fine il comportamento sara'
 simile al precedente:
    
     -Ricerca riuscita ... solo un path trovato.
      Il programma mostra qual e'; e poi cambia directory entrando nel
      path trovato.

     -Ricerca riuscita ... piu' di un path trovato.
      In questo caso il programma chiedera' di sceglierne uno, mostrandoli
      uno alla volta ... In questo caso premendo la <space bar> si passa al
      path successivo, per sceglierne uno bastera' premere qualche altro
      tasto.

     -Ricerca fallita ... nessun path trovato
      Viene visualizzato un messaggio di errore di directory non trovata
      ed il programma termina.


Per la funzione (5a) il programma separa le due parti dell'argomento
ricavando la directory del 1o livello mediante l'ultimo modificatore
(carattere ':' o '/'). Dopodiche cerca di entrare nella prima e se vi
riesce esegue la ricerca fra i percorsi "presenti" e si comporta come
specificato nella seconda parte del punto (5).
Se il programma non riesce ad entrare nella directory del 1o livello un
adeguato messaggio di errore verra' visualizzato.


Per la funzione (7)
Il programma aggiorna, in maniera diversa a seconda delle opzioni, il
piccolo database LISTA inserendovi i path del device specificato.
Bisogna precisare che questa funzione viene attivata proprio dalle
opzioni a,u,s; in mancanza di queste verranno eseguite le operazioni (2)
(3), (4) e (5) !


Per funzionare il programma si conserva nella directory s: un file di
nome gcd.cfg. Esso contiene alcuni settaggi per il programma; per adesso
non e' modificabile dall'utente ... ma le future versioni lo permetteranno.

*********************************
SITUAZIONI DI ERRORE - CONSIGLI *
*********************************

Le situazioni di errore ed il comportamento di GCd possono essere le seguenti:

- Fallimento di tutte le operazioni <-> Directory non trovata
- Fallimento o problemi nel leggere e/o scrivere l'archivio LISTA
  (irrimediabile)
- Fallimento nel leggere e/o scrivere il file Gcd.ENV nella directory
  logica ENV:
  (il prg continua, ma non e' possibile gestire piu' directory trovate)
- Fallimento di apertura delle risorse
  (irrimediabile)
- Errore nello specificare le opzioni
  (il prg non parte)

ATTENZIONE ad usare l'opzione n. Essa non e' concettualmente compatibile
con l'idea del programma, ma e' stato messa per completezza, per soddisfare
eventuali "sfizi" !

****ATTENZIONE****
Nel caso si desiderasse editare 'a mano' il file Lista.gcd invece che
manipolarlo mediante il prg stesso, ci si DEVE RICORDARE di AGGIUNGERE
IN CODA al file un LF (o altro carattere) dopo l'ultimo path ... pena
un impietoso GURU !!

****************
COMPATIBILITA' *
****************

GCd e' fornito in due versioni.

Una compatibile con sistemi 2.x e superiori, localizzata (nel senso
che mostra i messaggi in una certa lingua, non che usa un catalogo).
Se non e' supportata la locale viene scelto l'inglese.

Un'altra compatibile con i sistemi 1.2 ed 1.3. Qui, invece, il
linguaggio supportato e' solo l'inglese, ma e' possibile forzare quello
italiano tramite l'opzione -i presente solo in questa versione del programma.

GCd ha bisogno della reqtools.library (che deve essere presente nella
directory libs: di sistema) per la selezione di una directory tramite
requester (6).
Inoltre la versione per S.O. 1.x necessita della arp.library per poter
usare le wildcards.

***********
SHAREWARE *
***********

Dato il tempo e lo sforzo per scrivere e testare il programma ho deciso
che GCd e' un programma Shareware. Questo significa che se si utilizza
regolarmente il programma, l'utente ha l'obbligo morale di mandare un
contributo.

Il programma non registrato ora ha alcune limitazioni nel finzionamento, ma
non piu' limite di utilizzo come nelle precedenti versioni.
The caratteristiche disabilitate sono la scelta tramite requester e l'uso
delle wildcards.

Il contributo richiesto e' di 10000 Lit. per gli utenti che vivono in Italia,
o di 9$ (USD) per gli atri (a causa della differenza delle tariffe postali).

Per il pagamento sono consigliabili i seguenti modi:

        - vaglia postale (eventualmente internazionale)
        - contanti

o qualsiasi altra forma sia ritenuta piu' congeniale,

a:
           Giulio Ceriola
           v. C.Rosalba 38/a
           70124 BARI ITALY
(nel caso interessasse il mio numero di tel. e' 080-513311)

E' consigliabile che mi venga spedita una lettera.
Bisogna specificare il proprio indirizzo e, facoltativamente, il sistema
operativo e l'uso o meno di HD. Se si puo' essere raggiunti atraverso
qualche rete telematica, prego specificare il prprio "indirizzo".

Una volta registrati, verra' spedita l'ultim(issim)a versione del
programma piu' la una key.

*********************
VERSIONI PRECEDENTI *
*********************

1.0     Prima versione rilasciata
1.1     Modificata struttura del programma: eliminati fastidiosi piccoli
        bug nel riconoscimento della linea di comando con opzioni.
        Velocizzate operazioni di gestione della Lista.
        Ottimizzato il prg in dimensioni.  (non rilasciata)
1.6     Modificato display della scelta di piu' directory trovate fra
        quelle presenti.
        Aggiunta scelta numero di directory da assumere fra quelle trovate
        nella Lista.
        Adesso l'opzione -e funziona correttamente.
        Attivavta possibilita' di tenere il file Lista.gcd nalla directory
        s: od in Gcd:.
        Aggiunta la possibilita' di specificare un percorso da cui cominciare
        la ricerca dei path "presenti".
2.0     Inserita la possibilita' di entrare in una directory selezionandola
        mediante un requester, e con questo modificata profondamente la
        struttura del programma.
        Verione per S.O. 1.x ancora supportata.
2.2     Aggiunta, per la versione registrata, l'uso delle wildcards per la
        ricerca della directory solo per la versione per SO 2.x.
        Esteso l'uso delle wildcards anche alla versione per SO 1.x con
        l'utilizzo dell'Arp library.
2.3     Cambiata la limitazione shareware. Adesso gli unici limiti sono la
        disabilitazione dell'opzione ! e delle wildcards.

*******************************
SVILUPPI SUGGERIMENTI ESTERNI *
*******************************

Per le successive versioni penso di abbandonare la stesura anche per
S.O. 1.x; concentrandomi solo su quella 2.x e 3.0; a meno di eventuali
registrazioni per quella versione.

Questi gli sviluppi in cantiere:  &&&

- Esclusione ricerca fra path nel file LISTA
- Scelta dir anche con altri "indizi" riguardo l'intero path
- Per la scelta dei path dalla lista, possibilita' di fare come per i
  path presenti in caso di errore, o se specificato tramite opzione

Ogni suggerimento, critica, richiesta e' bene accetta.
Per contattarmi potete farlo via Fido ed Amiganet agli indirizzi:

              Fidonet   2:335/704.4@fidonet.org
              Amiganet 39:102/602.4@amiganet.ftn
              RPGNet   96:390/1.4@rpgnet.ftn
              VNet     46:1390/11.4@vnet.ftn

o collegandovi alla BBS

              Prometheus      tel. ++39-80-5515278
                              su modem USR HST 21600.

e lasciando un messaggio al Cosysop ( IO :-) ).
