.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified Wed Jul 28 11:12:17 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Mon May 13 23:08:50 1996 by Martin Schulze (joey@linux.de)
.\" Modified 11 May 1998 by Joseph S. Myers (jsm28@cam.ac.uk)
.\" Modified 990912 by aeb
.\" 2007-10-10 mtk
.\"     Added description of GLOB_TILDE_NOMATCH
.\"     Expanded the description of various flags
.\"     Various wording fixes.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\" This file is distributed under the same license as original manpage
.\" Copyright of the original manpage:
.\" Copyright © 1993 Thomas Koenig 
.\" Copyright © of Polish translation:
.\" Przemek Borys (PTM) <pborys@dione.ids.pl>, 1999.
.\" Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, 2002.
.\" Robert Luberda <robert@debian.org>, 2014.
.\" Michał Kułach <michal.kulach@gmail.com>, 2016.
.TH GLOB 3 2015\-04\-19 GNU "Podręcznik programisty Linuksa"
.SH NAZWA
glob, globfree \- znalezienie ścieżek odpowiadających wzorcowi, zwolnienie
pamięć z glob()
.SH SKŁADNIA
.nf
\fB#include <glob.h>\fP
.sp
\fBint glob(const char *\fP\fIpattern\fP\fB, int \fP\fIflags\fP\fB,\fP
.br
\fB         int (*\fP\fIerrfunc\fP\fB) (const char *\fP\fIepath\fP\fB, int \fP\fIeerrno\fP\fB),\fP
.br
\fB         glob_t *\fP\fIpglob\fP\fB);\fP
.br
\fBvoid globfree(glob_t *\fP\fIpglob\fP\fB);\fP
.fi
.SH OPIS
Funkcja \fBglob\fP() przeszukuje wszystkie ścieżki odpowiadające wzorcowi
\fIpattern\fP, stosując przy tym reguły takie, jakich użyłaby powłoka (zobacz
\fBglob\fP(7)). Nie jest dokonywane rozwinięcie tyldy ani podstawienie
parametrów. Jeśli są one potrzebne, to należy użyć \fBwordexp\fP(3).
.PP
Funkcja \fBglobfree\fP() zwalnia obszar pamięci zaalokowany dynamicznie przez
wcześniejsze wywołanie funkcji \fBglob\fP().
.PP
W wyniku wywołania \fBglob\fP() tworzona jest struktura, na którą wskazuje
\fIpglob\fP. Struktura jest typu \fBglob_t\fP (deklarowany w \fI<glob.h>\fP)
i zawiera następujące elementy zdefiniowane przez POSIX.2 (mogą też
występować dodatkowe jako rozszerzenie):
.PP
.br
.in +4n
.nf
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 \fIgl_pathv\fP.  */
} glob_t;
.fi
.in
.PP
Wyniki są zachowywane w dynamicznie przydzielanym obszarze pamięci.
.PP
Argument \fIflags\fP jest bitowym OR\-em zera lub więcej następujących symboli
stałych modyfikujących zachowanie \fBglob\fP():
.TP 
\fBGLOB_ERR\fP
Powraca po napotkaniu błędu odczytu (na przykład, jeśli nie ma praw do
odczytu katalogu). Domyślnie \fBglob\fP() kontynuuje działanie mimo błędów,
odczytując wszystkie katalogi, do których ma uprawnienia.
.TP 
\fBGLOB_MARK\fP
Dodaje ukośnik do każdej ścieżki, która odpowiada katalogowi.
.TP 
\fBGLOB_NOSORT\fP
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.
.TP 
\fBGLOB_DOOFFS\fP
Rezerwuje sloty \fIpglob\->gl_offs\fP na początku listy napisów w
\fIpglob\->pathv\fP. Zarezerwowane sloty mogą zawierać wskaźniki null.
.TP 
\fBGLOB_NOCHECK\fP
Jeśli żaden wzorzec nie zostanie dopasowany, to zwracany jest oryginalny
wzorzec. Domyślnie \fBglob\fP() w razie braku dopasowań zwraca \fBGLOB_NOMATCH\fP.
.TP 
\fBGLOB_APPEND\fP
Doklejać wyniki bieżącego wywołania do listy wyników poprzedniego
wywołania. Nie należy ustawiać tej flagi przy pierwszym wywołaniu \fBglob\fP().
.TP 
\fBGLOB_NOESCAPE\fP
Nie pozwala na użycie znaku odwrotnego ukośnika ("\e") jako znaku
cytowania. Domyślnie odwrotny ukośnik cytuje następujący po nim znak,
dostarczając mechanizmu wyłączania specjalnego znaczenia metaznaków.
.PP
Parametr \fIflags\fP może również zawierać następujące znaczniki, będące
rozszerzeniami GNU niedefiniowanymi przez POSIX.2:
.TP 
\fBGLOB_PERIOD\fP
Pozwala na to, by początkowa kropka była dopasowywana przez
metaznaki. Domyślnie metaznaki nie są dopasowywane do początkowej kropki.
.TP 
\fBGLOB_ALTDIRFUNC\fP
Zamiast zwykłych funkcji bibliotecznych używa alternatywnych funkcji
\fIpglob\->gl_closedir\fP, \fIpglob\->gl_readdir\fP,
\fIpglob\->gl_opendir\fP, \fIpglob\->gl_lstat\fP oraz \fIpglob\->gl_stat\fP
do dostępu do systemu plików.
.TP 
\fBGLOB_BRACE\fP
Rozwija wyrażenia nawiasowe stylu \fBcsh\fP(1) w formacie \fB{a,b}\fP. 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
\fBglob\fP() z następującymi argumentami: "foo/", "foo/cat", "foo/dog" oraz
"bar".
.TP 
\fBGLOB_NOMAGIC\fP
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.
.TP 
\fBGLOB_TILDE\fP
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 \fBglob\fP(). 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.
.TP 
\fBGLOB_TILDE_CHECK\fP
Zachowuje się podobnie do \fBGLOB_TILDE\fP, 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 \fBglob\fP() zamiast używać wzorca jako nazwy zwróci
\fBGLOB_NOMATCH\fP, wskazując, że wystąpił błąd.
.TP 
\fBGLOB_ONLYDIR\fP
Jest to \fIwskazówka\fP dla funkcji \fBglob\fP(), 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).
.PP
Jeśli \fIerrfunc\fP nie jest równe NULL, to w wypadku błędu będzie ono wywołane
z argumentami \fIepath\fP, czyli wskaźnikiem do ścieżki, na której coś się nie
powiodło, i z \fIeerrno\fP, przechowującym wartość \fIerrno\fP, zwróconą przez
wywołanie do \fBopendir\fP(3), \fBreaddir\fP(3) lub \fBstat\fP(2). Jeśli \fIerrfunc\fP
zwraca wartość niezerową lub jeśli ustawiony jest znacznik \fBGLOB_ERR\fP, to
\fBglob\fP() zakończy działanie po wywołaniu funkcji \fIerrfunc\fP.
.PP
Po pomyślnym zakończeniu, \fIpglob\->gl_pathc\fP zawiera liczbę pasujących
ścieżek, a \fIpglob\->gl_pathv\fP wskaźnik do listy wskaźników do
dopasowanych ścieżek. Lista ta jest zakończona wskaźnikiem null.
.PP
Możliwe jest wywoływanie \fBglob\fP() wielokrotnie. W takim wypadku należy w
następnych wywołaniach ustawić w \fIflags\fP znacznik \fBGLOB_APPEND\fP.
.PP
Jako rozszerzenie GNU, \fIpglob\->gl_flags\fP jest ustawiane jako \fBor\fP
podanych znaczników i \fBGLOB_MAGCHAR\fP, gdy występują metaznaki.
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu \fBglob\fP() zwraca zero. Inne możliwe wartości to:
.TP 
\fBGLOB_NOSPACE\fP
przy braku pamięci,
.TP 
\fBGLOB_ABORTED\fP
przy błędzie odczytu i
.TP 
\fBGLOB_NOMATCH\fP
gdy niczego nie dopasowano.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lb lb lbw24
l l l.
Interfejs	Atrybut	Wartość
T{
\fBglob\fP()
T}	Bezpieczeństwo wątkowe	T{
MT\-Unsafe race:utent env
.br
sig:ALRM timer locale
T}
T{
\fBglobfree\fP()
T}	Bezpieczeństwo wątkowe	MT\-Safe
.TE

