31 lines
		
	
	
		
			642 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			642 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /* Library routines
 | |
|  *
 | |
|  * Porting to Minix 2.0.0
 | |
|  * Author:	Giovanni Falzoni <gfalzoni@pointest.com>
 | |
|  */
 | |
| #include <sys/types.h>
 | |
| #include <fcntl.h>
 | |
| #include <string.h>
 | |
| #include <errno.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| /*
 | |
|  *	Name:		int flock(int fd, int mode);
 | |
|  *	Function:	Implements the flock function in Minix.
 | |
|  */
 | |
| int flock(int fd, int mode)
 | |
| {
 | |
|   struct flock lck;
 | |
|   register int retcode;
 | |
| 
 | |
|   memset((void *) &lck, 0, sizeof(struct flock));
 | |
|   lck.l_type = mode & ~LOCK_NB;
 | |
|   lck.l_pid = getpid();
 | |
|   if ((retcode = fcntl(fd, mode & LOCK_NB ? F_SETLK : F_SETLKW, &lck)) < 0 && errno == EAGAIN)
 | |
| 	errno = EWOULDBLOCK;
 | |
|   return retcode;
 | |
| }
 | |
| 
 | |
| /** flock.c **/
 | 
