getlogin_r(3C)




NAME

     getlogin, getlogin_r - get login name


SYNOPSIS

     #include <unistd.h>

     char *getlogin(void);

     char *getlogin_r(char *name, int namelen);

  POSIX
     cc [ flag ... ] file... -D_POSIX_PTHREAD_SEMANTICS [ library ... ]

     int getlogin_r(char *name, size_t namesize);


DESCRIPTION

     The getlogin() function returns a pointer to the login  name
     as  found  in  /var/adm/utmpx. It may be used in conjunction
     with getpwnam(3C) to locate the correct password file  entry
     when the same user ID is shared by several login names.

     If getlogin()  is  called  within  a  process  that  is  not
     attached  to  a  terminal,  it  returns  a null pointer. The
     correct procedure for determining the login name is to  call
     cuserid(3C),  or  to call getlogin() and if it fails to call
     getpwuid(3C).

     The getlogin_r() function has the same functionality as get-
     login()  except  that  the  caller must supply a buffer name
     with length namelen to store the result.   The  name  buffer
     must   be  at  least  _POSIX_LOGIN_NAME_MAX  bytes  in  size
     (defined  in  <limits.h>).  The  POSIX  version  (see  stan-
     dards(5)) of getlogin_r() takes a namesize parameter of type
     size_t.


RETURN VALUES

     Upon successful completion, getlogin() returns a pointer  to
     the  login  name  or a null pointer if the user's login name
     cannot be found.  Otherwise it returns a  null  pointer  and
     sets errno to indicate the error.

     The POSIX getlogin_r() returns 0 if successful, or the error
     number upon failure.


ERRORS

     The getlogin() function may fail if:

     EMFILE
           There are OPEN_MAX file descriptors currently open  in
           the calling process.

     ENFILE
           The maximum allowable number  of  files  is  currently
           open in the system.

     ENXIO The calling process has no controlling terminal.

     The getlogin_r() function will fail if:

     ERANGE
           The size of the buffer is smaller than the  result  to
           be returned.

     EINVAL
           And entry for the current user was not  found  in  the
           /var/adm/utmpx file.


USAGE

     The return value may point to static data whose  content  is
     overwritten by each call.

     Three names associated  with  the  current  process  can  be
     determined:  getpwuid(geteuid()) returns the name associated
     with the  effective  user  ID  of  the  process;  getlogin()
     returns the name associated with the current login activity;
     and getpwuid(getuid()) returns the name associated with  the
     real user ID of the process.


FILES

     /var/adm/utmpx
           user access and administration information


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | See NOTES below.            |
    |_____________________________|_____________________________|


SEE ALSO

     geteuid(2),    getuid(2),     cuserid(3C),     getgrnam(3C),
     getpwnam(3C),  getpwuid(3C),  utmpx(4), attributes(5), stan-
     dards(5)


NOTES

     When compiling multithreaded programs, see  Intro(3),  Notes
     On Multithreaded Applications.

     The getlogin() function is unsafe in multithreaded  applica-
     tions.  The getlogin_r() function should be used instead.
     Solaris 2.4 and earlier releases provided a getlogin_r()  as
     specified  in  POSIX.1c Draft 6. The final POSIX.1c standard
     changed the interface as described above.  Support  for  the
     Draft 6 interface is provided for compatibility only and may
     not be supported in future releases.  New  applications  and
     libraries should use the POSIX standard interface.


Man(1) output converted with man2html