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