--- parser3/src/include/pa_dir.h 2001/04/09 08:55:28 1.2 +++ parser3/src/include/pa_dir.h 2001/10/30 14:27:19 1.7 @@ -2,15 +2,21 @@ Parser: directory scanning for different OS-es decls. Copyright (c) 2000,2001 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_dir.h,v 1.2 2001/04/09 08:55:28 paf Exp $ + $Id: pa_dir.h,v 1.7 2001/10/30 14:27:19 paf Exp $ */ #ifndef PA_DIR_H #define PA_DIR_H +#include "pa_config_includes.h" + +/** @struct ffblk + win32/unix unified directory entry structure name + for findfirst/next/close interface +*/ + #ifdef WIN32 #include @@ -18,7 +24,6 @@ #define MAXPATH MAX_PATH #define FA_DIREC FILE_ATTRIBUTE_DIRECTORY - struct ffblk { DWORD ff_attrib;/*dwFileAttributes;*/ FILETIME ftCreationTime; @@ -68,16 +73,17 @@ bool findfirst(const char *_pathname, st bool findnext(struct ffblk *_ffblk); void findclose(struct ffblk *_ffblk); +/// main dir workhorse: calles win32/unix unified functions findfirst/next/close #define LOAD_DIR(dir,action) {\ ffblk ffblk; \ - bool done=findfirst(dir, &ffblk, 0); \ - while(!done) { \ - if(*ffblk.ff_name && ffblk.ff_name[0]!='.') {\ - action; \ - } \ - done=findnext(&ffblk); \ - } \ - findclose(&ffblk); \ + if(!findfirst(dir, &ffblk, 0)) { \ + do \ + if(*ffblk.ff_name && ffblk.ff_name[0]!='.') {\ + action; \ + } \ + while(!findnext(&ffblk)); \ + findclose(&ffblk); \ + } \ } #endif