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)17void 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