mirror of https://github.com/stella-emu/stella.git
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:
parent
fabae5f02f
commit
80b43a607e
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue