[comp.os.minix] getlogin

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

EFTH MINIX report #39  - August 1988 -  getlogin(3)


There follows an implementation of getlogin(3) for Minix.


----------------------------------------------------------
echo x - getlogin.3
gres '^X' '' > getlogin.3 << '/'
XSUBROUTINES
X    getlogin(3)		- get the current login name
X
XINVOCATION
X    char *get_login()
X
XEXPLANATION
X    The real user's name (as opposed to the effective user name)
X    is copied to local static storage.
X
XRESULTS
X    o/w  : A pointer to the real user's name.
X    NULL : Error.
X
XREFERENCES
X    who(1), cuserid(3)
X
XPROBLEMS
X    Getlogin(3) should check /usr/adm/wtmp, in the same manner
X    as the command "who am i". For efficiency this is not done.
X    Therefore, getlogin(3) is incorrect after a su(1), or if
X    multiple users share a user ID.
/
echo x - cuserid.3
gres '^X' '' > cuserid.3 << '/'
XSUBROUTINES
X    cuserid(3)		- get the current effective user name
X
XINVOCATION
X    #include <stdio.h>
X
X    char *cuserid( user_name )
X      char *user_name;
X
XEXPLANATION
X    The current effective user name is copied to the storage pointed
X    to by <user_name>. It will be '\0' terminated. If <user_name> is
X    NULL then local static storage is used, otherwise <user_name>
X    must point to storage of at least L_cuserid characters.
X
XRESULTS
X    o/w  : A pointer to the effective user's name.
X    NULL : Error. If <user_name> was not NULL then it now points
X           to "\0".
X
XFILES
X    /etc/passwd		user login names
X
XREFERENCES
X    whoami(1), getlogin(3)
/
echo x - getlogin.c
gres '^X' '' > getlogin.c << '/'
X/*  getlogin(3)
X *
X *  Author: Terrence W. Holm          Aug. 1988
X */
X
X#include <stdio.h>
X#include <pwd.h>
X
X#ifndef  L_cuserid
X#define  L_cuserid   9
X#endif
X
Xextern struct passwd *getpwuid();
X
X
Xchar *getlogin()
X  {
X  static  char   userid[ L_cuserid ];
X  struct passwd *pw_entry;
X
X  pw_entry = getpwuid( getuid() );
X
X  if ( pw_entry == NULL )
X    return( NULL );
X
X  strcpy( userid, pw_entry->pw_name );
X
X  return( userid );
X  }
/
echo x - cuserid.c
gres '^X' '' > cuserid.c << '/'
X/*  cuserid(3)
X *
X *  Author: Terrence W. Holm          Sept. 1987
X */
X
X#include <stdio.h>
X#include <pwd.h>
X
X#ifndef  L_cuserid
X#define  L_cuserid   9
X#endif
X
Xextern struct passwd *getpwuid();
X
X
Xchar *cuserid( user_name )
X  char *user_name;
X
X  {
X  static  char   userid[ L_cuserid ];
X  struct passwd *pw_entry;
X
X  if ( user_name == NULL )
X    user_name = userid;
X
X  pw_entry = getpwuid( geteuid() );
X
X  if ( pw_entry == NULL )
X    {
X    *user_name = '\0';
X    return( NULL );
X    }
X
X  strcpy( user_name, pw_entry->pw_name );
X
X  return( user_name );
X  }
/
----------------------------------------------------------

		Edwin L. Froese
		  uw-beaver!ubc-cs!mprg!handel!froese

		Terrence W. Holm
		  uw-beaver!uvicctr!tholm