.\" -*- coding: UTF-8 -*-
.\" Copyright 1995  James R. Van Zandt <jrv@vanzandt.mv.com>
.\"
.\" %%%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
.\"
.\" Changed Tue Sep 19 01:49:29 1995, aeb: moved from man2 to man3
.\"  added ref to /etc/utmp, added BUGS section, etc.
.\" modified 2003 Walter Harms, aeb - added getlogin_r, note on stdin use
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH GETLOGIN 3 "6 marca 2019 r." GNU "Podręcznik programisty Linuksa"
.SH NAZWA
getlogin, getlogin_r, cuserid  \- odczytanie nazwy użytkownika
.SH SKŁADNIA
\fB#include <unistd.h>\fP
.PP
\fBchar *getlogin(void);\fP
.br
\fBint getlogin_r(char *\fP\fIbuf\fP\fB, size_t \fP\fIbufsize\fP\fB);\fP
.PP
\fB#include <stdio.h>\fP
.PP
\fBchar *cuserid(char *\fP\fIstring\fP\fB);\fP
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
.\" Deprecated: _REENTRANT ||
\fBgetlogin_r\fP(): _POSIX_C_SOURCE\ >=\ 199506L
.PP
\fBcuserid\fP():
.nf
    Od glibc 2.24:
        (_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
        || _GNU_SOURCE
    Do glibc 2.23 włącznie:
        _XOPEN_SOURCE
.fi
.SH OPIS
\fBgetlogin\fP() zwraca wskaźnik do napisu zawierającego nazwę użytkownika
zalogowanego na terminalu sterującym procesu lub wskaźnik null, jeśli nie
można tej informacji określić. Napis jest alokowany statycznie i może zostać
nadpisany przez późniejsze wywołanie tej funkcji lub funkcji \fBcuserid\fP().
.PP
\fBgetlogin_r\fP() zwraca tę samą nazwę użytkownika w tablicy \fIbuf\fP o
rozmiarze \fIbufsize\fP.
.PP
\fBcuserid\fP() zwraca wskaźnik do napisu zawierającego nazwę użytkownika
skojarzonego z efektywnym identyfikatorem użytkownika procesu. Jeśli
\fIstring\fP nie jest wskaźnikiem null, to powinien być tablicą, która może
pomieścić co najmniej \fBL_cuserid\fP znaków; napis jest zwracany w tej
tablicy. W przeciwnym przypadku, zwracany jest wskaźnik do napisu w obszarze
pamięci statycznej. Napis jest alokowany statycznie i może zostać nadpisany
przez późniejsze wywołania tej funkcji lub funkcji \fBgetlogin\fP().
.PP
Makro \fBL_cuserid\fP jest stałą całkowitą określającą, jaka duża tablica może
być potrzebna do przechowania nazwy użytkownika. \fBL_cuserid\fP jest
zadeklarowane w \fI<stdio.h>\fP.
.PP
Funkcje te pozwalają programowi pozytywnie zidentyfikować użytkownika, na
prawach którego działa program (\fBcuserid\fP()) lub użytkownika zalogowanego w
danej sesji (\fBgetlogin\fP(). (Mogą to być różni użytkownicy, gdy wchodzą w
grę programy z ustawionym bitem set\-user\-ID).
.PP
W większości zastosowań, bardziej przydatne dla określenia, kim jest
użytkownik, jest posługiwanie się zmienną środowiskową \fBLOGNAME\fP. Jest to
bardziej elastyczne, właśnie dlatego, że użytkownik może dowolnie ustawić
\fBLOGNAME\fP.
.SH "WARTOŚĆ ZWRACANA"
\fBgetlogin\fP() po pomyślnym zakończeniu zwraca wskaźnik do nazwy
użytkownika. W przypadku błędu zwracany jest NULL,a \fIerrno\fP jest ustawiane
na wartość wskazującą na rodzaj błędu. \fBgetlogin_r\fP() zwraca 0, jeśli
skończy się sukcesem, lub wartość niezerową, gdy wystąpi błąd.
.SH BŁĘDY
POSIX specifies:
.TP 
\fBEMFILE\fP
Zostało osiągnięte ograniczenie na liczbę otwartych deskryptorów plików dla
procesu.
.TP 
\fBENFILE\fP
Zostało osiągnięte systemowe ograniczenie na całkowitą liczbę otwartych
plików.
.TP 
\fBENXIO\fP
Proces wywołujący nie ma przypisanego terminala sterującego.
.TP 
\fBERANGE\fP
(getlogin_r) Długość nazwy użytkownika, łącznie z końcowym znakiem null,
("\e0") jest większa niż \fIbufsize\fP.
.PP
Linux/glibc also has:
.TP 
\fBENOENT\fP
Brak odpowiedniego wpisu w pliku utmp.
.TP 
\fBENOMEM\fP
Zabrakło pamięci na przydzielenie struktury passwd.
.TP 
\fBENOTTY\fP
Standardowe wejście nie odnosi się do terminala (patrz BŁĘDY IMPLEMENTACJI).
.SH PLIKI
.TP 
\fI/etc/passwd\fP
baza danych o hasłach
.TP 
\fI/var/run/utmp\fP
(tradycyjnie \fI/etc/utmp\fP; niektóre wersje libc używały \fI/var/adm/utmp\fP)
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lb lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBgetlogin\fP()
T}	Bezpieczeństwo wątkowe	T{
MT\-Unsafe race:getlogin race:utent
.br
sig:ALRM timer locale
T}
T{
\fBgetlogin_r\fP()
T}	Bezpieczeństwo wątkowe	T{
MT\-Unsafe race:utent sig:ALRM timer
.br
locale
T}
T{
\fBcuserid\fP()
T}	Bezpieczeństwo wątkowe	MT\-Unsafe race:cuserid/!string locale
.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ż \fBgetlogin\fP() i \fBgetlogin_r\fP() wywołują te funkcje, stąd
dla przypomnienia użytkownikom używamy race:utent.
.SH "ZGODNE Z"
\fBgetlogin\fP() i \fBgetlogin_r\fP(): POSIX.1\-2001, POSIX.1\-2008.
.PP
System V zawiera funkcję \fBcuserid\fP(), która posługuje się raczej
rzeczywistym identyfikatorem użytkownika niż efektywnym identyfikatorem
użytkownika. Funkcję \fBcuserid\fP() włączono w wersji POSIX z roku 1988, ale
usunięto ją w wersji z roku 1990. Była obecna w SUSv2, ale została usunięta
w POSIX.1\-2001.
.PP
OpenBSD ma \fBgetlogin\fP() i \fBsetlogin\fP() oraz nazwę użytkownika powiązanego
z sesją, nawet jeśli nie ma on terminala sterującego.
.SH BŁĘDY
Na nieszczęście, raczej łatwo jest ogłupić \fBgetlogin\fP(). Czasem nie działa
ona wcale, gdyż jakiś program namieszał w pliku utmp. Często zwraca jedynie
pierwszych 8 znaków nazwy logowania. Ponadto użytkownik obecnie zalogowany
na terminalu sterującym programu nie musi być użytkownikiem, który ten
program uruchomił. Ze względów związanych z bezpieczeństwem, należy unikać
\fBgetlogin\fP().
.PP
Proszę zauważyć, że glibc nie przestrzega wymagań POSIX i używa \fIstdin\fP
zamiast \fI/dev/tty\fP. Jest to błąd. (Inne nowe systemy, takie jak SunOS 5.8,
HP\-UX 11.11 i FreeBSD 4.8, zwracają nazwę  zalogowanego użytkownika także
wtedy, gdy \fIstdin\fP został przekierowany).
.PP
Nikt dokładnie nie wie, co robi \fBcuserid\fP(); należy jej unikać w
przenośnych programach. W ogóle należy jej unikać i używać zamiast niej
\fIgetpwuid(geteuid())\fP, jeśli jest to to, czego potrzeba. \fBNie należy
używać\fP \fBcuserid\fP().
.SH "ZOBACZ TAKŻE"
\fBlogname\fP(1), \fBgeteuid\fP(2), \fBgetuid\fP(2), \fButmp\fP(5)
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 5.10 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ą:
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
.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 .
