BDVK file_info_count;
int file_count_copy;

void DirFileCount(dword way)
{
	dword dirbuf, fcount, i, filename;
	dword cur_file;
	if (dir_exists(way))
	{
		cur_file = malloc(4096);
		// In the process of recursive descent, memory must be allocated dynamically, because the static memory -> was a bug !!! But unfortunately pass away to sacrifice speed.
		GetDir(#dirbuf, #fcount, way, DIRS_ONLYREAL);
		filename = dirbuf+72;
		for (i=0; i<fcount; i++)
		{
			filename += 304;
			sprintf(cur_file,"%s/%s",way,filename);
			
			if (TestBit(ESDWORD[filename-40], 4) )
			{
				file_count_copy++;
				DirFileCount(cur_file);
			}
			else
			{
				file_count_copy++;
			}
		}
		free(cur_file);
	}
}