More fixes to the Win32 filesystem code.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1632 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2009-01-16 18:25:51 +00:00
parent fabae5f02f
commit 80b43a607e
2 changed files with 11 additions and 10 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FSNodeWin32.cxx,v 1.19 2009-01-16 16:38:06 stephena Exp $ // $Id: FSNodeWin32.cxx,v 1.20 2009-01-16 18:25:51 stephena Exp $
// //
// Based on code from ScummVM - Scumm Interpreter // Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project // Copyright (C) 2002-2004 The ScummVM project
@ -106,6 +106,7 @@ class MyDocumentsFinder
HMODULE myFolderModule; HMODULE myFolderModule;
function_pointer myFolderPathFunc; function_pointer myFolderPathFunc;
}; };
static MyDocumentsFinder myDocsFinder;
/* /*
* Implementation of the Stella file system API based on Windows API. * Implementation of the Stella file system API based on Windows API.
@ -154,8 +155,6 @@ class WindowsFilesystemNode : public AbstractFilesystemNode
bool _isPseudoRoot; bool _isPseudoRoot;
bool _isValid; bool _isValid;
static MyDocumentsFinder myDocsFinder;
private: private:
/** /**
* Adds a single WindowsFilesystemNode to a given list. * Adds a single WindowsFilesystemNode to a given list.
@ -287,14 +286,16 @@ WindowsFilesystemNode::WindowsFilesystemNode(const string& p, bool currentDir)
{ {
// Expand "~\\" to the 'My Documents' directory // Expand "~\\" to the 'My Documents' directory
// If there is any error, default to using the current directory // If there is any error, default to using the current directory
bool expanded = false;
if ( p.length() >= 2 && p[0] == '~' && p[1] == '\\') if ( p.length() >= 2 && p[0] == '~' && p[1] == '\\')
{ {
_path = myDocsFinder.getPath(); _path = myDocsFinder.getPath();
if (_path != "") if (_path != "")
{ {
// Skip over the tilda. We know that p contains at least // Skip over the tilda. We know that p contains at least
// two chars, so this is safe: // two chars, so this is safe:
_path += p.c_str() + 1; _path += p.c_str() + 1;
expanded = true;
} }
else else
currentDir = true; currentDir = true;
@ -306,7 +307,7 @@ WindowsFilesystemNode::WindowsFilesystemNode(const string& p, bool currentDir)
GetCurrentDirectory(MAX_PATH, path); GetCurrentDirectory(MAX_PATH, path);
_path = path; _path = path;
} }
else else if (!expanded)
{ {
assert(p.size() > 0); assert(p.size() > 0);
_path = p; _path = p;
@ -326,9 +327,9 @@ WindowsFilesystemNode::WindowsFilesystemNode(const string& p, bool currentDir)
{ {
_isDirectory = ((fileAttribs & FILE_ATTRIBUTE_DIRECTORY) != 0); _isDirectory = ((fileAttribs & FILE_ATTRIBUTE_DIRECTORY) != 0);
_isValid = true; _isValid = true;
// Add a trailing slash, if necessary.
if (_path.length() > 0 && _path[_path.length()-1] != '\\') // Add a trailing slash, if necessary.
if (_isDirectory && _path.length() > 0 && _path[_path.length()-1] != '\\')
_path += '\\'; _path += '\\';
} }
_isPseudoRoot = false; _isPseudoRoot = false;

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: OSystemWin32.cxx,v 1.29 2009-01-16 16:38:06 stephena Exp $ // $Id: OSystemWin32.cxx,v 1.30 2009-01-16 18:25:51 stephena Exp $
//============================================================================ //============================================================================
#include "bspf.hxx" #include "bspf.hxx"
@ -40,8 +40,8 @@ OSystemWin32::OSystemWin32()
FilesystemNode node("disable_profiles.txt"); FilesystemNode node("disable_profiles.txt");
if(!node.exists()) if(!node.exists())
{ {
FilesystemNode home("~"); FilesystemNode home("~\\");
if(node.isDirectory()) if(home.isDirectory())
basedir = "~\\Stella"; basedir = "~\\Stella";
} }