[comp.os.minix] cuserid

tholm@uvicctr.UUCP (Terrence W. Holm) (05/05/88)

EFTH Minix report #6  - May 1988 -  cuserid(3)


This is an implementation of cuserid(3) that we
wrote for Minix. Please consider this a public
domain program.

A "man" page is included.


echo x - cuserid.3
gres '^X' '' > cuserid.3 << '/'
XNAME
X    cuserid(3)		- get the current real user name
X
XSYNOPSIS
X    char *cuserid( buffer )
X      char *buffer;
X
XDESCRIPTION
X    The current user name is copied to "buffer". It will be NULL
X    terminated. If "buffer" is NULL then an internal static
X    buffer is used. In either case, the value of this call is
X    a pointer to the real user's login name.
X
X    On error conditions NULL is returned and *buffer is set
X    to '\0' (if it is not NULL itself).
X
XFILES
X    /etc/passwd		user login names
X
XSEE ALSO
X    whoami(1)
/
echo x - cuserid.c
gres '^X' '' > cuserid.c << '/'
X/****************************************************************/
X/*								*/
X/*	cuserid.c						*/
X/*								*/
X/*		Get the current user name.			*/
X/*								*/
X/****************************************************************/
X/*   origination        1987-Sep-18              T. Holm	*/
X/****************************************************************/
X
X
X#include <stdio.h>
X#include <pwd.h>
X
X
X#define   USERID_SIZE   20
X
X
Xstruct passwd *getpwuid();
X
X
Xstatic  char  _userid[ USERID_SIZE ];
X
X
X
X/****************************************************************/
X/*								*/
X/*	cuserid( buffer )					*/
X/*								*/
X/* 		The current user name is copied to "buffer". 	*/
X/*		It will be NULL terminated. If "buffer" is 	*/
X/*		NULL then an internal static buffer is used. 	*/
X/*								*/
X/*		In either case, the value of this call is	*/
X/*		a pointer to the user's login name.		*/
X/*								*/
X/*		On error conditions NULL is returned and 	*/
X/*		*buffer is set to '\0' (if it is not NULL).	*/
X/*								*/
X/*		Note that there is no /etc/utmp file under 	*/
X/*		Minix, so the password file is used to 		*/
X/*		determine the name. The only restriction this 	*/
X/*		imposes is that users must have unique id 	*/
X/*		numbers (not really a restriction).		*/
X/*								*/
X/****************************************************************/
X
X
Xchar *cuserid( buffer )
X  char *buffer;
X
X  {
X  struct passwd *pw_entry;
X
X  if ( buffer == NULL )
X    buffer = _userid;
X
X  pw_entry = getpwuid( getuid() );
X
X  if ( pw_entry == NULL )
X    {
X    *buffer = '\0';
X    return( NULL );
X    }
X
X  strcpy( buffer, pw_entry->pw_name );
X
X  return( buffer );
X  }
/
--------------------------------------------------------------------
               Edwin L. Froese
                  uw-beaver!ubc-vision!mprg!handel!froese

               Terrence W. Holm
                  uw-beaver!uvicctr!sirius!tholm