CarotDav_decompile/Rei.Fs/UriParserFixer.cs

116 lines
4.4 KiB
C#
Raw Normal View History

// Decompiled with JetBrains decompiler
// Type: Rei.Fs.UriParserFixer
// Assembly: Rei.Fs, Version=1.13.2.8796, Culture=neutral, PublicKeyToken=null
// MVID: D8B08A8B-697C-4439-9CFF-1BE4EE46F7B0
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security.Permissions;
using System.Threading;
namespace Rei.Fs
{
public class UriParserFixer
{
private static object @lock = RuntimeHelpers.GetObjectValue(new object());
private static bool m_registered;
private const int ConvertPathSlashes = 4194304;
private const int UnEscapeDotsAndSlashes = 33554432;
public static void Register()
{
try
{
object Expression = UriParserFixer.@lock;
ObjectFlowControl.CheckForSyncLockOnValueType(Expression);
Monitor.Enter(Expression);
try
{
if (UriParserFixer.m_registered)
return;
ReflectionPermission reflectionPermission = new ReflectionPermission(ReflectionPermissionFlag.AllFlags);
SecurityPermission securityPermission = new SecurityPermission(SecurityPermissionFlag.AllFlags);
reflectionPermission.Demand();
securityPermission.Demand();
FieldInfo field1 = typeof (UriParser).GetField("HttpUri", BindingFlags.Static | BindingFlags.NonPublic);
FieldInfo field2 = typeof (UriParser).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic);
UriParser uriParser1 = (UriParser) field1.GetValue((object) null);
int num1 = Conversions.ToInteger(field2.GetValue((object) uriParser1)) & -4194305 & -33554433;
field2.SetValue((object) uriParser1, (object) num1);
FieldInfo field3 = typeof (UriParser).GetField("HttpsUri", BindingFlags.Static | BindingFlags.NonPublic);
FieldInfo field4 = typeof (UriParser).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic);
UriParser uriParser2 = (UriParser) field3.GetValue((object) null);
int num2 = Conversions.ToInteger(field4.GetValue((object) uriParser2)) & -4194305 & -33554433;
field4.SetValue((object) uriParser2, (object) num2);
UriParserFixer.m_registered = true;
}
finally
{
Monitor.Exit(Expression);
}
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
ProjectData.ClearProjectError();
}
}
public static void UnRegister()
{
try
{
object Expression = UriParserFixer.@lock;
ObjectFlowControl.CheckForSyncLockOnValueType(Expression);
Monitor.Enter(Expression);
try
{
if (!UriParserFixer.m_registered)
return;
FieldInfo field1 = typeof (UriParser).GetField("HttpUri", BindingFlags.Static | BindingFlags.NonPublic);
FieldInfo field2 = typeof (UriParser).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic);
UriParser uriParser1 = (UriParser) field1.GetValue((object) null);
int num1 = Conversions.ToInteger(field2.GetValue((object) uriParser1)) | 4194304 | 33554432;
field2.SetValue((object) uriParser1, (object) num1);
FieldInfo field3 = typeof (UriParser).GetField("HttpsUri", BindingFlags.Static | BindingFlags.NonPublic);
FieldInfo field4 = typeof (UriParser).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic);
UriParser uriParser2 = (UriParser) field3.GetValue((object) null);
int num2 = Conversions.ToInteger(field4.GetValue((object) uriParser2)) | 4194304 | 33554432;
field4.SetValue((object) uriParser2, (object) num2);
UriParserFixer.m_registered = false;
}
finally
{
Monitor.Exit(Expression);
}
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
ProjectData.ClearProjectError();
}
}
public static bool IsRegister
{
get
{
object Expression = UriParserFixer.@lock;
ObjectFlowControl.CheckForSyncLockOnValueType(Expression);
Monitor.Enter(Expression);
try
{
return UriParserFixer.m_registered;
}
finally
{
Monitor.Exit(Expression);
}
}
}
}
}