Successivo: Esempio di estensione Revout, Precedente: Esempio di estensione Ord, Su: Esempi di estensione [Contenuti][Indice]
L’estensione readdir
aggiunge un analizzatore di input
per esaminare directory.
L’uso è il seguente:
@load "readdir"
Quando quest’estensione è in uso, invece che saltare le
directory presenti sulla riga di comando, (o accedute tramite getline
),
queste sono lette, e ogni elemento della directory è restituito come
un record.
Il record consiste di tre campi. I primi due sono il numero di inode e il nome-file, separati fra loro da una barra. Nei sistemi in cui l’elemento di directory contiene il tipo del file, il record ha un terzo campo (pure separato da una barra), composto da una sola lettera, che indica il tipo del file. Le lettere e i tipi di file a cui corrispondono sono mostrate in Tabella 17.4.
Lettera | Tipo di file |
---|---|
b | Dispositivo a blocchi |
c | Dispositivo a caratteri |
d | Directory |
f | File normale |
l | Collegamento simbolico |
p | pipe con nome (FIFO) |
s | socket |
u | Tutto il resto (sconosciuto) |
Nei sistemi che non contengono l’informazione sul tipo del file, il terzo campo è sempre ‘u’.
NOTA: Nei sistemi GNU/Linux, ci sono fileystem che non supportano il campo
d_type
(si veda la pagina di manuale readdir(3)), e in questo caso il tipo di file è sempre ‘u’. Si può usare l’estensionefilefuncs
per chiamarestat()
e ottenere l’informazione corretta sul tipo di file.
Per default, se non è possibile aprire una directory (p.es. per problemi
di autorizzazione), gawk
termina l’esecuzione.
Come per i file normali, questa situazione può
essere gestita usando una regola BEGINFILE
che controlli il
contenuto della variabile ERRNO
e stampi un messaggio di
errore oppure gestisca il problema in qualche altro modo.
Ecco un esempio:
@load "readdir" … BEGIN { FS = "/" } { print "nome-file è", $2 }
Successivo: Esempio di estensione Revout, Precedente: Esempio di estensione Ord, Su: Esempi di estensione [Contenuti][Indice]