Provided by: manpages-de-dev_4.23.1-1_all bug

BEZEICHNUNG

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

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <glob.h>

       int glob(const char *restrict Muster, int Schalter,
                int (*Fehlerfunk)(const char *fPfad, int Fehlernum),
                glob_t *restrict pglob);
       void globfree(glob_t *pglob);

BESCHREIBUNG

       Die Funktion glob() sucht alle Pfadnamen, die nach den von der  Shell  verwendeten  Regeln
       dem  Muster  genügen  und  gibt  sie  zurück (siehe auch glob(7)). Tilde-Erweiterungen und
       Parametersubstitutionen werden nicht durchgeführt,  falls  sie  das  möchten,  müssen  Sie
       wordexp(3) verwenden.

       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 Schalter 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 Nullzeiger.

       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.

       Schalter 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 Fehlerfunk nicht  NULL  ist,  wird  sie  mit  den  Parametern  fPfad  und  Fehlernum
       aufgerufen,  wenn  ein  Fehler  auftritt.  fPfad  ist der Zeiger auf den Pfad, bei dem der
       Fehler passierte, Fehlernum der Wert von errno, wie er  von  opendir(3),  readdir(3)  bzw.
       stat(2)  gesetzt  wurde.  Falls  Fehlerfunk  einen Wert ungleich null zurückgibt oder wenn
       GLOB_ERR gesetzt ist, kehrt glob() nach  dem  Aufruf  von  Fehlerfunk  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 Nullzeiger abgeschlossen.

       Es  ist  möglich,  glob() mehrfach aufzurufen. In diesem Fall muss GLOB_APPEND in Schalter
       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-Unsicher race:utent env sig:ALRM timer locale │
       ├──────────────┼───────────────────────┼──────────────────────────────────────────────────┤
       │globfree()    │ Multithread-Fähigkeit │ MT-Sicher                                        │
       └──────────────┴───────────────────────┴──────────────────────────────────────────────────┘
       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.

STANDARDS

       POSIX.1-2008.

GESCHICHTE

       POSIX.1-2001, 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.

BEISPIELE

       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)

Ü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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.