Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       getcwd,  get_current_dir_name,  getwd  -  odczytanie  biecego  katalogu
       roboczego

SK/LADNIA

       #include <unistd.h>

       char *getcwd(char *buf, size_t size);
       char *get_current_dir_name(void);
       char *getwd(char *buf);

OPIS

       Funkcja getcwd() kopiuje nazw  bezwzgldnej  cieki  dostpu  dla  biecego
       katalogu  roboczego  do tablicy wskazywanej przez buf, ktora to tablica
       ma dlugo size.

       Jeli nazwa biecej bezwzgldnej cieki dostpu wymaga  bufora  dluszego  ni
       size elementow, to zwracane jest NULL a errno jest ustawiane na ERANGE;
       aplikacja powinna sprawdza, czy nie wystpil ten bld i przydziela wikszy
       bufor, jeli jest to potrzebne.

       Jeli buf jest rowne NULL, zachowanie getcwd() jest nieokrelone.

       Jako  rozszerzenie  standardu  POSIX.1, linuksowe (libc4, libc5, glibc)
       getcwd() przydziela bufor dynamicznie korzystajc z malloc(),  jeli  buf
       jest  rowne  NULL podczas wywolania. W tym przypadku przydzielony bufor
       ma dlugo size, chyba e size jest  rowne  zero.  Wowczas  dla  buf  jest
       przydzielane  tyle,  ile  potrzeba.  Jest  moliwe  (i naprawd zalecane)
       zwalnianie otrzymanych w ten sposob buforow za pomoc free().

       get_current_dir_name, ktore jest  jedynie  prototypem  gdy  _GNU_SOURCE
       jest  zdefiniowane,  przydzieli  za pomoc malloc(3) tablic dostatecznie
       du, aby przechowa nazw biecego katalogu. Jeli zmienna  rodowiskowa  PWD
       jest ustawiona, a jej warto prawidlowa, to zostanie zwrocona ta warto.

       getwd,    ktore   jest   jedynie   prototypem   gdy   _BSD_SOURCE   lub
       _XOPEN_SOURCE_EXTENDED jest zdefiniowane, nie przydzieli  adnej  pamici
       za  pomoc  malloc(3).  Argument buf powinien by wskanikiem do tablicy o
       dlugoci co najmniej PATH_MAX bajtow.   getwd  zwroci  jedynie  pierwsze
       PATH_MAX  bajtow  nazwy  biecej  cieki  dostpu.   Naley  zwroci uwag, e
       PATH_MAX nie musi by stal okrelan podczas kompilacji; moe ona zalee  od
       systemu  plikow,  a  nawet  by  nieograniczona. Ze wzgldu na przenono i
       bezpieczestwo uywanie getwd nie jest zalecane.

WARTO ZWRACANA

       NULL w przypadku bldu, przy jednoczesnym  ustawieniu  errno,  a  buf  w
       przypadku pomylnego zakoczenia. Zawarto tablicy wskazywanej przez buf w
       przypadku bldu jest nieokrelona.

B/LDY

       EACCES Brak praw do odczytu lub przeszukiwania skladnika nazwy pliku.

       EFAULT buf wskazuje na niewlaciwy adres.

       EINVAL Argument size jest zerowy, a buf nie jest wskanikiem NULL.

       ENOENT Biecy katalog roboczy zostal skasowany.

       ERANGE Argument size jest mniejszy od dlugoci nazwy katalogu roboczego.
              Trzeba przydzieli wiksz tablic i sprobowa ponownie.

UWAGI

       Pod  Linuksem,  funkcja  getcwd()  jest funkcj systemow (od 2.1.92).  W
       starszych systemach mogla ona odpytywa /proc/self/cwd.  Gdy nie ma  ani
       funkcji   systemowej,   ani   systemu  plikow  /proc,  wywolywana  jest
       implementacja ogolna. Jedynie w takiej sytuacji wywolanie tych  funkcji
       moe w razie niepomylnego zakoczenia zwroci bld EACCES.

       Funkcje  te  s  czsto uywane do zapamitywania poloenia biecego katalogu
       roboczego w celu poniejszego  powrotu  do  niego.  Gdy  dostpnych  jest
       dostatecznie wiele deskryptorow plikow, otwarcie biecego katalogu (".")
       i wywolanie fchdir(2), aby  wroci  jest  zazwyczaj  szybsz  i  bardziej
       niezawodn alternatyw, zwlaszcza na platformach innych ni Linux.

ZGODNE Z

       POSIX.1

ZOBACZ TAKE

       chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)

INFORMACJE O T/LUMACZENIU

       Powysze  tlumaczenie  pochodzi z nieistniejcego ju Projektu Tlumaczenia
       Manuali i moe nie by aktualne. W razie zauwaenia ronic  midzy  powyszym
       opisem  a  rzeczywistym  zachowaniem  opisywanego programu lub funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.