telldir()/seekdir() confusion
Jp Calderone
exarkun at intarweb.us
Tue Jul 8 12:23:57 PDT 2003
I'm trying to work out some inconsistent behavior in my app across
platforms. On FreeBSD, seekdir() doesn't seem to behave as I expect it to.
Here's a short program that demonstrates my confusion:
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
int main() {
DIR* dirp;
off_t pos;
struct dirent* ent;
dirp = opendir(".");
if (!dirp)
perror("opendir");
ent = readdir(dirp);
if (!ent)
perror("readdir");
pos = telldir(dirp);
if (pos == -1)
perror("telldir");
ent = readdir(dirp);
if (!ent)
perror("readdir 2");
seekdir(dirp, pos);
printf("First telldir:%d\nSecond telldir:%d\n", pos, telldir(dirp));
return 0;
}
On other platforms, the first and second telldir() return the same value.
On the two FreeBSD machines I've tried it on, the first telldir() returns 1
and the second returns 0.
Can anyone explain this?
Thanks in advance,
Jp
More information about the freebsd-hackers
mailing list