Mac support
This commit is contained in:
41
Programs/GridProxyGUI/PlatformDetection.cs
Normal file
41
Programs/GridProxyGUI/PlatformDetection.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user