Re: [Yaffs] seekdir failure

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Anthony Ashfield
Date:  
To: Charles Manning, yaffs
CC: Anthony Ashfield
Subject: Re: [Yaffs] seekdir failure
I use this simple program to test seekdir

#include <assert.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/types.h>


int main(int argc, char** argv)
{
    off_t offset;
    DIR* pDir;
    struct dirent* pDirent;


    assert (argc == 2);
    printf ("Opening dir: %s\n", argv[1]);
    pDir = opendir(argv[1]);


    pDirent = readdir(pDir);
    printf("1st entry: %s \n", pDirent->d_name);
    pDirent = readdir(pDir);
    printf("2nd entry: %s \n", pDirent->d_name);
    pDirent = readdir(pDir);
    if (pDirent == NULL)
        return 1;
    printf("3rd entry: %s\n", pDirent->d_name);
    offset = telldir(pDir);
    printf("The offset (telldir) for the 4th entry is %d,\n", offset);
    pDirent = readdir(pDir);
    if (pDirent == NULL)
        return 1;
    printf("4th entry: %s\n", pDirent->d_name);
    pDirent = readdir(pDir);
    if (pDirent == NULL)
        return 1;
    printf("5th entry: %s\n", pDirent->d_name);
    pDirent = readdir(pDir);
    if (pDirent == NULL)
        return 1;
    printf("6th entry: %s\n", pDirent->d_name);
    printf("Using seekdir to get back to the 4th entry\n");
    seekdir(pDir, offset);
    pDirent = readdir(pDir);
    printf("4th entry (using seekdir): %s\n", pDirent->d_name);
    return 0;
}


and the output is

root@amber:/mnt/yaffs> ls
lost+found
root@amber:/mnt/yaffs> touch a b c d e f g
root@amber:/mnt/yaffs> ls -al
total 12
drw-rw-rw-  1 root root 2048 Jan  1 00:03 .
drwxr-xr-x  4 root root 4096 Mar 27  2007 ..
-rw-r--r--  1 root root    0 Jan  1 00:03 a
-rw-r--r--  1 root root    0 Jan  1 00:03 b
-rw-r--r--  1 root root    0 Jan  1 00:03 c
-rw-r--r--  1 root root    0 Jan  1 00:03 d
-rw-r--r--  1 root root    0 Jan  1 00:03 e
-rw-r--r--  1 root root    0 Jan  1 00:03 f
-rw-r--r--  1 root root    0 Jan  1 00:03 g
drw-rw-rw-  1 root root 2048 Jan  1 00:03 lost+found
root@amber:/mnt/yaffs> seekDirTest .
Opening dir: .
1st entry: .
2nd entry: ..
3rd entry: g
The offset (telldir) for the 4th entry is 3,
4th entry: f
5th entry: e
6th entry: d
Using seekdir to get back to the 4th entry
4th entry (using seekdir): f
root@amber:/mnt/yaffs> rm g
root@amber:/mnt/yaffs> seekDirTest .
Opening dir: .
1st entry: .
2nd entry: ..
3rd entry: f
The offset (telldir) for the 4th entry is 3,
4th entry: e
5th entry: d
6th entry: c
Using seekdir to get back to the 4th entry
4th entry (using seekdir): f
root@amber:/mnt/yaffs>


After deleting g, the 4th entry is f, but supposed to be e.

Anthony






---------------------------------
Now that's room service! Choose from over 150,000 hotels
in 45,000 destinations on Yahoo! Travel to find your fit.