Hi there,<br>
<br>
Directory.GetParent should return a DirectoryInfo for *both* full path
names and relative path names. (See
<a href="http://msdn2.microsoft.com/en-us/library/system.io.directory.getparent.aspx">http://msdn2.microsoft.com/en-us/library/system.io.directory.getparent.aspx</a>
for microsoft doc). Here's the issue: currently, mono implements
Directory.GetParent using new
DirectoryInfo(Path.GetDirectoryName(path)), but Path.GetDirectoryName
*does not* returns an absolute directory name for a relative path (it
returns the String-based relative path information contained in the
argument). So, when mono calls &quot;new DirectoryInfo(relpath)&quot; for some
relative path, it works UNLESS the Path.GetDirectoryName() has return
String.Emtpy (since this is the required behavior for this function for
a relative path of something in the current directory).<br>
<br>
The fix is to make the ctor for DirectoryInfo reset the argument to
Directory.GetCurrentDirectory() when the argument is String.Emtpy. Diff
is below.<br>
<br>
Emery<br>
<br>
<br>
Index: mcs/class/corlib/System.IO/DirectoryInfo.cs<br>
===================================================================<br>
--- mcs/class/corlib/System.IO/DirectoryInfo.cs (revision 59817)<br>
+++ mcs/class/corlib/System.IO/DirectoryInfo.cs (working copy)<br>
@@ -51,6 +51,9 @@<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DirectoryInfo (string path)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if(path == String.Empty)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
path = Directory.GetCurrentDirectory();<br>
+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CheckPath (path);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FullPath = Path.GetFullPath (path);<br>
<br>-- <br>Emery Conrad<br>Department of Mathematics<br>Virginia Tech<br>5076 Derring Hall<br>Blacksburg, VA 24061-0406<br>(540) 231-3324