seekdir.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. void seekdir_test(void)
  17. {
  18. DIR * dirp;
  19. long save3 = 0;
  20. int i = 0;
  21. struct dirent *dp;
  22. dirp = opendir ("/");
  23. save3 = telldir(dirp);
  24. for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp))
  25. {
  26. rt_kprintf("direntry: %s\n", dp->d_name);
  27. /* save the pointer of the third directory */
  28. if (i++ == 3)
  29. {
  30. save3 = telldir(dirp);
  31. }
  32. }
  33. /* get back to the third directory */
  34. seekdir (dirp, save3);
  35. rt_kprintf("seek dientry to: %d\n", save3);
  36. for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp))
  37. {
  38. rt_kprintf("direntry: %s\n", dp->d_name);
  39. }
  40. /* close the directory */
  41. closedir (dirp);
  42. }
  43. #ifdef RT_USING_FINSH
  44. #include <finsh.h>
  45. FINSH_FUNCTION_EXPORT(seekdir_test, perform directory seek test);
  46. MSH_CMD_EXPORT(seekdir_test, perform directory seek test);
  47. #endif /* RT_USING_FINSH */