--- a/win32.c Tue Oct 18 18:18:50 2005 +0000
+++ b/win32.c Tue Oct 18 20:18:05 2005 +0000
@@ -630,8 +630,9 @@
UINT sem = SetErrorMode(SEM_FAILCRITICALERRORS); // disable 'no-disk' message box
HANDLE h;
char paths[MAX_PATH];
+ const char *s = strrchr(path, '\\');
- snprintf(paths, sizeof(paths), "%s\\%s", path, file);
+ snprintf(paths, sizeof(paths), "%s%s%s", path, (s[1] == '\0') ? "" : "\\", file);
h = FindFirstFile(paths, fd);
SetErrorMode(sem); // restore previous setting
@@ -671,7 +672,7 @@
_fios_path = _fios_save_path;
// Parent directory, only if not of the type C:\.
- if (_fios_path[2] != '\0') {
+ if (_fios_path[3] != '\0') {
fios = FiosAlloc();
fios->type = FIOS_TYPE_PARENT;
fios->mtime = 0;
@@ -900,12 +901,15 @@
switch (item->type) {
case FIOS_TYPE_DRIVE:
- sprintf(path, "%c:", item->title[0]);
+ sprintf(path, "%c:\\", item->title[0]);
break;
case FIOS_TYPE_PARENT:
s = strrchr(path, '\\');
- s[0] = '\0';
+ if (s != path + 2)
+ s[0] = '\0';
+ else
+ s[1] = '\0';
break;
case FIOS_TYPE_DIR: