xref: /btstack/3rd-party/tinydir/README.md (revision 98cd9557da96230d06c9149ea591e10cc3829288)
1*98cd9557SMatthias RingwaldTinyDir
2*98cd9557SMatthias Ringwald=======
3*98cd9557SMatthias Ringwald[![Build Status](https://travis-ci.org/cxong/tinydir.svg?branch=master)](https://travis-ci.org/cxong/tinydir)
4*98cd9557SMatthias Ringwald[![Release](http://img.shields.io/github/release/cxong/tinydir.svg)](https://github.com/cxong/tinydir/releases/latest)
5*98cd9557SMatthias Ringwald
6*98cd9557SMatthias RingwaldLightweight, portable and easy to integrate C directory and file reader. TinyDir wraps dirent for POSIX and FindFirstFile for Windows.
7*98cd9557SMatthias Ringwald
8*98cd9557SMatthias RingwaldWindows unicode is supported by defining `UNICODE` and `_UNICODE` before including `tinydir.h`.
9*98cd9557SMatthias Ringwald
10*98cd9557SMatthias RingwaldExample
11*98cd9557SMatthias Ringwald=======
12*98cd9557SMatthias Ringwald
13*98cd9557SMatthias RingwaldThere are two methods. Error checking omitted:
14*98cd9557SMatthias Ringwald
15*98cd9557SMatthias Ringwald```C
16*98cd9557SMatthias Ringwaldtinydir_dir dir;
17*98cd9557SMatthias Ringwaldtinydir_open(&dir, "/path/to/dir");
18*98cd9557SMatthias Ringwald
19*98cd9557SMatthias Ringwaldwhile (dir.has_next)
20*98cd9557SMatthias Ringwald{
21*98cd9557SMatthias Ringwald	tinydir_file file;
22*98cd9557SMatthias Ringwald	tinydir_readfile(&dir, &file);
23*98cd9557SMatthias Ringwald
24*98cd9557SMatthias Ringwald	printf("%s", file.name);
25*98cd9557SMatthias Ringwald	if (file.is_dir)
26*98cd9557SMatthias Ringwald	{
27*98cd9557SMatthias Ringwald		printf("/");
28*98cd9557SMatthias Ringwald	}
29*98cd9557SMatthias Ringwald	printf("\n");
30*98cd9557SMatthias Ringwald
31*98cd9557SMatthias Ringwald	tinydir_next(&dir);
32*98cd9557SMatthias Ringwald}
33*98cd9557SMatthias Ringwald
34*98cd9557SMatthias Ringwaldtinydir_close(&dir);
35*98cd9557SMatthias Ringwald```
36*98cd9557SMatthias Ringwald
37*98cd9557SMatthias Ringwald```C
38*98cd9557SMatthias Ringwaldtinydir_dir dir;
39*98cd9557SMatthias Ringwaldint i;
40*98cd9557SMatthias Ringwaldtinydir_open_sorted(&dir, "/path/to/dir");
41*98cd9557SMatthias Ringwald
42*98cd9557SMatthias Ringwaldfor (i = 0; i < dir.n_files; i++)
43*98cd9557SMatthias Ringwald{
44*98cd9557SMatthias Ringwald	tinydir_file file;
45*98cd9557SMatthias Ringwald	tinydir_readfile_n(&dir, &file, i);
46*98cd9557SMatthias Ringwald
47*98cd9557SMatthias Ringwald	printf("%s", file.name);
48*98cd9557SMatthias Ringwald	if (file.is_dir)
49*98cd9557SMatthias Ringwald	{
50*98cd9557SMatthias Ringwald		printf("/");
51*98cd9557SMatthias Ringwald	}
52*98cd9557SMatthias Ringwald	printf("\n");
53*98cd9557SMatthias Ringwald}
54*98cd9557SMatthias Ringwald
55*98cd9557SMatthias Ringwaldtinydir_close(&dir);
56*98cd9557SMatthias Ringwald```
57*98cd9557SMatthias Ringwald
58*98cd9557SMatthias RingwaldSee the `/samples` folder for more examples, including an interactive command-line directory navigator.
59*98cd9557SMatthias Ringwald
60*98cd9557SMatthias RingwaldLanguage
61*98cd9557SMatthias Ringwald========
62*98cd9557SMatthias Ringwald
63*98cd9557SMatthias RingwaldANSI C, or C90.
64*98cd9557SMatthias Ringwald
65*98cd9557SMatthias RingwaldPlatforms
66*98cd9557SMatthias Ringwald=========
67*98cd9557SMatthias Ringwald
68*98cd9557SMatthias RingwaldPOSIX and Windows supported. Open to the possibility of supporting other platforms.
69*98cd9557SMatthias Ringwald
70*98cd9557SMatthias RingwaldLicense
71*98cd9557SMatthias Ringwald=======
72*98cd9557SMatthias Ringwald
73*98cd9557SMatthias RingwaldSimplified BSD; if you use tinydir you can comply by including `tinydir.h` or `COPYING` somewhere in your package.
74*98cd9557SMatthias Ringwald
75*98cd9557SMatthias RingwaldKnown Limitations
76*98cd9557SMatthias Ringwald=================
77*98cd9557SMatthias Ringwald
78*98cd9557SMatthias Ringwald- Limited path and filename sizes
79*98cd9557SMatthias Ringwald- [Possible race condition bug if folder being read has changing content](https://github.com/cxong/tinydir/issues/13)
80