.\" -*- coding: UTF-8 -*- .\" 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. .\" .\"******************************************************************* .TH GLOB 3 "6 marca 2019 r." 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 \fP .PP \fBint glob(const char *\fP\fIpattern\fP\fB, int \fP\fIflags\fP\fB,\fP \fB int (*\fP\fIerrfunc\fP\fB) (const char *\fP\fIepath\fP\fB, int \fP\fIeerrno\fP\fB),\fP \fB glob_t *\fP\fIpglob\fP\fB);\fP \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\fP) i zawiera następujące elementy zdefiniowane przez POSIX.2 (mogą też występować dodatkowe jako rozszerzenie): .PP .in +4n .EX 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; .EE .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 .sp 1 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() 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 .PP .in +4n .EX ls \-l *.c ../*.c .EE .in .PP w powłoce: .PP .in +4n .EX 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]); .EE .in .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 5.04 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 są: Przemek Borys , Andrzej Krzysztofowicz , Robert Luberda i Michał Kułach . Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres .MT manpages-pl-list@lists.sourceforge.net .ME .