|
|
@@ -143,6 +143,47 @@ bool Directory::Load(const char* name)
|
|
|
return _findclose(srchHandle) != -1;
|
|
|
}
|
|
|
|
|
|
+unsigned long Directory::GetNumberOfFilesInDirectory(const char* name)
|
|
|
+{
|
|
|
+#if _MSC_VER < 1300
|
|
|
+ long srchHandle;
|
|
|
+#else
|
|
|
+ intptr_t srchHandle;
|
|
|
+#endif
|
|
|
+ char* buf;
|
|
|
+ size_t n = strlen(name);
|
|
|
+ if ( name[n - 1] == '/' )
|
|
|
+ {
|
|
|
+ buf = new char[n + 1 + 1];
|
|
|
+ sprintf(buf, "%s*", name);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ buf = new char[n + 2 + 1];
|
|
|
+ sprintf(buf, "%s/*", name);
|
|
|
+ }
|
|
|
+ struct _finddata_t data; // data of current file
|
|
|
+
|
|
|
+ // Now put them into the file array
|
|
|
+ srchHandle = _findfirst(buf, &data);
|
|
|
+ delete [] buf;
|
|
|
+
|
|
|
+ if ( srchHandle == -1 )
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Loop through names
|
|
|
+ unsigned long count = 0;
|
|
|
+ do
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ while ( _findnext(srchHandle, &data) != -1 );
|
|
|
+ _findclose(srchHandle);
|
|
|
+ return count;
|
|
|
+}
|
|
|
+
|
|
|
} // namespace KWSYS_NAMESPACE
|
|
|
|
|
|
#else
|
|
|
@@ -174,6 +215,24 @@ bool Directory::Load(const char* name)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+unsigned long Directory::GetNumberOfFilesInDirectory(const char* name)
|
|
|
+{
|
|
|
+ DIR* dir = opendir(name);
|
|
|
+
|
|
|
+ if (!dir)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ unsigned long count = 0;
|
|
|
+ for (dirent* d = readdir(dir); d; d = readdir(dir) )
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ closedir(dir);
|
|
|
+ return count;
|
|
|
+}
|
|
|
+
|
|
|
} // namespace KWSYS_NAMESPACE
|
|
|
|
|
|
#endif
|