blob: 01059f5b07823aa170cf26678f409fe70d80705e [file] [log] [blame]
/*
* Copyright (c) 1989, 1990 by the University of Washington
*
* For copying and distribution information, please see the file
* <copyright.h>.
*
* v1.2.2 - 11/19/91 (mmt) - added MSDOS & OS2 stuff
* v1.2.1 - 09/17/91 (bpk) - added BULL & USG stuff, thanks to Jim Sillas
* v1.2.0 - 09/17/91 (bpk) - fixed it up (thanks to synful)
* v1.1.1 - 08/30/91 (bpk) - added VMS support
*/
#include <copyright.h>
#include <stdio.h>
#include <unistd.h>
#ifndef VMS
# include <sys/types.h> /* this may/will define FD_SET etc */
# include <pmachine.h>
#endif
#ifdef NEED_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#ifndef VMS
# if defined(MSDOS) && !defined(OS2)
# ifndef CUTCP
# include <rwconf.h>
# endif
# else
# include <pwd.h>
# endif
#else
# include <jpidef.h>
# include <vms.h>
#endif
#include <pcompat.h>
#include <pauthent.h>
PAUTH get_pauth(int type)
{
static PAUTH_ST no_auth_st;
static PAUTH no_auth = NULL;
#if !defined(VMS) && !defined(MSDOS) || defined(OS2)
struct passwd *whoiampw;
#else
char username[13];
unsigned short usernamelen;
struct {
unsigned short buflen;
unsigned short itmcod;
char *bufadr;
unsigned short *retlenadr;
unsigned long null;
} jpi_itemlist;
#endif
if(no_auth == NULL) {
no_auth = &no_auth_st;
strcpy(no_auth->auth_type,"UNAUTHENTICATED");
/* find out who we are */
#ifndef VMS
#if defined(MSDOS) && !defined(OS2)
#ifndef CUTCP
if (!getconf("general", "user", no_auth->authenticator, 250)
|| (strlen (no_auth->authenticator) == 0))
#endif
strcpy(no_auth->authenticator,"nobody");
#else /* not MSDOS */
DISABLE_PFS(whoiampw = getpwuid(getuid()));
if (whoiampw == 0) strcpy(no_auth->authenticator,"nobody");
else strcpy(no_auth->authenticator, whoiampw->pw_name);
#endif /* not MSDOS */
#else
jpi_itemlist.buflen = sizeof(username);
jpi_itemlist.itmcod = JPI$_USERNAME;
jpi_itemlist.bufadr = &username;
jpi_itemlist.retlenadr = &usernamelen;
jpi_itemlist.null = 0;
if (SYS$GETJPI(0, 0, 0, &jpi_itemlist, 0, 0, 0) & 0x1)
{
username[usernamelen] = 0;
strcpy(no_auth->authenticator, username);
} else
strcpy(no_auth->authenticator, "nobody");
#endif
}
return(no_auth);
}