{
char *ptr = dirTableA[index];
if (!ptr) {
- /* simulate the existance of this drive */
+ /* simulate the existence of this drive */
ptr = szLocalBufferA;
ptr[0] = 'A' + index;
ptr[1] = ':';
{
WCHAR *ptr = dirTableW[index];
if (!ptr) {
- /* simulate the existance of this drive */
+ /* simulate the existence of this drive */
ptr = szLocalBufferW;
ptr[0] = 'A' + index;
ptr[1] = ':';
else {
int bSave = bManageDirectory;
DWORD driveBits = GetLogicalDrives();
- OSVERSIONINFO osver;
-
- memset(&osver, 0, sizeof(osver));
- osver.dwOSVersionInfoSize = sizeof(osver);
- GetVersionEx(&osver);
bManageDirectory = 0;
- if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
- char szBuffer[MAX_PATH*driveCount];
- if (GetLogicalDriveStringsA(sizeof(szBuffer), szBuffer)) {
- char* pEnv = (char*)GetEnvironmentStringsA();
- char* ptr = szBuffer;
- for (index = 0; index < driveCount; ++index) {
- if (driveBits & (1<<index)) {
- ptr += SetDirA(ptr, index) + 1;
- FromEnvA(pEnv, index);
- }
+ WCHAR szBuffer[MAX_PATH*driveCount];
+ if (GetLogicalDriveStringsW(sizeof(szBuffer), szBuffer)) {
+ WCHAR* pEnv = GetEnvironmentStringsW();
+ WCHAR* ptr = szBuffer;
+ for (index = 0; index < driveCount; ++index) {
+ if (driveBits & (1<<index)) {
+ ptr += SetDirW(ptr, index) + 1;
+ FromEnvW(pEnv, index);
}
- FreeEnvironmentStringsA(pEnv);
}
- SetDefaultA(".");
- }
- else { /* Windows NT or later */
- WCHAR szBuffer[MAX_PATH*driveCount];
- if (GetLogicalDriveStringsW(sizeof(szBuffer), szBuffer)) {
- WCHAR* pEnv = GetEnvironmentStringsW();
- WCHAR* ptr = szBuffer;
- for (index = 0; index < driveCount; ++index) {
- if (driveBits & (1<<index)) {
- ptr += SetDirW(ptr, index) + 1;
- FromEnvW(pEnv, index);
- }
- }
- FreeEnvironmentStringsW(pEnv);
- }
- SetDefaultW(L".");
+ FreeEnvironmentStringsW(pEnv);
}
+ SetDefaultW(L".");
bManageDirectory = bSave;
}
}
int VDir::SetDirW(WCHAR const *pPath, int index)
{
WCHAR chr, *ptr;
- char szBuffer[MAX_PATH+1];
int length = 0;
if (index < driveCount && pPath != NULL) {
length = wcslen(pPath);
pMem->Free(dirTableW[index]);
ptr = dirTableW[index] = (WCHAR*)pMem->Malloc((length+2)*2);
if (ptr != NULL) {
+ char *ansi;
wcscpy(ptr, pPath);
ptr += length-1;
chr = *ptr++;
*ptr++ = '\\';
*ptr = '\0';
}
- WideCharToMultiByte(CP_ACP, 0, dirTableW[index], -1, szBuffer, sizeof(szBuffer), NULL, NULL);
- length = strlen(szBuffer);
+ ansi = win32_ansipath(dirTableW[index]);
+ length = strlen(ansi);
pMem->Free(dirTableA[index]);
dirTableA[index] = (char*)pMem->Malloc(length+1);
if (dirTableA[index] != NULL) {
- strcpy(dirTableA[index], szBuffer);
+ strcpy(dirTableA[index], ansi);
}
+ win32_free(ansi);
}
}
/*
* On WinNT GetFullPathName does not fail, (or at least always
- * succeeds when the drive is valid) WinNT does set *Dest to Nullch
+ * succeeds when the drive is valid) WinNT does set *Dest to NULL
* On Win98 GetFullPathName will set last error if it fails, but
* does not touch *Dest
*/
/*
* On WinNT GetFullPathName does not fail, (or at least always
- * succeeds when the drive is valid) WinNT does set *Dest to Nullch
+ * succeeds when the drive is valid) WinNT does set *Dest to NULL
* On Win98 GetFullPathName will set last error if it fails, but
* does not touch *Dest
*/