_seekdir.c

来自「MINIX2.0操作系统源码 MINIX2.0操作系统源码」· C语言 代码 · 共 33 行

C
33
字号
/*	seekdir()					Author: Kees J. Bot
 *								24 Apr 1989
 */
#define nil 0
#include <lib.h>
#define lseek	_lseek
#define readdir	_readdir
#define seekdir	_seekdir
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <errno.h>

int seekdir(DIR *dp, off_t pos)
/* Seek to position pos in a directory. */
{
	int off;

	if (dp == nil) { errno= EBADF; return -1; }

	dp->_count= 0;
	dp->_ptr= dp->_buf;

	off= pos & (sizeof(dp->_buf) - 1);
	dp->_pos= pos - off;

	if (lseek(dp->_fd, dp->_pos, SEEK_SET) == -1) return -1;

	while (dp->_pos < pos && readdir(dp) != nil) {}

	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?