Mercurial > projects > ddmd
diff dmd/FileName.d @ 114:e28b18c23469
added a module dmd.common for commonly used stuff
it currently holds code for consistency checking of predefined versions
also added a VisualD project file
author | Trass3r |
---|---|
date | Wed, 01 Sep 2010 18:21:58 +0200 |
parents | 3ddadd0c4534 |
children | 9d194c848e3a |
line wrap: on
line diff
--- a/dmd/FileName.d Tue Aug 31 23:57:32 2010 +0100 +++ b/dmd/FileName.d Wed Sep 01 18:21:58 2010 +0200 @@ -1,5 +1,6 @@ module dmd.FileName; +import dmd.common; import dmd.String; import dmd.Array; import dmd.OutBuffer; @@ -41,7 +42,8 @@ override hash_t hashCode() { -version (_WIN32) { +version (Windows) +{ // We need a different hashCode because it must be case-insensitive size_t len = str.length; hash_t hash = 0; @@ -110,7 +112,7 @@ static pure bool absolute(const(char)[] name) { -version (_WIN32) +version (Windows) { return (name[0] == '\\') || (name[0] == '/') || @@ -143,7 +145,8 @@ case '/': return null; } -version (_WIN32) { +version (Windows) +{ case '\\': case ':': case '/': @@ -188,11 +191,13 @@ { switch (c) { -version (POSIX) { +version (Posix) +{ case '/': return str[i+1..$]; } -version (_WIN32) { +version (Windows) +{ case '/': case '\\': return str[i+1..$]; @@ -230,13 +235,16 @@ if (n > str.ptr) { auto p = n - 1; -version (POSIX) { +version (Posix) +{ if (*p == '/') n--; -} else version (_WIN32) { +} else version (Windows) +{ if (*p == '\\' || *p == '/') n--; -} else { +} else +{ static assert(false); } } @@ -263,13 +271,16 @@ char* f = cast(char*)GC.malloc(pathlen + 1 + namelen + 1); memcpy(f, path.ptr, pathlen); -version (POSIX) { +version (Posix) +{ if (path[pathlen - 1] != '/') { f[pathlen] = '/'; pathlen++; } -} else version (_WIN32) { +} +else version (Windows) +{ if (path[pathlen - 1] != '\\' && path[pathlen - 1] != '/' && path[pathlen - 1] != ':') @@ -277,7 +288,9 @@ f[pathlen] = '\\'; pathlen++; } -} else { +} +else +{ static assert(false); } memcpy(f + pathlen, name.ptr, namelen + 1); @@ -300,13 +313,15 @@ memcpy(f, path.ptr, pathlen); -version (POSIX) { +version (Posix) { if (path[pathlen - 1] != '/') { f[pathlen] = '/'; pathlen++; } -} else version (_WIN32) { +} +else version (Windows) +{ if (path[pathlen - 1] != '\\' && path[pathlen - 1] != '/' && path[pathlen - 1] != ':') @@ -314,7 +329,9 @@ f[pathlen] = '\\'; pathlen++; } -} else { +} +else +{ static assert(0); } memcpy(f + pathlen, name.ptr, namelen + 1); @@ -355,10 +372,10 @@ version (MACINTOSH) { case ',': } - version (_WIN32) { + version (Windows) { case ';': } - version (POSIX) { + version (Posix) { case ':': } p++; @@ -451,7 +468,7 @@ version (POSIX) { return cmp(e,ext) == 0; -} else version (_WIN32) { +} else version (Windows) { return icmp(e,ext) == 0; } else { static assert(0); @@ -466,9 +483,9 @@ { scope File file = new File(this); -version (_WIN32) { +version (Win32) { file.touchtime = GC.malloc(WIN32_FIND_DATA.sizeof); // keep same file time -} else version (POSIX) { +} else version (Posix) { file.touchtime = GC.malloc(stat_t.sizeof); // keep same file time } else { static assert(0); @@ -537,7 +554,7 @@ static int exists(string name) { -version (POSIX) { +version (Posix) { stat_t st; if (stat(toStringz(name), &st) < 0) @@ -545,7 +562,7 @@ if (S_ISDIR(st.st_mode)) return 2; return 1; -} else version (_WIN32) { +} else version (Win32) { HANDLE h = CreateFileA(toStringz(name), GENERIC_READ, FILE_SHARE_READ, null, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, HANDLE.init); /// if (h == INVALID_HANDLE_VALUE) { return 0;