1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #if defined(LIBC_SCCS) && !defined(lint)
8: static char sccsid[] = "@(#)seekdir.c 5.2 (Berkeley) 3/9/86";
9: #endif LIBC_SCCS and not lint
10:
11: #include <sys/param.h>
12: #include <sys/dir.h>
13:
14: /*
15: * seek to an entry in a directory.
16: * Only values returned by "telldir" should be passed to seekdir.
17: */
18: void
19: seekdir(dirp, loc)
20: register DIR *dirp;
21: long loc;
22: {
23: long curloc, base, offset;
24: struct direct *dp;
25: extern long lseek();
26:
27: curloc = telldir(dirp);
28: if (loc == curloc)
29: return;
30: base = loc & ~(DIRBLKSIZ - 1);
31: offset = loc & (DIRBLKSIZ - 1);
32: (void) lseek(dirp->dd_fd, base, 0);
33: dirp->dd_loc = 0;
34: while (dirp->dd_loc < offset) {
35: dp = readdir(dirp);
36: if (dp == NULL)
37: return;
38: }
39: }
Defined functions
Defined variables
sccsid
defined in line
8;
never used