48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace GridProxyGUI
|
|
{
|
|
public static class PlatformDetection
|
|
{
|
|
public readonly static bool IsWindows;
|
|
public readonly static bool IsMac;
|
|
|
|
static PlatformDetection()
|
|
{
|
|
IsWindows = Path.DirectorySeparatorChar == '\\';
|
|
IsMac = !IsWindows && IsRunningOnMac();
|
|
}
|
|
|
|
//From Managed.Windows.Forms/XplatUI
|
|
static bool IsRunningOnMac()
|
|
{
|
|
IntPtr buf = IntPtr.Zero;
|
|
try
|
|
{
|
|
buf = System.Runtime.InteropServices.Marshal.AllocHGlobal(8192);
|
|
// This is a hacktastic way of getting sysname from uname ()
|
|
if (uname(buf) == 0)
|
|
{
|
|
string os = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(buf);
|
|
if (os == "Darwin")
|
|
return true;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
finally
|
|
{
|
|
if (buf != IntPtr.Zero)
|
|
System.Runtime.InteropServices.Marshal.FreeHGlobal(buf);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
[System.Runtime.InteropServices.DllImport("libc")]
|
|
static extern int uname(IntPtr buf);
|
|
}
|
|
}
|
|
|