.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Wed Jul 21 22:35:42 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified 18 Mar 1996 by Martin Schulze (joey@infodrom.north.de):
.\"   Corrected description of getwd().
.\" Modified Sat Aug 21 12:32:12 MET 1999 by aeb - applied fix by aj
.\" Modified Mon Dec 11 13:32:51 MET 2000 by aeb
.\" Modified Thu Apr 22 03:49:15 CEST 2002 by Roger Luethi <rl@hellgate.ch>
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH getcwd 3 "5 lutego 2023 r." "Linux man\-pages 6.03" 
.SH NAZWA
getcwd, getwd, get_current_dir_name \- odczytanie bieżącego katalogu
roboczego
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <unistd.h>\fP
.PP
\fBchar *getcwd(char \fP\fIbuf\fP\fB[.\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB);\fP
\fBchar *get_current_dir_name(void);\fP
.PP
\fB[[deprecated]] char *getwd(char \fP\fIbuf\fP\fB[PATH_MAX]);\fP
.fi
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
\fBget_current_dir_name\fP():
.nf
    _GNU_SOURCE
.fi
.PP
\fBgetwd\fP():
.nf
.\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    Od glibc 2.12:
        (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
            || /* glibc >= 2.19: */ _DEFAULT_SOURCE
            || /* glibc <= 2.19: */ _BSD_SOURCE
    Przed glibc 2.12:
        _BSD_SOURCE || _XOPEN_SOURCE >= 500
.fi
.SH OPIS
Te funkcje zwracają zakończony bajtem null łańcuch znaków zawierający nazwę
bezwzględnej ścieżki do bieżącego katalogu roboczego procesu
wywołującego. Nazwa ścieżki jest zwracana jako wynik funkcji i poprzez
argument \fIbuf\fP, jeśli jest obecny.
.PP
Funkcja \fBgetcwd\fP()  kopiuje nazwę bezwzględnej ścieżki dostępu bieżącego
katalogu roboczego do tablicy wskazywanej przez \fIbuf\fP, która to tablica ma
długość \fIsize\fP.
.PP
Jeśli nazwa bieżącej bezwzględnej ścieżki dostępu wymaga bufora dłuższego
niż \fIsize\fP elementów, to zwracane jest \fBNULL\fP, a \fIerrno\fP jest ustawiane
na \fBERANGE\fP; aplikacja powinna sprawdzać, czy nie wystąpił ten błąd, i
przydzielać większy bufor, jeżeli jest to potrzebne.
.PP
Jako rozszerzenie standardu POSIX.1\-2001, wersja glibc funkcji \fBgetcwd\fP()
przydziela bufor dynamicznie korzystając z \fBmalloc\fP(3), jeśli \fIbuf\fP jest
równe \fBNULL\fP. W tym przypadku przydzielony bufor ma długość \fIsize\fP, chyba
że \fIsize\fP jest równe zero, co oznacza że buforowi \fIbuf\fP jest przydzielane
tyle pamięci, ile potrzeba. Program wywołujący powinien zwolnić zwrócony
bufor, wywołując \fBfree\fP(3).
.PP
\fBget_current_dir_name\fP() przydzieli za pomocą \fBmalloc\fP(3) tablicę
dostatecznie dużą, aby przechować bezwzględną nazwę bieżącego
katalogu. Jeśli zmienna środowiskowa \fBPWD\fP jest ustawiona, a jej wartość
prawidłowa, to zostanie zwrócona ta wartość. Program wywołujący powinien
zwolnić zwrócony bufor, wywołując \fBfree\fP(3).
.PP
\fBgetwd\fP() nie przydziela żadnej pamięci za pomocą \fBmalloc\fP(3). Argument
\fIbuf\fP powinien być wskaźnikiem do tablicy o długości co najmniej
\fBPATH_MAX\fP bajtów. Jeśli długość bezwzględnej ścieżki do bieżącego katalogu
roboczego łącznie z końcowym bajtem null przekracza \fBPATH_MAX\fP bajtów, to
zwracany jest NULL i \fIerrno\fP jest ustawiane na \fBENAMETOOLONG\fP. (Należy
zwrócić uwagę, że \fBPATH_MAX\fP nie musi być stałą określaną podczas
kompilacji; co więcej może ona zależeć od systemu plików, patrz
\fBpathconf\fP(3)). Ze względu na przenośność i bezpieczeństwo używanie
\fBgetwd\fP() nie jest zalecane.
.SH "WARTOŚĆ ZWRACANA"
On success, these functions return a pointer to a string containing the
pathname of the current working directory.  In the case of \fBgetcwd\fP()  and
\fBgetwd\fP()  this is the same value as \fIbuf\fP.
.PP
W przypadku błędu funkcje te zwracają NULL, jednocześnie ustawiając
\fIerrno\fP, wskazujące na rodzaj błędu. Zawartość tablicy wskazywanej przez
\fIbuf\fP w przypadku błędu jest nieokreślona.
.SH BŁĘDY
.TP 
\fBEACCES\fP
Brak praw do odczytu lub przeszukiwania składnika nazwy pliku.
.TP 
\fBEFAULT\fP
\fIbuf\fP wskazuje na niewłaściwy adres.
.TP 
\fBEINVAL\fP
Argument \fIsize\fP jest zerowy, a \fIbuf\fP nie jest wskaźnikiem NULL.
.TP 
\fBEINVAL\fP
\fBgetwd\fP(): \fIbuf\fP jest równy NULL.
.TP 
\fBENAMETOOLONG\fP
\fBgetwd\fP(): Rozmiar zakończonej znakiem null pełnej nazwy katalogu roboczego
przekracza \fBPATH_MAX\fP bajtów.
.TP 
\fBENOENT\fP
Bieżący katalog roboczy został skasowany.
.TP 
\fBENOMEM\fP
Brak pamięci.
.TP 
\fBERANGE\fP
Argument \fIsize\fP jest mniejszy od długości pełnej nazwy katalogu roboczego,
włączając w to końcowy bajt null. Należy przydzielić większą tablicę i
spróbować ponownie.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBgetcwd\fP(),
\fBgetwd\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
T{
\fBget_current_dir_name\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne env
.TE
.hy
.ad
.sp 1
.SH STANDARDY
\fBgetcwd\fP() jest zgodna z POSIX.1\-2001. Należy jednak zauważyć, że
POSIX.1\-2001 nie określa zachowania funkcji \fBgetcwd\fP(), jeśli \fIbuf\fP jest
równy NULL.
.PP
\fBgetwd\fP() jest oznaczona jako przestarzała w POSIX.1\-2001. POSIX.1\-2008
usuwa definicję \fBgetwd\fP(). Zamiast niej należy używać
\fBgetcwd\fP(). POSIX.1\-2001 nie określa żadnych błędów dla \fBgetwd\fP().
.PP
\fBget_current_dir_name\fP() jest rozszerzeniem GNU.
.SH UWAGI
Pod Linuksem funkcje te używają wywołania systemowego \fBgetcwd\fP()
(dostępnego od wersji 2.1.92 Linuksa). W starszych systemach mogły odpytywać
\fI/proc/self/cwd\fP. Gdy nie ma ani funkcji systemowej, ani systemu plików
proc, wywoływana jest implementacja ogólna. Jedynie w takiej sytuacji
wywołanie tych funkcji może pod Linuksem zwrócić w razie niepomyślnego
zakończenia błąd \fBEACCES\fP.
.PP
.\"
Funkcje te są często używane do zapamiętywania położenia bieżącego katalogu
roboczego w celu późniejszego powrotu do niego. Gdy dostępnych jest
dostatecznie wiele deskryptorów plików, otwarcie bieżącego katalogu (".") i
wywołanie \fBfchdir\fP(2), aby do niego wrócić, jest zazwyczaj szybszą i
bardziej niezawodną alternatywą, zwłaszcza na platformach innych niż Linux.
.SS "Różnice biblioteki C/jądra"
.\" commit 3272c544da48f8915a0e34189182aed029bd0f2b
Jądro Linuksa dostarcza wywołania systemowego \fBgetcwd\fP, które jeśli jest to
możliwe, będzie używane przez funkcje opisane w tym podręczniku. Wywołanie
to przyjmuje takie same argumenty, jak funkcja biblioteczna o tej samej
nazwie, ale długość zwracanej wartości jest ograniczona do \fBPATH_MAX\fP
bajtów. (Przed wersją 3.12 Linuksa, ograniczeniem długości zwracane wartości
był rozmiar strony systemowej. W przypadku wielu architektur sprzętowych
\fBPATH_MAX\fP i rozmiar strony są sobie równe i wynoszą 4096, ale jest kilka
architektur, które mają większy rozmiar strony). Jeśli długość ścieżki
bieżącego katalogu roboczego przekracza ten limit, to wywołanie systemowe
zwraca błąd  \fBENAMETOOLONG\fP. W takim przypadku funkcje biblioteczne
przechodzą do alternatywnej (wolniejszej) implementacji zwracającej pełną
nazwę ścieżki.
.PP
.\" commit 8df9d1a4142311c084ffeeacb67cd34d190eff74
Jeśli bieżący katalog roboczy nie znajduje się poniżej głównego katalogu
bieżącego procesu (na przykład ponieważ ustawił nowy katalog główny systemu
plików za pomocą \fBchroot\fP(2), ale nie zmienił swojego katalogu bieżącego na
ten nowy katalog główny), to od Linuksa 2.6.36 zwrócona ścieżka zostanie
poprzedzona napisem "(unreachable)". Takie zachowanie może być także
spowodowane przez użytkownika nieuprzywilejowanego zmieniającego bieżący
katalog do innej przestrzeni nazw montowania. Podczas pracy z ścieżkami
pochodzącymi z niezaufanych źródeł programy wywołujące te funkcje powinny
rozważyć sprawdzanie, czy zwrócona ścieżka zaczyna się od znaku  "/", czy od
znaku "(", aby uniknąć interpretowania niedostępnych ścieżek jako ścieżek
względnych.
.SH USTERKI
Poacząwszy od tej zmiany w Linuksie 2.6.36, która w przypadkach powyżej
opisanych dodawała prefiks "(unreachable)", implementacja glibc funkcji
\fBgetcwd\fP() stała się niezgodna ze standardem POSIX i zwracała względną
ścieżkę, mimo że API wymagało ścieżki bezwzględnej. Zostało to naprawione w
glibc 2.27: wywołanie \fBgetcwd\fP() z takiego katalogu bieżącego zwróci błąd
\fBENONET\fP.
.SH "ZOBACZ TAKŻE"
\fBpwd\fP(1), \fBchdir\fP(2), \fBfchdir\fP(2), \fBopen\fP(2), \fBunlink\fP(2), \fBfree\fP(3),
\fBmalloc\fP(3)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
Robert Luberda <robert@debian.org>
.
.PP
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.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
