daemon@hplabsc.UUCP (05/20/87)
The emulation of cuserid() for BSD systems in file "src/opts_utils.c"
is buggy. It does not emulate all the nuances of System V version
and wnewmail depends on it.
*** opt_utils.c.orig Tue May 19 16:58:11 1987
--- opt_utils.c Tue May 19 17:00:34 1987
***************
*** 43,48
#ifdef NEED_CUSERID
cuserid(uname)
char *uname;
{
--- 43,49 -----
#ifdef NEED_CUSERID
+ char *
cuserid(uname)
char *uname;
{
***************
*** 46,54
cuserid(uname)
char *uname;
{
! /** Added for compatibility with Bell systems, this is the last-ditch
! attempt to get the users login name, after getlogin() fails. It
! instantiates "uname" to the name of the user...
**/
struct passwd *password_entry, *getpwuid();
--- 47,54 -----
cuserid(uname)
char *uname;
{
! /** Added for compatibility with Bell systems,
! Check getlogin(), then the passwd file.
**/
char *name, *getlogin()
***************
*** 51,56
instantiates "uname" to the name of the user...
**/
struct passwd *password_entry, *getpwuid();
static char buf[10];
--- 51,57 -----
Check getlogin(), then the passwd file.
**/
+ char *name, *getlogin()
struct passwd *password_entry, *getpwuid();
static char buf[10];
***************
*** 54,60
struct passwd *password_entry, *getpwuid();
static char buf[10];
! password_entry = getpwuid(getuid());
strcpy(uname, password_entry->pw_name);
}
--- 55,61 -----
struct passwd *password_entry, *getpwuid();
static char buf[10];
! if(uname == NULL) uname = buf;
if( (name = getlogin() != NULL)
return strcpy(uname, name);
***************
*** 56,62
password_entry = getpwuid(getuid());
! strcpy(uname, password_entry->pw_name);
}
#endif
--- 57,67 -----
if(uname == NULL) uname = buf;
! if( (name = getlogin() != NULL)
! return strcpy(uname, name);
! else if( (password_entry = getpwuid(getuid())) != NULL)
! return strcpy(uname, password_entry->pw_name);
! return NULL;
}
#endif