Ik heb een stukje code geschreven om voor mijn GCC voor Win32 een Borland C compatible findfirst/findnext te maken. Dit omdat de _findfirst van GCC geen attributen mask ondersteund. Nu heb ik het wel werkend maar toch klopt er nog iets helemaal niet (ik heb volgens mij een memory leak) en bovendien is de code niet helemaal schoon. Vooral omdat ik het niet op een nette manier voor elkaar krijg om fblk.name (bv.) te lezen in de routine daarvoor moet ik eerst een "ffblk = *fblk;" doen, ik denk ook dat daar ergens het memory leak probleem zit. Weet iemand hoe ik dit netjes kan oplossen?
Dit is de code voor findfirst (findnext is vrijwel hetzelfde).
Dit is de code voor findfirst (findnext is vrijwel hetzelfde).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| int findfirst(const char *pathname, struct _finddata_t *fblk, unsigned int fattrib)
{
int done = 0;
struct _finddata_t ffblk;
ffattrib=fattrib;
ffhandle=_findfirst(pathname, fblk);
ffblk = *fblk;
if (ffhandle==-1) done==-1;
while (done!=-1 && (ffblk.attrib!=ffattrib || strcmp(ffblk.name, "..")==0 || strcmp(ffblk.name, ".")==0))
{
done = _findnext(ffhandle, fblk);
ffblk = *fblk;
}
return done;
} |
ESP PV-Boiler Controller https://github.com/arnova/pvboiler