27 lines
		
	
	
		
			595 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			595 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*	asyn_synch() - step back to synch		Author: Kees J. Bot
 | |
|  *								7 Jul 1997
 | |
|  */
 | |
| #include "asyn.h"
 | |
| 
 | |
| int asyn_synch(asynchio_t *asyn, int fd)
 | |
| /* No more asynchronous operations on this file descriptor. */
 | |
| {
 | |
| 	asynfd_t *afd;
 | |
| 	int op;
 | |
| 
 | |
| 	if ((unsigned) fd >= FD_SETSIZE) { errno= EBADF; return -1; }
 | |
| 	afd= &asyn->asyn_afd[fd];
 | |
| 
 | |
| 	for (op= 0; op < SEL_NR; op++) {
 | |
| 		if (afd->afd_state[op] != IDLE) {
 | |
| 			errno= EAGAIN;
 | |
| 			return -1;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/* Make sure the file flags are as they once were. */
 | |
| 	if (afd->afd_seen && fcntl(fd, F_SETFL, afd->afd_flags) < 0) return -1;
 | |
| 	afd->afd_seen= 0;
 | |
| 	return 0;
 | |
| }
 | 
