43 lines
		
	
	
		
			851 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			851 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*	readdir()					Author: Kees J. Bot
 | |
|  *								24 Apr 1989
 | |
|  */
 | |
| #define nil 0
 | |
| #define readdir _readdir
 | |
| #define getdents _getdents
 | |
| #include <sys/types.h>
 | |
| #include <dirent.h>
 | |
| #include <unistd.h>
 | |
| #include <stddef.h>
 | |
| #include <stdlib.h>
 | |
| #include <errno.h>
 | |
| #include <string.h>
 | |
| 
 | |
| struct dirent *readdir(DIR *dp)
 | |
| /* Return the next entry in a directory. */
 | |
| {
 | |
| 	struct dirent *entp;
 | |
| 	int count, pos, reclen;
 | |
| 
 | |
| 	if (dp == nil) { errno= EBADF; return nil; }
 | |
| 
 | |
| 	count= dp->_count;
 | |
| 	pos= dp->_pos;
 | |
| 	if (count == 0 || pos >= count)
 | |
| 	{
 | |
| 		count= getdents(dp->_fd, (struct dirent *)dp->_buf,
 | |
| 			sizeof(dp->_buf));
 | |
| 		if (count <= 0) return nil;
 | |
| 		dp->_count= count;
 | |
| 		dp->_pos= pos= 0;
 | |
| 	}
 | |
| 	entp= (struct dirent *)&((char *)dp->_buf)[pos];
 | |
| 	reclen= entp->d_reclen;
 | |
| 	dp->_pos= pos+reclen;
 | |
| 
 | |
| 	return entp;
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * $PchId: _readdir.c,v 1.6 2005/01/27 21:46:42 philip Exp $
 | |
|  */
 | 
