ValidateFolderPath.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Runtime.CompilerServices;
  6. using Microsoft.VisualBasic.CompilerServices;
  7. using PCL.My;
  8. namespace PCL
  9. {
  10. // Token: 0x0200014D RID: 333
  11. public class ValidateFolderPath : Validate
  12. {
  13. // Token: 0x17000217 RID: 535
  14. // (get) Token: 0x06000DAE RID: 3502 RVA: 0x00008C44 File Offset: 0x00006E44
  15. // (set) Token: 0x06000DAF RID: 3503 RVA: 0x00008C4C File Offset: 0x00006E4C
  16. public bool UseMinecraftCharCheck { get; set; }
  17. // Token: 0x06000DB0 RID: 3504 RVA: 0x00008C55 File Offset: 0x00006E55
  18. public ValidateFolderPath()
  19. {
  20. this.UseMinecraftCharCheck = true;
  21. }
  22. // Token: 0x06000DB1 RID: 3505 RVA: 0x00008C65 File Offset: 0x00006E65
  23. public ValidateFolderPath(bool UseMinecraftCharCheck)
  24. {
  25. this.UseMinecraftCharCheck = true;
  26. this.UseMinecraftCharCheck = UseMinecraftCharCheck;
  27. }
  28. // Token: 0x06000DB2 RID: 3506 RVA: 0x0005C2F4 File Offset: 0x0005A4F4
  29. public override string Validate(string Str)
  30. {
  31. Str = Str.Replace("/", "\\");
  32. if (!Str.TrimEnd(new char[]
  33. {
  34. '\\'
  35. }).EndsWithF(":", false))
  36. {
  37. Str = Str.TrimEnd(new char[]
  38. {
  39. '\\'
  40. });
  41. }
  42. string text = new ValidateNullOrWhiteSpace().Validate(Str);
  43. checked
  44. {
  45. string result;
  46. if (Operators.CompareString(text, "", false) != 0)
  47. {
  48. result = text;
  49. }
  50. else
  51. {
  52. text = new ValidateLength(1, 254).Validate(Str);
  53. if (Operators.CompareString(text, "", false) != 0)
  54. {
  55. result = text;
  56. }
  57. else
  58. {
  59. if (!Str.StartsWithF("\\\\Mac\\", false))
  60. {
  61. try
  62. {
  63. foreach (DriveInfo driveInfo in MyWpfExtension.ManageParser().FileSystem.Drives)
  64. {
  65. if (Operators.CompareString(Str.ToUpper(), driveInfo.Name, false) == 0)
  66. {
  67. return "";
  68. }
  69. if (Str.StartsWithF(driveInfo.Name, true))
  70. {
  71. goto IL_107;
  72. }
  73. }
  74. }
  75. finally
  76. {
  77. IEnumerator<DriveInfo> enumerator;
  78. if (enumerator != null)
  79. {
  80. enumerator.Dispose();
  81. }
  82. }
  83. return "文件夹路径头存在错误!";
  84. }
  85. IL_107:
  86. int num = Str.StartsWithF("\\\\Mac\\", false) ? 2 : 1;
  87. int num2 = Enumerable.Count<string>(Str.Split("\\")) - 1;
  88. for (int i = num; i <= num2; i++)
  89. {
  90. string str = Str.Split("\\")[i];
  91. if (Operators.CompareString(new ValidateNullOrWhiteSpace().Validate(str), "", false) != 0)
  92. {
  93. return "文件夹路径存在错误!";
  94. }
  95. string text2 = new ValidateExcept(new string(Path.GetInvalidFileNameChars()) + (this.UseMinecraftCharCheck ? "!;" : ""), "路径中存在无效字符!").Validate(str);
  96. if (Operators.CompareString(text2, "", false) != 0)
  97. {
  98. return text2;
  99. }
  100. if (str.StartsWithF(" ", false))
  101. {
  102. return "文件夹名不能以空格开头!";
  103. }
  104. if (str.EndsWithF(" ", false))
  105. {
  106. return "文件夹名不能以空格结尾!";
  107. }
  108. if (str.EndsWithF(".", false))
  109. {
  110. return "文件夹名不能以小数点结尾!";
  111. }
  112. string text3 = new ValidateExceptSame(new string[]
  113. {
  114. "CON",
  115. "PRN",
  116. "AUX",
  117. "CLOCK$",
  118. "NUL",
  119. "COM0",
  120. "COM1",
  121. "COM2",
  122. "COM3",
  123. "COM4",
  124. "COM5",
  125. "COM6",
  126. "COM7",
  127. "COM8",
  128. "COM9",
  129. "LPT0",
  130. "LPT1",
  131. "LPT2",
  132. "LPT3",
  133. "LPT4",
  134. "LPT5",
  135. "LPT6",
  136. "LPT7",
  137. "LPT8",
  138. "LPT9"
  139. }, "文件夹名不可为 %!", false).Validate(str);
  140. if (Operators.CompareString(text3, "", false) != 0)
  141. {
  142. return text3;
  143. }
  144. if (ModBase.RegexCheck(Str, ".{2,}~\\d", 0))
  145. {
  146. return "文件夹名不能包含这一特殊格式!";
  147. }
  148. }
  149. result = "";
  150. }
  151. }
  152. return result;
  153. }
  154. }
  155. // Token: 0x0400071B RID: 1819
  156. [CompilerGenerated]
  157. private bool m_AdvisorTests;
  158. }
  159. }