Provided by: manpages-pl-dev_4.27.0-1_all bug

NAZWA

       glob, globfree - znajduje ścieżki odpowiadające wzorcowi, zwalnia pamięć z glob()

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <glob.h>

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

OPIS

       Funkcja  glob()  przeszukuje  wszystkie  ścieżki odpowiadające wzorcowi pattern, stosując przy tym reguły
       takie, jakich użyłaby powłoka (zobacz glob(7)). Nie jest dokonywane rozwinięcie  tyldy  ani  podstawienie
       parametrów. Jeśli są one potrzebne, to należy użyć wordexp(3).

       Funkcja  globfree()  zwalnia  obszar pamięci zaalokowany dynamicznie przez wcześniejsze wywołanie funkcji
       glob().

       W wyniku wywołania glob() tworzona jest struktura, na którą wskazuje pglob. Struktura  jest  typu  glob_t
       (deklarowany  w  <glob.h>) i zawiera następujące elementy zdefiniowane przez POSIX.2 (mogą też występować
       dodatkowe jako rozszerzenie):

           typedef struct {
               size_t   gl_pathc;    /* Liczba odpowiadających dotąd ścieżek. */
               char   **gl_pathv;    /* Lista odpowiadających ścieżek  */
               size_t   gl_offs;     /* Sloty do rezerwowania w gl_pathv. */
           } glob_t;

       Wyniki są zachowywane w dynamicznie przydzielanym obszarze pamięci.

       Argument flags jest bitowym OR-em zera lub więcej następujących symboli stałych modyfikujących zachowanie
       glob():

       GLOB_ERR
              Powraca po napotkaniu błędu odczytu  (na  przykład,  jeśli  nie  ma  praw  do  odczytu  katalogu).
              Domyślnie  glob()  kontynuuje  działanie mimo błędów, odczytując wszystkie katalogi, do których ma
              uprawnienia.

       GLOB_MARK
              Dodaje ukośnik do każdej ścieżki, która odpowiada katalogowi.

       GLOB_NOSORT
              Nie sortuje zwracanych nazw ścieżek. Jedynym powodem użycia  tej  opcji  może  być  zaoszczędzenie
              czasu przetwarzania. Domyślnie zwracane nazwy ścieżek są sortowane.

       GLOB_DOOFFS
              Rezerwuje  sloty pglob->gl_offs na początku listy napisów w pglob->pathv. Zarezerwowane sloty mogą
              zawierać wskaźniki null.

       GLOB_NOCHECK
              Jeśli żaden wzorzec nie zostanie dopasowany, to zwracany jest oryginalny wzorzec. Domyślnie glob()
              w razie braku dopasowań zwraca GLOB_NOMATCH.

       GLOB_APPEND
              Doklejać wyniki bieżącego wywołania do listy wyników poprzedniego wywołania. Nie  należy  ustawiać
              tej flagi przy pierwszym wywołaniu glob().

       GLOB_NOESCAPE
              Nie  pozwala  na  użycie  znaku odwrotnego ukośnika ('\') jako znaku cytowania. Domyślnie odwrotny
              ukośnik cytuje następujący po nim znak, dostarczając mechanizmu wyłączania  specjalnego  znaczenia
              metaznaków.

       Parametr  flags  może  również zawierać następujące znaczniki, będące rozszerzeniami GNU niedefiniowanymi
       przez POSIX.2:

       GLOB_PERIOD
              Pozwala na to, by początkowa kropka była dopasowywana przez metaznaki. Domyślnie metaznaki nie  są
              dopasowywane do początkowej kropki.

       GLOB_ALTDIRFUNC
              Zamiast   zwykłych   funkcji   bibliotecznych  używa  alternatywnych  funkcji  pglob->gl_closedir,
              pglob->gl_readdir, pglob->gl_opendir, pglob->gl_lstat oraz pglob->gl_stat do  dostępu  do  systemu
              plików.

       GLOB_BRACE
              Rozwija  wyrażenia  nawiasowe  stylu  csh(1)  w  formacie  {a,b}.  Wyrażenia  nawiasowe  mogą  być
              zagnieżdżane. Dlatego na przykład podanie wzoraca "{foo/{,cat,dog},bar}" zwróci takie same  wyniki
              jak  czterokrotne  wywołanie glob() z następującymi argumentami: "foo/", "foo/cat", "foo/dog" oraz
              "bar".

       GLOB_NOMAGIC
              Jeśli wzorzec nie zawiera metaznaków, to powinien być zwrócony jako jedyne  pasujące  słowo  nawet
              wtedy, gdy nie ma plików o takiej nazwie.

       GLOB_TILDE
              Przeprowadza  ekspansję  tyldy.  Jeśli  tylda  ('~')  jest  jedynym znakiem we wzorcu lub zaraz po
              początkowym znaku tyldy występuje ukośnik ('/'), to tylda jest zastępowana  przez  nazwę  katalogu
              domowego użytkownika wywołującego glob(). Jeśli po początkowej tyldzie występuje nazwa użytkownika
              (np.  "~andrea/bin"),  to  tylda  i  nazwa  użytkownika  są  zastępowane przez katalog domowy tego
              użytkownika. Jeśli nazwa użytkownika jest niepoprawna lub katalog domowy nie może  być  określony,
              to żadne zastępowanie nie jest przeprowadzane.

       GLOB_TILDE_CHECK
              Zachowuje się podobnie do GLOB_TILDE, z tą różnicą że jeśli nazwa użytkownika jest niepoprawna lub
              jeśli nie można określić katalogu domowego użytkownika, to glob() zamiast używać wzorca jako nazwy
              zwróci GLOB_NOMATCH, wskazując, że wystąpił błąd.

       GLOB_ONLYDIR
              Jest  to  wskazówka  dla  funkcji glob(), mówiąca, że funkcja wywołująca jest zainteresowana tylko
              katalogami pasującymi do wzorca. Jeśli implementacja może w łatwy  sposób  określić  informację  o
              typie  pliku,  to  pliki  niebędące  katalogami  nie są zwracane. Jednakże funkcja wywołująca musi
              sprawdzić, że zwrócone pliki są  katalogami.  (Celem  tej  flagi  jest  poprawienie  wydajności  w
              przypadku, gdy funkcja wywołująca jest zainteresowana tylko katalogami).

       Jeśli  errfunc  nie  jest  równe  NULL, to w wypadku błędu będzie ono wywołane z argumentami epath, czyli
       wskaźnikiem do ścieżki, na której coś się  nie  powiodło,  i  z  eerrno,  przechowującym  wartość  errno,
       zwróconą  przez  wywołanie  do opendir(3), readdir(3) lub stat(2). Jeśli errfunc zwraca wartość niezerową
       lub jeśli ustawiony jest znacznik GLOB_ERR, to glob() zakończy działanie po wywołaniu funkcji errfunc.

       Po pomyślnym zakończeniu, pglob->gl_pathc zawiera liczbę pasujących ścieżek, a  pglob->gl_pathv  wskaźnik
       do listy wskaźników do dopasowanych ścieżek. Lista ta jest zakończona wskaźnikiem null.

       Możliwe  jest  wywoływanie glob() wielokrotnie. W takim wypadku należy w następnych wywołaniach ustawić w
       flags znacznik GLOB_APPEND.

       Jako rozszerzenie GNU, pglob->gl_flags jest ustawiane jako or podanych  znaczników  i  GLOB_MAGCHAR,  gdy
       występują metaznaki.

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu glob() zwraca zero. Inne możliwe wartości to:

       GLOB_NOSPACE
              przy braku pamięci,

       GLOB_ABORTED
              przy błędzie odczytu i

       GLOB_NOMATCH
              gdy niczego nie dopasowano.

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌────────────┬────────────────────────┬─────────────────────────────────────────────────────────────────┐
       │ InterfejsAtrybutWartość                                                         │
       ├────────────┼────────────────────────┼─────────────────────────────────────────────────────────────────┤
       │ glob()     │ Bezpieczeństwo wątkowe │ MT-niebezpieczne race:utent env sig:ALRM timer locale           │
       ├────────────┼────────────────────────┼─────────────────────────────────────────────────────────────────┤
       │ globfree() │ Bezpieczeństwo wątkowe │ MT-bezpieczne                                                   │
       └────────────┴────────────────────────┴─────────────────────────────────────────────────────────────────┘

       W  powyższej  tabeli  utent  w race:utent oznacza, że jeśli któraś z funkcji setutent(3), getutent(3) lub
       endutent(3) jest używana równolegle w różnych wątkach programu, może nastąpić  sytuacja  wyścigu  danych.
       Ponieważ glob() wywołuje te funkcje, stąd dla przypomnienia użytkownikom używamy race:utent.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, POSIX.2.

UWAGI

       Elementy gl_pathc i gl_offs struktury są w glibc 2.1 zadeklarowane jako size_t, jak powinno być zgodnie z
       POSIX.2, ale są zadeklarowane jako int w glibc 2.0.

USTERKI

       Funkcja  glob()  może  zawieść  z  powodu  błędu  wywołanych  przez nią funkcji, takich jak malloc(3) czy
       opendir(3). Wywołania te zapiszą kod błędu w errno.

PRZYKŁADY

       Jednym z przykładów użycia jest następujący kod, emulujący wpisanie

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

       w powłoce:

           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]);

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Tłumaczenie niniejszej strony podręcznika: Przemek Borys  <pborys@dione.ids.pl>,  Andrzej  Krzysztofowicz
       <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                          15 czerwca 2024 r.                                        glob(3)