1.\" Copyright (c) 1989, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" %sccs.include.redist.roff% 5.\" 6.\" @(#)getlogin.2 8.1 (Berkeley) 06/09/93 7.\" 8.Dd 9.Dt GETLOGIN 2 10.Os BSD 4.2 11.Sh NAME 12.Nm getlogin , 13.Nm setlogin 14.Nd get/set login name 15.Sh SYNOPSIS 16.Fd #include <unistd.h> 17.Ft char * 18.Fn getlogin void 19.Ft int 20.Fn setlogin "const char *name" 21.Sh DESCRIPTION 22The 23.Fn getlogin 24routine 25returns the login name of the user associated with the current session, 26as previously set by 27.Fn setlogin . 28The name is normally associated with a login shell 29at the time a session is created, 30and is inherited by all processes descended from the login shell. 31(This is true even if some of those processes assume another user ID, 32for example when 33.Xr su 1 34is used.) 35.Pp 36.Fn Setlogin 37sets the login name of the user associated with the current session to 38.Fa name . 39This call is restricted to the super-user, and 40is normally used only when a new session is being created on behalf 41of the named user 42(for example, at login time, or when a remote shell is invoked). 43.Sh RETURN VALUES 44If a call to 45.Fn getlogin 46succeeds, it returns a pointer to a null-terminated string in a static buffer. 47If the name has not been set, it returns 48.Dv NULL . 49If a call to 50.Fn setlogin 51succeeds, a value of 0 is returned. If 52.Fn setlogin 53fails, a value of -1 is returned and an error code is 54placed in the global location 55.Va errno . 56.Sh ERRORS 57The following errors may be returned by these calls: 58.Bl -tag -width Er 59.It Bq Er EFAULT 60The 61.Fa name 62parameter gave an 63invalid address. 64.It Bq Er EINVAL 65The 66.Fa name 67parameter 68pointed to a string that was too long. 69Login names are limited to 70.Dv MAXLOGNAME 71(from 72.Ao Pa sys/param.h Ac ) 73characters, currently 12. 74.It Bq Er EPERM 75The caller tried to set the login name and was not the super-user. 76.El 77.Sh SEE ALSO 78.Xr setsid 2 79.Sh BUGS 80Login names are limited in length by 81.Fn setlogin . 82However, lower limits are placed on login names elsewhere in the system 83.Pf ( Dv UT_NAMESIZE 84in 85.Ao Pa utmp.h Ac ) . 86.Pp 87In earlier versions of the system, 88.Fn getlogin 89failed unless the process was associated with a login terminal. 90The current implementation (using 91.Fn setlogin ) 92allows getlogin to succeed even when the process has no controlling terminal. 93In earlier versions of the system, the value returned by 94.Fn getlogin 95could not be trusted without checking the user ID. 96Portable programs should probably still make this check. 97.Sh HISTORY 98The 99.Fn getlogin 100function first appeared in 4.4BSD. 101