/* finduser.c Copyright Michael Temari 07/22/1996 All Rights Reserved */
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <utmp.h>
#include <net/gen/in.h>
#include "talk.h"
#include "finduser.h"
int find_user(name, tty)
char *name;
char *tty;
{
int fd;
int ret;
struct utmp utmp;
/* Now find out if the requested user is logged in. */
if((fd = open(UTMP, O_RDONLY)) < 0) {
perror("talkd: opening UTMP file");
return(FAILED);
}
ret = NOT_HERE;
while(read(fd, &utmp, sizeof(struct utmp)) == sizeof(struct utmp)) {
if(utmp.ut_type != USER_PROCESS) continue;
#ifdef __NBSD_LIBC
if(strncmp(utmp.ut_name, name, sizeof(utmp.ut_name))) continue;
#else
if(strncmp(utmp.ut_user, name, sizeof(utmp.ut_user))) continue;
#endif
if(*tty && strncmp(utmp.ut_line, tty, sizeof(utmp.ut_line))) continue;
strcpy(tty, utmp.ut_line);
ret = SUCCESS;
break;
close(fd);
return(ret);