Successivo: Esempio di estensione Fork, Precedente: Esempio di estensione funzioni file, Su: Esempi di estensione [Contenuti][Indice]
fnmatch()Quest’estensione fornisce un’interfaccia per utilizzare la funzione di
libreria C fnmatch(). Si usa così:
@load "fnmatch"È questo il modo per caricare l’estensione.
risultato = fnmatch(pattern, stringa, flags)Il valore restituito è zero se tutto va bene, oppure FNM_NOMATCH
se la funzione non ha trovato alcuna corrispondenza, o
un valore differente, diverso da zero, se si è verificato un errore.
Oltre a rendere disponibile la funzione fnmatch(), l’estensione
di fnmatch definisce una costante (FNM_NOMATCH), e un vettore
con dei valori di flag, di nome FNM.
Gli argomenti per fnmatch() sono:
patternL’espressione regolare con cui confrontare nome-file
stringaLa stringa nome-file
flagsPuò valere zero o essere l’OR bit a bit di uno o più flag
nel vettore FNM
I flag sono i seguenti:
| Elemento del vettore | Flag corrispondente definito da fnmatch() |
|---|---|
FNM["CASEFOLD"] | FNM_CASEFOLD |
FNM["FILE_NAME"] | FNM_FILE_NAME |
FNM["LEADING_DIR"] | FNM_LEADING_DIR |
FNM["NOESCAPE"] | FNM_NOESCAPE |
FNM["PATHNAME"] | FNM_PATHNAME |
FNM["PERIOD"] | FNM_PERIOD |
Ecco un esempio:
@load "fnmatch"
…
flags = or(FNM["PERIOD"], FNM["NOESCAPE"])
if (fnmatch("*.a", "pippo.c", flags) == FNM_NOMATCH)
print "nessuna corrispondenza"