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;
 | 
						|
}
 |