ory | Photonium a écrit :
Bonsoir, SCANDIR_ENTRY est définie par un script python (à l'installation je pense).
|
scandir.py:
Code :
- def CheckScandirType(context, sys_h, dirent, sysndir, sysdir, ndir):
- context.Message('Checking for scandir entry type... ')
- check_code = ''
- if dirent: check_code = check_code + '#include <dirent.h>\n'
- if sysndir: check_code = check_code + '#include <sys/ndir.h>\n'
- if sysdir: check_code = check_code + '#include <sys/dir.h>\n'
- if ndir: check_code = check_code + '#include <ndir.h>\n'
- check_code = check_code + """
- int main() {
- struct dirent **temp;
- scandir(0, &temp, 0, 0);
- return 0;
- }
- """
- if context.TryCompile(check_code, '.c'):
- context.Result('dirent')
- sys_h.write('#define SCANDIR_ENTRY dirent\n')
- else:
- context.Result('direct')
- sys_h.write('#define SCANDIR_ENTRY direct\n')
- def CheckScandir(sys_h, conf):
- dirent = sysndir = sysdir = ndir = 0
- if conf.CheckCHeader('dirent.h'):
- sys_h.write('#include <dirent.h>\n')
- sys_h.write('#define NAMELEN(dirent) strlen((dirent)->d_name\n')
- dirent = 1
- else:
- sys_h.write('#define dirent direct\n')
- sys_h.write('#define NAMELEN(dirent) (dirent)->d_namlen\n')
- if conf.CheckCHeader('sys/ndir.h'):
- sys_h.write('#include <sys/ndir.h>\n')
- sysndir = 1
- if conf.CheckCHeader('sys/dir.h'):
- sys_h.write('#include <sys/dir.h>\n')
- sysdir = 1
- if conf.CheckCHeader('ndir.h'):
- sys_h.write('#include <ndir.h>\n')
- ndir = 1
- if conf.CheckFunc('scandir', 'C++'):
- sys_h.write('#define HAVE_SCANDIR 1\n')
- conf.CheckScandirType(sys_h, dirent, sysndir, sysdir, ndir)
- else:
- sys_h.write('#define SCANDIR_TYPE direct\n')
- sys_h.write('\n')
|
il cherche si le scandir des bibliothèques système est dispo, et sinon il utilise celui codé à la mano. |