+ vlc_DIR *p_dir = (vlc_DIR *)dir;
+
+ if (p_dir->wdir == NULL)
+ {
+ /* Drive letters mode */
+ DWORD drives = p_dir->u.drives;
+ if (drives == 0)
+ return NULL; /* end */
+#ifdef UNDER_CE
+ p_dir->u.drives = 0;
+ return strdup ("\\");
+#else
+ unsigned int i;
+ for (i = 0; !(drives & 1); i++)
+ drives >>= 1;
+ p_dir->u.drives &= ~(1UL << i);
+ assert (i < 26);
+
+ char *ret;
+ if (asprintf (&ret, "%c:\\", 'A' + i) == -1)
+ return NULL;
+ return ret;
+#endif
+ }
+
+ if (p_dir->u.insert_dot_dot)
+ {
+ /* Adds "..", gruik! */
+ p_dir->u.insert_dot_dot = false;
+ return strdup ("..");
+ }
+
+ struct _wdirent *ent = _wreaddir (p_dir->wdir);