# HG changeset patch # User Darkvater # Date 1129666685 0 # Node ID 971def34d3115a9d00a9a58c4e76dcc1b3543d2f # Parent ba58d797514f201f241a3d9883ac91b00ed03db9 (svn r3061) - CodeChange: revert r3056, r3057 and add a simpler fix to satisfy the needs of the absolute strict (eg. root directory is C:\ not C:) diff -r ba58d797514f -r 971def34d311 win32.c --- 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: