Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       glob,  globfree  -  findet  Pfadnamen,  die einem Muster genügen; gibt von glob() belegten
       Speicher frei

ÜBERSICHT

       #include <glob.h>

       int glob(const char *pattern, int flags,
                int (*errfunc) (const char *epath, int eerrno),
                glob_t *pglob);
       void globfree(glob_t *pglob);

BESCHREIBUNG

       Die Funktion glob() sucht alle Pfadnamen, die nach den von der  Shell  verwendeten  Regeln
       dem  Muster  pattern genügen und gibt sie zurück (siehe auch glob(7)). Tilde-Erweiterungen
       und Parametersubstitutionen werden nicht durchgeführt.

       Die Funktion globfree() gibt den dynamisch allozierten Speicher wieder frei, der noch  von
       einem früheren Aufruf von glob() belegt wird.

       Die Ergebnisse eines Aufrufes von glob() werden in der Struktur gespeichert, auf die pglob
       zeigt. Sie ist vom Typ glob_t (deklariert in  <glob.h>)  und  enthält  die  folgenden  von
       POSIX.2 definierten Elemente (als Erweiterung können zusätzliche Elemente vorhanden sein):

           typedef struct {
               size_t   gl_pathc;  /* Anzahl der bisher gefundenen Dateinamen */
               char   **gl_pathv;  /* Liste passender Pfadnamen */
               size_t   gl_offs;   /* in gl_pathv zu reservierendende "Slots" */
           } glob_t;

       Die Ergebnisse werden in dynamisch alloziertem Speicher abgelegt.

       Das Argument flags besteht aus einer bitweisen ODER-Verknüpfung von null oder mehreren der
       folgenden symbolischen Konstanten, die das Verhalten von glob() bestimmen:

       GLOB_ERR
              Funktion bei Lesefehler beenden (weil z. B. für ein  Verzeichnis  das  Lesen  nicht
              gestattet ist). Standardmäßig versucht glob() trotz Fehlern weiterzumachen und alle
              Verzeichnisse zu lesen, die ihr möglich sind.

       GLOB_MARK
              An jeden gefundenen  Pfad  einen  Schrägstrich  an,  wenn  dieser  einemVerzeichnis
              entspricht.

       GLOB_NOSORT
              Die  zurückgegebenen  Pfadnamen  nicht  sortieren.  Der einzige Grund dafür ist das
              Einsparen von Zeit für die Verarbeitung. Standardmäßig werden  die  zurückgegebenen
              Pfadnamen sortiert.

       GLOB_DOOFFS
              pglob->gl_offs Einträge am Anfang der String-Liste in pglob->pathv reservieren. Die
              reservierten Einträge enthalten Null-Zeiger.

       GLOB_NOCHECK
              Falls kein Muster passt, das ursprüngliche Muster zurückgeben.  Standardmäßig  gibt
              glob() GLOB_NOMATCH zurück, wenn es keine Fundstellen gibt.

       GLOB_APPEND
              Die  Ergebnisse  dieses  Aufrufs  an  den Ergebnisvektor eines früheren Aufrufs von
              glob() anhängen. Setzen Sie diesen Schalter nicht beim ersten Aufruf von glob().

       GLOB_NOESCAPE
              Den  linksseitigen  Schrägstrich   (»\«)   nicht   als   Escape-Zeichen   zulassen.
              Normalerweise  wird  dieses Zeichen verwendet um die folgenden Zeichen zu maskieren
              und  somit  einen  Mechanismus  zum  Ausschalten  der  besonderen   Bedeutung   von
              Metazeichen zu bieten.

       flags  kann auch einen der folgenden, nicht von POSIX.2 definierten Werte enthalten. Diese
       GNU-Erweiterungen sind:

       GLOB_PERIOD
              Den Abgleich eines führenden Punktes mit Metazeichen zulassen. Standardmäßig können
              Metazeichen nicht mit einem führenden Punkte abgeglichen werden.

       GLOB_ALTDIRFUNC
              Die      alternativen     Funktionen     pglob->gl_closedir,     pglob->gl_readdir,
              pglob->gl_opendir,  pglob->gl_lstat  und  pglob->gl_stat  anstelle   der   normalen
              Bibliotheksfunktionen für den Zugriff auf das Dateisystem verwenden.for file system
              access instead of the normal library functions.

       GLOB_BRACE
              Ersetzen von Klammerausdrücken der  Form  {a,b}  im  csh(1)-Stil.  Klammerausdrücke
              können  verschachtelt  werden.  So  liefert  zum  Beispiel  die  Angabe des Musters
              »{foo/{,cat, dog}, bar}« die gleichen Ergebnisse  wie  vier  separate  Aufrufe  von
              glob() mit den Zeichenketten »foo/«, »foo/cat«, »foo/dog« und »bar«.

       GLOB_NOMAGIC
              Falls  das  Muster  keine  Metazeichen  enthält, sollte es als das einzige Ergebnis
              zurückgegeben werden, auch wenn keine Datei mit diesem Namen existiert.

       GLOB_TILDE
              Tilden ersetzen. Falls eine Tilde (» «) das einzige  Zeichen  im  Muster  ist  oder
              einer  Tilde als erstes Zeichen sofort ein Schrägstrich (»\[u00AB]) folgt, wird die
              Tilde durch das Home-Verzeichnis des Aufrufenden ersetzt.  Falls  der  einleitenden
              Tilde  ein  Benutzername folgt (z. B. ~/andrea/bin),  werden Tilde und Benutzername
              durch das Home-Verzeichnis des Benutzers ersetzt. Falls der  Benutzername  ungültig
              ist  oder  das Home-Verzeichnis nicht bestimmt werden kann, wird keine Substitution
              durchgeführt.

       GLOB_TILDE_CHECK
              Dieser Schalter bewirkt ein Verhalten ähnlich dem von GLOB_TILDE.  Der  Unterschied
              ist,   dass  bei  einem  ungültigen  Benutzernamen  oder  bei  nicht  ermittelbarem
              Home-Verzeichnis nicht das Muster selbst als Name verwendet  wird,  sondern  glob()
              GLOB_NOMATCH zurückgibt, um einen Fehler anzuzeigen.

       GLOB_ONLYDIR
              Dies  ist  ein  Hinweis  für  glob(),  dass  der  Aufrufende  nur an Verzeichnissen
              interessiert  ist,  die  dem  Muster   entsprechen.   Falls   die   Implementierung
              Informationen  zum  Dateityp  leicht  ermitteln  kann,  werden  Dateien,  die keine
              Verzeichnisse sind, nicht an den Aufrufenden  zurückgegeben.  Allerdings  muss  der
              Aufrufende  dennoch prüfen, ob die zurückgegebenen Dateien Verzeichnisse sind. (Der
              Zweck dieses Schalters ist lediglich eine Leistungsoptimierung, wenn der Aufrufende
              nur an Verzeichnissen interessiert ist.)

       Falls  errfunc  nicht  NULL  ist, wird sie mit den Parametern epath und eerrno aufgerufen,
       wenn ein Fehler auftritt. epath ist der Zeiger auf den Pfad, bei dem der Fehler passierte,
       eerrnoder  Wert  von  errno, wie er von opendir()3, readdir(3) bzw. stat(2) gesetzt wurde.
       Falls errfunc einen Wert ungleich null zurückgibt oder wenn GLOB_ERR  gesetzt  ist,  kehrt
       glob() nach dem Aufruf von errfunc in das aufrufende Programm zurück.

       Nach  erfolgreicher Ausführung enthält pglob->gl_pathc die Anzahl der gefundenen Pfadnamen
       und pglob->gl_pathv ist ein Zeiger auf die Liste der gefundenen Pfadnamen. Die  Liste  der
       Zeiger wird mit einem Null-Zeiger abgeschlossen.

       Es  ist möglich, glob() mehrfach aufzurufen. In diesem Fall muss GLOB_APPEND in flags beim
       zweiten und jedem weiteren Aufruf gesetzt werden.

       Als eine GNU-Erweiterung wird pglob->gl_flags auf die angegebenen  Schalter,  logisch  mit
       GLOB_MAGCHAR oder-verknüpft, gesetzt, falls Metazeichen gefunden wurden.

RÜCKGABEWERT

       Nach erfolgreicher Ausführung gibt glob() null zurück. Andere mögliche Werte sind:

       GLOB_NOSPACE
              Speicher aufgebraucht

       GLOB_ABORTED
              für einen Lesefehler und

       GLOB_NOMATCH
              falls keine Pfade gefunden wurden.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────┬───────────────────────┬──────────────────────────┐
       │SchnittstelleAttributWert                     │
       ├──────────────┼───────────────────────┼──────────────────────────┤
       │glob()        │ Multithread-Fähigkeit │ MT-Unsafe race:utent env │
       │              │                       │ sig:ALRM timer locale    │
       ├──────────────┼───────────────────────┼──────────────────────────┤
       │globfree()    │ Multithread-Fähigkeit │ MT-Safe                  │
       └──────────────┴───────────────────────┴──────────────────────────┘
       In  der  obigen  Tabelle  bedeutet  utent  in  race:utent, dass, falls eine der Funktionen
       setutent(3),  getutent(3)  oder  endutent(3)  in  verschiedenen  Threads  eines  Programms
       parallel  verwandt  werden,  konkurrierende  Zugriffe  auf  Daten (»data races«) auftreten
       könnten.glob() ruft diese Funktionen auf, daher werden  Benutzer  mit  »race:utent«  daran
       erinnert.

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, POSIX.2.

ANMERKUNGEN

       Die  Strukturelemente  gl_pathc und gl_offs werden in der Glibc 2.1 als size_t deklariert,
       wie sie es gemäß POSIX.2 sein sollten. In Glibc 2.0 sind sie aber als int deklariert.

FEHLER

       Die Funktion glob() kann bei Fehlern der zugrunde liegenden Funktionsaufrufe wie malloc(3)
       oder opendir(3) fehlschlagen. Diese speichern ihren Fehlercode in errno.

BEISPIEL

       Ein Anwendungsbeispiel ist der folgende Code, der die Eingabe von

           ls -l *.c ../*.c

       in der Shell simuliert:

           glob_t globbuf;

           globbuf.gl_offs = 2;
           glob("*.c", GLOB_DOOFFS, NULL, &globbuf);
           glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf);
           globbuf.gl_pathv[0] = "ls";
           globbuf.gl_pathv[1] = "-l";
           execvp("ls", &globbuf.gl_pathv[0]);

SIEHE AUCH

       ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3), readdir(3), wordexp(3),
       glob(7)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.15  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung   dieser   Handbuchseite    wurde    von    Martin    Schulze
       <joey@infodrom.org>,  Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann
       <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer <toddy@debian.org> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version   3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE  HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an <debian-l10n-german@lists.debian.org>.