private static List<string> GetDriveMountList()
{
// TODO-Linux: GetDrives() on Mono is only implemented for Linux.
DriveInfo[] allDrives = DriveInfo.GetDrives();
List<string> driveMounts = new List<string>();
foreach (DriveInfo d in allDrives)
{
// TODO-Linux: IsReady always returns true on Mono
if (!d.IsReady || d.AvailableFreeSpace == 0)
continue;
switch (d.DriveType)
{
case DriveType.Fixed:
case DriveType.Network:
case DriveType.Removable:
if (MiscUtils.IsUnix)
driveMounts.Add(d.Name + (d.Name.EndsWith("/") ? "" : "/")); // ensure terminated with a slash
else
driveMounts.Add(d.Name.ToLowerInvariant()); // Windows produces C:\ D:\ etc.
break;
}
}
driveMounts.Sort(longestFirst);
return driveMounts;
}