diff --git a/SnM/SnM_Util.cpp b/SnM/SnM_Util.cpp index f87d41970..15031c300 100644 --- a/SnM/SnM_Util.cpp +++ b/SnM/SnM_Util.cpp @@ -451,6 +451,12 @@ bool GenerateFilename(const char* _dir, const char* _name, const char* _ext, cha return false; } +bool IsDirNoRecurse(const WDL_DirScan &ds) +{ + enum { IsDir = 1, IsSymlink = 2, IsRecurSymLink = 4 }; + return (ds.GetCurrentIsDirectory() & (IsDir | IsSymlink)) != 0; +} + // fills a list of filenames matching extensions defined in _filterList // _filterList: file extensions without null separators, ex: "*.ext1 *.ext2" ("*" == all files) // note: it is up to the caller to free _files (use WDL_PtrList_DeleteOnDestroy) @@ -468,7 +474,7 @@ void ScanFiles(WDL_PtrList* _files, const char* _initDir, const char if (!strcmp(curFn, ".") || !strcmp(curFn, "..")) continue; - if (ds.GetCurrentIsDirectory()) + if (IsDirNoRecurse(ds)) { if (_subdirs) { ds.GetCurrentFullFN(&fn); diff --git a/SnM/SnM_Util.h b/SnM/SnM_Util.h index f40d565fa..ba16a4f99 100644 --- a/SnM/SnM_Util.h +++ b/SnM/SnM_Util.h @@ -58,6 +58,7 @@ bool TranscodeFileToFile64(const char* _outFn, const char* _inFn); WDL_HeapBuf* TranscodeStr64ToHeapBuf(const char* _str64); bool GenerateFilename(const char* _dir, const char* _name, const char* _ext, char* _updatedFn, int _updatedSz); void ScanFiles(WDL_PtrList* _files, const char* _initDir, const char* _filterList, bool _subdirs); +bool IsDirNoRecurse(const WDL_DirScan &); void StringToExtensionConfig(WDL_FastString* _str, ProjectStateContext* _ctx); void ExtensionConfigToString(WDL_FastString* _str, ProjectStateContext* _ctx); diff --git a/Xenakios/XenUtils.cpp b/Xenakios/XenUtils.cpp index 24c81bdfb..297689029 100644 --- a/Xenakios/XenUtils.cpp +++ b/Xenakios/XenUtils.cpp @@ -85,7 +85,7 @@ int SearchDirectory(vector &refvecFiles, const char* cDir, const char* c WDL_String foundFile; ds.GetCurrentFullFN(&foundFile); lstrcpyn(g_CurrentScanFile, foundFile.Get(), 1024); - if (bSubdirs && ds.GetCurrentIsDirectory()) + if (bSubdirs && IsDirNoRecurse(ds)) { found += SearchDirectory(refvecFiles, foundFile.Get(), cExt, true); }