W powyższej tabeli \fIutent\fP w \fIrace:utent\fP oznacza, że jeśli któraś z
funkcji \fBsetutent\fP(3), \fBgetutent\fP(3) lub \fBendutent\fP(3) jest używana
równolegle w różnych wątkach programu, może nastąpić sytuacja wyścigu
danych. Ponieważ \fBglob\fP(3) wywołuje te funkcje, stąd dla przypomnienia
użytkownikom używamy race:utent.
.SH "ZGODNE Z"
POSIX.1\-2001, POSIX.1\-2008, POSIX.2.
.SH UWAGI
Elementy \fIgl_pathc\fP i \fIgl_offs\fP struktury są w glibc 2.1 zadeklarowane
jako \fIsize_t\fP, jak powinno być zgodnie z POSIX.2, ale są zadeklarowane jako
\fIint\fP w glibc 2.0.
.SH BŁĘDY
Funkcja \fBglob\fP() może zawieść z powodu błędu wywołanych przez nią funkcji,
takich jak \fBmalloc\fP(3) czy \fBopendir\fP(3). Wywołania te zapiszą kod błędu w
\fIerrno\fP.
.SH PRZYKŁAD
Jednym z przykładów użycia jest następujący kod, emulujący wpisanie
.sp
.in +4n
ls \-l *.c ../*.c
.in
.sp
w powłoce:
.nf
.in +4n

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]);
.in
.fi
.SH "ZOBACZ TAKŻE"
\fBls\fP(1), \fBsh\fP(1), \fBstat\fP(2), \fBexec\fP(3), \fBfnmatch\fP(3), \fBmalloc\fP(3),
\fBopendir\fP(3), \fBreaddir\fP(3), \fBwordexp\fP(3), \fBglob\fP(7)
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 4.07 projektu Linux
\fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz
najnowszą wersję oryginału można znaleźć pod adresem
\%https://www.kernel.org/doc/man\-pages/.
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są:
Przemek Borys (PTM) <pborys@dione.ids.pl>,
Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>.
.PP
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 4.07 \fPoryginału.
