86 {
87 char* ptr =
name + pos;
88 char* ptr2 = ptr;
89 char* ptr3 =
name + returnedEnd;
90 int num = 0;
91 for (; ptr2 < ptr3; ptr2++)
92 {
93 char c = *ptr2;
94 if (c == '/' || c == '\\' || (notImplicitFile && (c == ':' || c == '?' || c == '#')))
95 {
96 ptr3 = ptr2;
97 break;
98 }
99 }
100 if (ptr3 == ptr)
101 {
102 return false;
103 }
104 do
105 {
106 ptr2 = ptr;
107 num = 0;
108 bool flag = false;
109 for (; ptr2 < ptr3 && *ptr2 != '.' && *ptr2 != '。' && *ptr2 != '.' && *ptr2 != '。'; ptr2++)
110 {
111 num++;
112 if (*ptr2 > 'ÿ')
113 {
114 num++;
115 }
116 if (*ptr2 >= '\u00a0')
117 {
118 flag = true;
119 }
120 }
121 if (ptr == ptr2 || (flag ? (num + 4) : num) > 63 || (*(ptr++) <
'\u00a0' && !
IsASCIILetterOrDigit(*(ptr - 1), ref notCanonical)))
122 {
123 return false;
124 }
125 while (ptr < ptr2)
126 {
128 {
129 return false;
130 }
131 }
132 ptr++;
133 }
134 while (ptr < ptr3);
135 returnedEnd = (int)(ptr3 - name);
136 return true;
137 }
static bool IsValidDomainLabelCharacter(char character, ref bool notCanonical)
static bool IsASCIILetterOrDigit(char character, ref bool notCanonical)