Merge pull request #17 from dymk/windows-fixes

Add configuration file support for Windows
This commit is contained in:
Hackerpilot 2013-08-18 17:27:04 -07:00
commit 59a279da32
4 changed files with 26 additions and 14 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# Windows binaries
*.exe
*.obj

View File

@ -110,7 +110,7 @@ In future versions the client may start the server if it is not running, but for
now it must be started manually.
## Configuration Files
The server will attempt to read the file ```~/.config/dcd``` on startup.
The server will attempt to read the file ```~/.config/dcd``` on Posix systems, or ```dcd.conf``` on Windows in the current working directory on startup.
If it exists, each line of the file is interpreted as a path that should be
searched when looking for module imports.

View File

@ -88,7 +88,7 @@ struct ModuleCache
try
{
File f = File(location);
ubyte[] source = uninitializedArray!(ubyte[])(f.size);
ubyte[] source = uninitializedArray!(ubyte[])(cast(size_t)f.size);
f.rawRead(source);
LexerConfig config;

View File

@ -32,8 +32,14 @@ import messages;
import autocomplete;
import modulecache;
// TODO: Portability would be nice...
enum CONFIG_FILE_PATH = "~/.config/dcd";
version(Posix)
{
enum CONFIG_FILE_PATH = "~/.config/dcd";
}
else version(Windows)
{
enum CONFIG_FILE_PATH = "dcd.conf";
}
int main(string[] args)
{
@ -135,19 +141,22 @@ int main(string[] args)
return 0;
}
version(linux)
{
string[] loadConfiguredImportDirs()
{
string fullPath = expandTilde(CONFIG_FILE_PATH);
if (!exists(fullPath))
return [];
File f = File(fullPath);
return f.byLine(KeepTerminator.no).map!(a => a.idup).filter!(a => a.exists()).array();
version(Windows)
{
string fullPath = buildPath(getcwd(), CONFIG_FILE_PATH);
}
else version(Posix)
{
string fullPath = expandTilde(CONFIG_FILE_PATH);
}
if (!exists(fullPath))
return [];
File f = File(fullPath);
return f.byLine(KeepTerminator.no).map!(a => a.idup).filter!(a => a.exists()).array();
}
}
else
static assert (false, "Only Linux is supported at the moment");
void printHelp(string programName)
{