remove last vestige of AT&T code; it was really gone long ago
[unix-history] / usr / src / lib / libc / gen / seekdir.c
index 135d15a..b0abff4 100644 (file)
@@ -1,39 +1,36 @@
 /*
  * Copyright (c) 1983 Regents of the University of California.
 /*
  * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)seekdir.c  5.2 (Berkeley) %G%";
-#endif LIBC_SCCS and not lint
+static char sccsid[] = "@(#)seekdir.c  5.6 (Berkeley) %G%";
+#endif /* LIBC_SCCS and not lint */
 
 #include <sys/param.h>
 
 #include <sys/param.h>
-#include <sys/dir.h>
+#include <dirent.h>
 
 /*
 
 /*
- * seek to an entry in a directory.
- * Only values returned by "telldir" should be passed to seekdir.
+ * Seek to an entry in a directory.
+ * _seekdir is in telldir.c so that it can share opaque data structures.
  */
 void
 seekdir(dirp, loc)
  */
 void
 seekdir(dirp, loc)
-       register DIR *dirp;
+       DIR *dirp;
        long loc;
 {
        long loc;
 {
-       long curloc, base, offset;
-       struct direct *dp;
-       extern long lseek();
 
 
-       curloc = telldir(dirp);
-       if (loc == curloc)
-               return;
-       base = loc & ~(DIRBLKSIZ - 1);
-       offset = loc & (DIRBLKSIZ - 1);
-       (void) lseek(dirp->dd_fd, base, 0);
-       dirp->dd_loc = 0;
-       while (dirp->dd_loc < offset) {
-               dp = readdir(dirp);
-               if (dp == NULL)
-                       return;
-       }
+       _seekdir(dirp, loc);
 }
 }