-#define _TINYDIR_MALLOC(_size) vg_linear_alloc( vg_mem.scratch, _size )
-#define _TINYDIR_FREE(_size)
+typedef struct vg_dir vg_dir;
+#ifndef _WIN32
+ #include <dirent.h>
+ struct vg_dir{
+ DIR *h;
+ struct dirent *data;
+ u32 index;
+ };
+#else
+ #include <windows.h>
+ #include <fileapi.h>
+ struct vg_dir{
+ HANDLE h;
+ WIN32_FIND_DATA data;
+ u32 index;
+ };
+#endif
+
+enum vg_entry_type{
+ k_vg_entry_type_unknown,
+ k_vg_entry_type_file,
+ k_vg_entry_type_dir
+};
+
+static int vg_dir_open( vg_dir *dir, const char *name ){
+#ifdef _WIN32
+ char q_buf[4096];
+ vg_str q;
+ vg_strnull( &q, q_buf, 4096 );
+ vg_strcat( &q, name );
+ vg_strcat( &q, "/*" );
+ if( !vg_strgood(&q) ) return 0;
+
+ vg_info( "FindFirstFile( '%s' )\n", q.buffer );
+ dir->h = FindFirstFile( q.buffer, &dir->data );
+ if( dir->h == INVALID_HANDLE_VALUE ){
+ if( GetLastError() == ERROR_FILE_NOT_FOUND ){
+ dir->index = 0;
+ return 1;
+ }
+ else return 0;
+ }
+#else
+ dir->h = opendir( name );
+ if( !dir->h ) return 0;
+#endif
+ dir->index = 1;
+ return 1;
+}