plucky (3) glob.3.gz

Provided by: manpages-de-dev_4.25.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⟩.