xref: /btstack/3rd-party/tinydir/README.md (revision 39127754112d635f8d55bf39817a539acc1c6e74)
1TinyDir
2=======
3[![CMake](https://github.com/cxong/tinydir/actions/workflows/cmake.yml/badge.svg)](https://github.com/cxong/tinydir/actions/workflows/cmake.yml)
4[![Release](http://img.shields.io/github/release/cxong/tinydir.svg)](https://github.com/cxong/tinydir/releases/latest)
5
6Lightweight, portable and easy to integrate C directory and file reader. TinyDir wraps dirent for POSIX and FindFirstFile for Windows.
7
8Windows unicode is supported by defining `UNICODE` and `_UNICODE` before including `tinydir.h`.
9
10Example
11=======
12
13There are two methods. Error checking omitted:
14
15```C
16tinydir_dir dir;
17tinydir_open(&dir, "/path/to/dir");
18
19while (dir.has_next)
20{
21	tinydir_file file;
22	tinydir_readfile(&dir, &file);
23
24	printf("%s", file.name);
25	if (file.is_dir)
26	{
27		printf("/");
28	}
29	printf("\n");
30
31	tinydir_next(&dir);
32}
33
34tinydir_close(&dir);
35```
36
37```C
38tinydir_dir dir;
39int i;
40tinydir_open_sorted(&dir, "/path/to/dir");
41
42for (i = 0; i < dir.n_files; i++)
43{
44	tinydir_file file;
45	tinydir_readfile_n(&dir, &file, i);
46
47	printf("%s", file.name);
48	if (file.is_dir)
49	{
50		printf("/");
51	}
52	printf("\n");
53}
54
55tinydir_close(&dir);
56```
57
58See the `/samples` folder for more examples, including an interactive command-line directory navigator.
59
60Language
61========
62
63ANSI C, or C90.
64
65Platforms
66=========
67
68POSIX and Windows supported. Open to the possibility of supporting other platforms.
69
70License
71=======
72
73Simplified BSD; if you use tinydir you can comply by including `tinydir.h` or `COPYING` somewhere in your package.
74
75Known Limitations
76=================
77
78- Limited path and filename sizes
79- [Possible race condition bug if folder being read has changing content](https://github.com/cxong/tinydir/issues/13)
80- Does not support extended-length path lengths in Windows - paths are limited to 260 characters. See <https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry>
81