fnmatch(3C) fnmatch(3C)
NAME
fnmatch - Dateinamen oder Pfadnamen vergleichen
SYNTAX
#include <fnmatch.h>
int fnmatch(const char *pattern, const char *string, int flags);
BESCHREIBUNG
Die Funktion fnmatch() vergleicht Muster. Sie prüft, ob die Zeichen-
kette im Argument string dem Muster im Argument pattern entspricht.
Das Argument flags modifiziert die Interpretation der Argumente pat-
tern und string. Es steht für die bitweise, inklusive ODER-Verknüpfung
keines oder mehrerer Flags, die in der Include-Datei fnmatch.h defi-
niert sind.
Die Funktion fnmatch() kann im wesentlichen auf zwei unterschiedliche
Arten verwendet werden. Sie kann von Anwendungen oder Dienstprogrammen
verwendet werden, die ein Dateiverzeichnis lesen müssen, um jeden Ein-
trag mit einem Muster zu vergleichen. Das Dienstprogramm find wäre ein
Beispiel hierfür.
Die Bezeichnung fnmatch() steht für "filename match", also Vergleich
von Dateinamen. Diese Funktion vergleicht standardmäßig Dateinamen,
und nicht Pfadnamen, da dem Schrägstrich keine besondere Bedeutung
beigemessen wird. Bei Verwendung des Flags FNMPATHNAME vergleicht die
Funktion fnmatch() Pfadnamen, jedoch ohne Tilden-Expansion,
Parameter-Expansion sowie ohne besondere Behandlung des Punktes am
Anfang eines Dateinamens. Wenn das Flag FNMPATHNAME in flags gesetzt
ist, wird ein Schrägstrich in string explizit mit einem Schrägstrich
in pattern verglichen, und nicht mit den Sonderzeichen Stern (Aste-
risk) bzw. Fragezeichen oder mit einem Klammerausdruck. Wenn das Flag
FNMPATHNAME nicht gesetzt ist, wird der Schrägstrich wie ein normales
Zeichen behandelt.
Wenn das Flag FNMNOESCAPE nicht in flags gesetzt ist, wird ein Gegen-
schrägstrich (\) in pattern, gefolgt von einem beliebigen anderen Zei-
chen, mit diesem zweiten Zeichen in string verglichen. "\\" steht für
einen Gegenschrägstrich in string. Wenn das Flag FNMNOESCAPE gesetzt
ist, wird ein Gegenschrägstrich als normales Zeichen behandelt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
fnmatch(3C) fnmatch(3C)
Wenn FNMPERIOD in flags gesetzt ist, entspricht ein führender Punkt
in string einem Punkt in pattern. Die Position eines führenden Punktes
wird durch den Wert von FNMPATHNAME angezeigt:
- Wenn FNMPATHNAME gesetzt ist, ist ein Punkt dann "führend, wenn er
das erste Zeichen in string ist oder direkt auf einen Schrägstrich
folgt.
- Wenn FNMPATHNAME nicht gesetzt ist, ist ein Punkt nur dann füh-
rend, wenn er das erste Zeichen in string ist.
Wenn FNMPERIOD nicht gesetzt ist, gibt es keine besonderen Einschrän-
kungen für den Vergleich von Punkten.
Mit den folgenden Flags kann die Interpretation von Bereichsangaben in
pattern beeinflußt werden:
- Wenn FNMRANGEOK gesetzt ist, wird eine Bereichsangabe der Form
[m-n-r] als [m-r] interpretiert.
- Wenn FNMRANGEERR gesetzt ist, verursacht die Bereichsangabe [m-
n-r] die Rückgabe eines Fehlerwertes.
- FNMCLRANGEERR initiiert die Rückgabe eines Fehlerwertes bei einer
Bereichsangaben der Form [[=m=]-r]. Ist FMNCLRANGEERR nicht
gesetzt, wird das Minuszeichen - als normales Zeichen behandelt.
ERGEBNIS
Wenn string dem Muster in pattern entspricht, gibt fnmatch() Null
zurück. Wenn es keine Entsprechung gibt, gibt fnmatch() FNMNOMATCH
zurück. Falls ein unbekanntes Muster oder ein unbekanntes Flag angege-
ben wurde, gibt fnmatch() FNMBADPAT zurück. Beide Fehlerwerte sind in
der Include-Datei fnmatch.h definiert. Wenn ein anderer Fehler auf-
tritt, gibt fnmatch() einen anderen Wert ungleich Null zurück.
Falls die Funktion fnmatch() nicht unterstützt ist, gibt fnmatch()
FNMNOSYS zurück und setzt errno auf ENOSYS.
SIEHE AUCH
glob(3C), wordexp(3C), fnmatch(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98