[Mono-list] Simple code - differences in output between mono &.Net
Nick Berardi
nberardi@zigamorph.com
Wed, 3 Mar 2004 12:22:27 -0500
This is a multi-part message in MIME format.
------=_NextPart_000_0073_01C4011A.31CB48C0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
this is how you can get the drives in windows. But it would require mono to
implement Win32Native in Microsoft.Win32, see here
http://www.123aspx.com/rotor/rotorsrc.aspx?rot=42415 and this is used to
throw the Win32Error (http://www.123aspx.com/rotor/rotorsrc.aspx?rot=42961)
note I commented it from below.
public static String[] GetLogicalDrives()
{
ArrayList stuff = new ArrayList();
if ((int)Environment.OSVersion.Platform == 128)
{
string line;
StreamReader mtab = new StreamReader("/etc/mtab");
string[] fields;
while ( (line = mtab.ReadLine()) != null )
{
fields = line.Split(new char[]{' '});
if (fields[0] != "none")
stuff.Add(fields[1]);
}
} else {
new
SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
int drives = Win32Native.GetLogicalDrives();
if (drives==0)
throw new ApplicationException("No Drives Found");
//__Error.WinIOError();
uint d = (uint)drives;
char[] root = new char[] {'A', ':', '\\'};
for(int i = (int)'A'; i <= (int)'Z' || d != 0; i++, d >>= 1)
if (((int)d & 1) !=0)
stuff.Add(new String(new char[] {(char)i,
':', '\\'}));
}
return (string[])stuff.ToArray(typeof(string));
}
-----Original Message-----
From: mono-list-admin@lists.ximian.com
[mailto:mono-list-admin@lists.ximian.com] On Behalf Of Jonathan Stowe
Sent: Wednesday, March 03, 2004 11:14 AM
To: jonathan.cooper@syntegra.com
Cc: nberardi@zigamorph.com; mono-list@lists.ximian.com
Subject: RE: [Mono-list] Simple code - differences in output between mono
&.Net
On Wed, 2004-03-03 at 15:13, jonathan.cooper@syntegra.com wrote:
> I would assume that the GetLogicalDrives() method on linux would
> require returning the mount points, as these can then be enumerated as
> necessary - for e.g. /dev/cdrom, /dev/usbdrive etc. This approach
> seems much more usable from a development perspective than just
> returning the root.
This could be as simple as this:
using System;
using System.IO;
using System.Collections;
class Test
{
public static string[] GetLogicalDrives ()
{
string[] drives;
if ((int)Environment.OSVersion.Platform == 128)
{
string line;
StreamReader mtab = new StreamReader("/etc/mtab");
ArrayList stuff = new ArrayList();
string[] fields;
while ( (line = mtab.ReadLine()) != null )
{
fields = line.Split(new char[]{' '});
if (fields[0] != "none")
{
stuff.Add(fields[1]);
}
}
drives = new string[stuff.Count];
stuff.CopyTo(drives);
}
else
{
drives = new string [] { "A:\\", "C:\\" };
}
return drives;
}
public static void Main()
{
foreach ( string drive in GetLogicalDrives() )
{
Console.WriteLine(drive);
}
}
}
> -----Original Message-----
> From: Nick Berardi [mailto:nberardi@zigamorph.com]
> Sent: 03 March 2004 15:11
> To: COOPER, Jonathan -Syntegra UK; mono-list@lists.ximian.com
> Subject: RE: [Mono-list] Simple code - differences in output
> between mono & .Net
>
>
>
> I guess logical drives in Linux is just the root. But I would
> think that they would include the mount points in here? Don't
> you think? Because basically that is all that a Windows Drive
> is. A mounted partition.
>
>
>
> Anybody on the list disagree?
>
>
>
>
> ______________________________________________________________
>
> From: jonathan.cooper@syntegra.com
> [mailto:jonathan.cooper@syntegra.com]
> Sent: Wednesday, March 03, 2004 9:57 AM
> To: nberardi@zigamorph.com; mono-list@lists.ximian.com
> Subject: RE: [Mono-list] Simple code - differences in output
> between mono & .Net
>
>
>
>
> Ah, that would explain it.
>
>
>
>
>
> Shall I continue with the bug submission?
>
>
> -----Original Message-----
> From: Nick Berardi [mailto:nberardi@zigamorph.com]
> Sent: 03 March 2004 14:55
> To: COOPER, Jonathan -Syntegra UK;
> mono-list@lists.ximian.com
> Subject: RE: [Mono-list] Simple code - differences in
> output between mono & .Net
>
> I was right here is your problem:
>
>
>
>
> [MonoTODO("Implement on windows, for
real")]
> public static string[] GetLogicalDrives ()
> {
> //FIXME: Hardcoded Paths
> if
((int)Environment.OSVersion.Platform == 128)
> return new string[] { "/"
};
> else
> return new string [] {
"A:\\", "C:\\" };
> }
>
>
>
>
>
>
> ______________________________________________________
>
> From: mono-list-admin@lists.ximian.com
> [mailto:mono-list-admin@lists.ximian.com] On Behalf Of
> jonathan.cooper@syntegra.com
> Sent: Wednesday, March 03, 2004 9:32 AM
> To: mono-list@lists.ximian.com
> Subject: [Mono-list] Simple code - differences in
> output between mono & .Net
>
>
>
>
> I have code (at the end of this message) in a .cs
> file, compiled with mcs and csc on Windows XP. When
> compiled with either compiler the executable works on
> both runtimes (.Net and mono). However, the output is
> different.
>
> Run under .Net:
> ------------------------
> Disk: A:\
> Disk: C:\
> Disk: D:\
> Disk: K:\
> Disk: L:\
> Disk: Q:\
> Disk: T:\
> Disk: U:\
> Disk: X:\
> c:\
> Dir: c:\Compaq
> Dir: c:\Config.Msi
> Dir: c:\Documents and Settings
> Dir: c:\Program Files
> Dir: c:\RECYCLER
> Dir: c:\System Volume Information
> Dir: c:\WINNT
>
>
>
> Basically the contents of the root c:\ drive
>
> Run under mono:
> --------------------------
> Disk: A:\
> Disk: C:\
> c:\
> >> a list of directories in the current directory
> rather than the root c:\ <<
>
> Is this due to an incomplete feature, or am I missing
> something?
>
> Thanks in advance,
> Jon Cooper
>
>
>
> ------------------------ CODE in drives.cs
> ------------------------
>
> using System;
> using System.IO;
>
> namespace test
> {
> class test
> {
> [STAThread]
> static void Main(string[] args)
> {
> string[] s = Directory.GetLogicalDrives();
> foreach(string drive in s)
> Console.WriteLine("Disk: {0}",drive);
>
> string mydrive = Console.ReadLine();
>
> if(mydrive.Length != 0)
> {
> foreach(string d in
> Directory.GetDirectories(mydrive))
> Console.WriteLine("Dir: {0}",d);
>
> Console.Read(); //pause
> }
> }
> }
> }
>
>
>
>
********************************************************************
>
> This email may contain information which is privileged
> or confidential. If you are not the intended recipient
> of this email, please notify the sender immediately
> and delete it without reading, copying, storing,
> forwarding or disclosing its contents to any other
> person
> Thank you
>
> Check us out at http://www.syntegra.com
>
>
********************************************************************
>
>
>
>
********************************************************************
>
> This email may contain information which is privileged or
> confidential. If you are not the intended recipient of this
> email, please notify the sender immediately and delete it
> without reading, copying, storing, forwarding or disclosing
> its contents to any other person
> Thank you
>
> Check us out at http://www.syntegra.com
>
>
********************************************************************
>
>
>
>
> ********************************************************************
>
> This email may contain information which is privileged or
> confidential. If you are not the intended recipient of this email,
> please notify the sender immediately and delete it without reading,
> copying, storing, forwarding or disclosing its contents to any other
> person
> Thank you
>
> Check us out at http://www.syntegra.com
>
> ********************************************************************
_______________________________________________
Mono-list maillist - Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list
------=_NextPart_000_0073_01C4011A.31CB48C0
Content-Type: application/ms-tnef;
name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="winmail.dat"
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
Tk1JQ1JPU09GVFdJTjMyLFNFRUgAAAAAd4Q=
------=_NextPart_000_0073_01C4011A.31CB48C0--