1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2011-06-02     Bernard      first version
9  * 2020-04-12     Jianjia Ma   add msh cmd
10  */
11 #include <dfs_file.h>
12 #include <unistd.h>
13 #include <stdio.h>
14 #include <sys/stat.h>
15 #include <sys/statfs.h>
16 
seekdir_test(void)17 void seekdir_test(void)
18 {
19     DIR * dirp;
20     long save3 = 0;
21     int i = 0;
22     struct dirent *dp;
23 
24     dirp = opendir ("/");
25     save3 = telldir(dirp);
26     for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp))
27     {
28         rt_kprintf("direntry: %s\n", dp->d_name);
29 
30         /* save the pointer of the third directory */
31         if (i++ == 3)
32         {
33             save3 = telldir(dirp);
34         }
35     }
36 
37     /* get back to the third directory */
38     seekdir (dirp, save3);
39     rt_kprintf("seek dientry to: %d\n", save3);
40     for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp))
41     {
42         rt_kprintf("direntry: %s\n", dp->d_name);
43     }
44 
45     /* close the directory */
46     closedir (dirp);
47 }
48 
49 #ifdef RT_USING_FINSH
50 #include <finsh.h>
51 FINSH_FUNCTION_EXPORT(seekdir_test, perform directory seek test);
52 MSH_CMD_EXPORT(seekdir_test, perform directory seek test);
53 #endif /* RT_USING_FINSH */
54