tail head cat sleep
QR code linking to this page

Manpage  — GLOB

BEZEICHNUNG

glob, globfree - finde Dateinamen, die einem Muster genügen

INHALT

BEZEICHNUNG

#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 Dateien, die dem Muster pattern, gemäß den Regeln der Shell, genügen und gibt sie zurück. (siehe auch glob(7)) Tilde-Erweiterungen und Variablensubstitutionen werden nicht durchgeführt.

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

Die Ergebnisse eines glob()-Aufrufes werden in einer Struktur gespeichert, auf die pglob zeigt. Sie ist vom Typ glob_t, der in <glob.h> wie folgt definiert ist.

typedef struct
{
    int gl_pathc;       /* Anzahl der bisher gefundenen Dateinamen */
    char **gl_pathv;    /* Liste der gefundenen Dateinamen */
    int gl_offs;        /* Reservierte Einträge in `gl_pathv' */
    int gl_flags;       /* Flags für glob() */
} glob_t;

Die Ergebnisse werden in der dynamisch alloziierten Datenstruktur gespeichert.

Das Argument flags besteht aus einer ODER-Verknüpfungen der folgenden symbolischen Konstanten, die das Verhalten von glob() manipulieren:
GLOB_ERR
  läßt glob() bei einem Lesefehler (z.B. wenn ein Verzeichnis nicht gelesen werden kann) in das aufrufende Programm zurückkehren,
GLOB_MARK
  fügt an jeden gefundenen Pfad einen Slash an, wenn dieser auf ein Verzeichnis zeigt,
GLOB_NOSORT
  überspringt die Sortierung der Ergebnisse (normalerweise werden sie sortiert zurückgegeben),
GLOB_DOOFS
  bedeutet, daß pglob->gl_offs Einträge am Anfang der Liste pglob->pathv reserviert werden,
GLOB_NOCHECK
  bedeutet, daß, wenn keine Pfade dem Muster genügen, das Muster selbst zurückgegeben wird,
GLOB_APPEND
  bedeutet, daß die Ergebnisse eines vorherigen Aufrufs von glob() angehängt werden sollen. Dieses Flag sollte nicht beim ersten Aufruf gesetzt werden,
GLOB_NOESCAPE
  bedeutet, daß Meta-Zeichen nicht mit Backslashes gequotet werden können und
GLOB_PERIOD
  bedeutet, daß ein abschließender Punkt für jedes Zeichen steht.
Wenn errfunc nicht NULL ist, wird sie mit den Parametern epath, einem Zeiger auf den Pfad, bei dem der Fehler passierte, eerrno, dem Wert von errno, wie er von opendir(), readdir() bzw. stat(). gesetzt wurde, aufgerufen, wenn ein Fehler auftritt. Wenn errfunc einen Wert ungleich null zurückgibt oder wenn GLOB_ERR gesetzt ist, springt 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 Pfade und pglob->gl_pathv ist ein Zeiger auf die Liste der gefundenen Pfade. Der erste Zeiger nach dem letzten Pfad ist NULL.

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

RÜCKGABEWERTE

Nach erfolgreicher Ausführung gibt glob() null zurück. Andere mögliche Werte sind:
GLOB_NOSPACE,
  falls der Speicher knapp wurde,
GLOB_ABEND,
  falls ein Lesefehler aufgetreten ist, und
GLOB_NOMATCH,
  falls keine Pfade gefunden wurden.

BEISPIELE

Ein passendes Beispiel ist folgender Code, der ein ls -l *.c ../*.c in der Shell simuliert.

glob_t globbuf;

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

KONFORM ZU

Vorgeschlagen in POSIX.2

FEHLER

Die Funktion glob() kann fehlschlagen bei Fehlern der zugrundeliegenden Systemaufrufe wie malloc() oder opendir(). Diese speichern den Fehlercode in errno.

POSIX.2 ist bisher noch kein anerkannter Standard, die Informationen in dieser Manual-Seite werden sich ändern.

SIEHE AUCH

ls(1), sh(1) [Englisch], exec(2), stat(2), malloc(3), opendir(3), readdir(3), wordexp(3) [Englisch], glob(7).

13. Mai 1996 GLOB (3) GNU

tail head cat sleep
QR code linking to this page


Bitte richten Sie Ihre Kommentare zu diesem Handbuch Seite Service, Ben Bullock. Privacy policy.

A computer would deserve to be called intelligent if it could deceive a human into believing that it was human.
— Alan Turing