I'm trying to do a simple search and list files in a directory. This is my code and for some reason it doesn't find any files:
what am I doing wrong?
1 | void search_for_files(string search_criteria="*.htm") |
2 | { |
3 | al_ffblk info; |
4 | |
5 | string gimp_string = ""; |
6 | |
7 | if (al_findfirst(search_criteria.c_str(), &info, 0) == 0) |
8 | { |
9 | do |
10 | { |
11 | gimp_string = ToString(info.name); |
12 | allegro_message(gimp_string.c_str()); |
13 | } while (al_findnext(&info) == 0); |
14 | } |
15 | else allegro_message("no files found"); |
16 | |
17 | al_findclose(&info); |
18 | } |
Try specifying an absolute path, IE: "C:\*.htm", also, keep in mind these don't search recursively, so if you have folders IN whichever folder you're running this, it won't work properly.
what am I doing wrong?
What almost everyone does wrong :
al_findfirst(search_criteria.c_str(), &info, 0)
By passing 0, you are exclusing all files that have any attributes set (keep reading http://alleg.sourceforge.net/onlinedocs/en/alleg030.html until this makes sense). Pass FA_ALL instead (this is not documented in the 4.2 documentation due to an oversight, it is in SVN). The SVN documentation also has a less confusing description of what the flags do than the one in the current documentation.
Ah, twas the example in the documentation. FA_ALL is not diclared in the version I'm using - 4.2.0(beta3). so I did this:
#define FA_ALL FA_RDONLY | FA_HIDDEN | FA_SYSTEM | FA_LABEL | FA_DIREC | FA_ARCH
(any I missed?)
on a different note:
I've been using the online manual from allegro.cc, the last paragraph is doubled on some of these al_find* entries.