45 lines
		
	
	
		
			906 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			906 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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;
 | |
| 	if(strncmp(utmp.ut_user, name, sizeof(utmp.ut_user))) continue;
 | |
| 	if(*tty && strncmp(utmp.ut_line, tty, sizeof(utmp.ut_line))) continue;
 | |
| 	strcpy(tty, utmp.ut_line);
 | |
| 	ret = SUCCESS;
 | |
| 	break;
 | |
|    }
 | |
| 
 | |
|    close(fd);
 | |
| 
 | |
|    return(ret);
 | |
| }
 | 
