[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[DotGNU]Path.[Alt]DirectorySeparatorChar
From: |
Dawkins, David |
Subject: |
[DotGNU]Path.[Alt]DirectorySeparatorChar |
Date: |
Sat, 30 Nov 2002 09:37:43 -0500 |
I am troubled.
On my Win2000/cygwin installation, the output from this code:
Console.WriteLine("Dir char is {0} Alt dir char is {1}",
Path.DirectorySeparatorChar,
Path.AltDirectorySeparatorChar);
is this:
Dir char is / Alt dir char is
The ECMA spec says that for Path.DirectorySeparatorChar:
The value of this field is a backslash (\) on Windows systems
and a slash (/) on Unix systems
It says exactly the same thing for Path.AltDirectorySeparatorChar,
which I think must be wrong (a copy-and-paste typo when writing
the spec perhaps?)
The MS .NET docs for Path.AltDirectorySeparatorChar say:
The value of this field is a backslash ('\') on Unix, and a
slash ('/') on Windows and Macintosh operating systems.
which makes sense to me. You'd use Path.DirectorySeparatorChar
when composing paths, but you'd allow both when parsing
paths (if set).
Somehow I think pnet must have got misconfigured before I built it,
since I can see this in engine/lib_dir.c:
void _IL_DirMethods_GetPathInfo(ILExecThread *thread, void *result)
{
Platform_PathInfo *info = (Platform_PathInfo *)result;
#if defined(_WIN32) || defined(WIN32)
info->dirSeparator = '\\';
info->altDirSeparator = '/';
info->volumeSeparator = ':';
info->pathSeparator = ';';
info->invalidPathChars = 0;
#else
info->dirSeparator = '/';
info->altDirSeparator = 0;
info->volumeSeparator = 0;
info->pathSeparator = ':';
info->invalidPathChars = 0;
#endif
}
So, my questions:
1. Should we make the unix altDirSeparator char be '\' (and
assume that the ECMA contains a mistake).
2. Is there a (nice) way to do a runtime check for OS type so that I
can unit test these values? (I could detect the presence of certain
environment variables as a nasty nasty hack, but I'd rather
not.. :)
[ 3. ... anyone have any idea why WIN32/_WIN32 wasn't set
when I built pnet? I'll figure it out ]
Regards
David Dawkins
- [DotGNU]Path.[Alt]DirectorySeparatorChar,
Dawkins, David <=