NAME

     getlogin, cuserid - get user name


SYNOPSIS

     #include <unistd.h>

     char * getlogin ( void );

     #include <stdio.h>

     char * cuserid ( char *string );


DESCRIPTION

     getlogin returns a pointer to a string containing  the  name
     of  the  user  logged  in on the controlling terminal of the
     process, or a null pointer if  this  information  cannot  be
     determined.  The string is statically allocated and might be
     overwritten on subsequent  calls  to  this  function  or  to
     cuserid.

     cuserid returns a pointer to a string containing a user name
     associated  with  the  effective user ID of the process.  If
     string is not a null pointer, it should be an array that can
     hold  at  least L_cuserid characters; the string is returned
     in this array.  Otherwise, a pointer to a string in a static
     area  is  returned.  This string is statically allocated and
     might be overwritten on subsequent calls to this function or
     to getlogin.

     The macro L_cuserid is an integer  constant  that  indicates
     how  long  an  array  you  might  need to store a user name.
     L_cuserid is declared in stdio.h.

     These functions let your  program  identify  positively  the
     user who is running (cuserid) or the user who logged in this
     session (getlogin).  (These can differ when setuid  programs
     are  involved.)   The  user cannot do anything to fool these
     functions.

     For most purposes, it is more useful to use the  environment
     variable  LOGNAME to find out who the user is.  This is more
     flexible precisely because the user can  set  LOGNAME  arbi-
     trarily.


ERRORS

     ENOMEM
          Insufficient memory to allocate passwd structure.


FILES

     /etc/passwd             password database file
     /etc/utmp (or /var/adm/utmp,  or  wherever  your  utmp  file
     lives  these days - the proper location depends on your libc
     version)


CONFORMING TO

     POSIX.1.  System V has a cuserid  function  which  uses  the
     real  user ID rather than the effective user ID. The cuserid
     function was included in the  1988  version  of  POSIX,  but
     removed from the 1990 version.


BUGS

     Unfortunately, it is often rather easy to  fool  getlogin().
     Sometimes  it  does  not  work  at all, because some program
     messed up the utmp file. Often, it gives only  the  first  8
     characters  of  the login name. The user currently logged in
     on the controlling tty of our program need not be  the  user
     who started it.

     Nobody knows precisely what cuserid() does  -  avoid  it  in
     portable    programs   -   avoid   it   altogether   -   use
     getpwuid(geteuid()) instead, if that is what you  meant.  DO
     NOT USE cuserid().


SEE ALSO

     geteuid(2), getuid(2)