MCPcopy Create free account
hub / github.com/bruderstein/nppPluginManager / validateDirectLink

Method validateDirectLink

libinstall/src/DirectLinkSearch.cpp:116–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

114
115
116size_t DirectLinkSearch::validateDirectLink(size_t currentPosition)
117{
118 TCHAR searchString[] = TEXT("href=\"http://");
119 TCHAR searchString2[] = TEXT("href=\"https://");
120 TCHAR validUriChars[] = TEXT(":@&=+$,;/?:");
121
122 size_t charListLen = _tcslen(validUriChars);
123 const int LINKOFFSET = 6;
124
125 size_t lastNonDomain = currentPosition;
126 size_t minPosition = currentPosition - MAX_RESULT_SIZE;
127
128 size_t startSearchPos = _tcslen(searchString) - 1;
129 size_t startSearchPos2 = _tcslen(searchString2) - 1;
130 size_t searchPos = startSearchPos;
131 size_t searchPos2 = startSearchPos2;
132
133 while(currentPosition >= minPosition)
134 {
135 TCHAR currentChar = _file.getCharAt(currentPosition);
136 if (currentChar != TEXT('.')
137 && currentChar != TEXT('-')
138 && !(currentChar >= TEXT('a') && currentChar <= TEXT('z'))
139 && !(currentChar >= TEXT('A') && currentChar <= TEXT('Z'))
140 && !(currentChar >= TEXT('0') && currentChar <= TEXT('9')))
141 {
142 lastNonDomain = currentPosition;
143
144
145 if (!findChar(currentChar, validUriChars, charListLen)
146 && !(currentChar == TEXT('\"') && (searchString[searchPos] == TEXT('\"') || searchString2[searchPos2] == TEXT('\"'))))
147 break;
148 }
149
150
151 if (searchString[searchPos] == currentChar)
152 {
153 if (searchPos == 0)
154 {
155 return currentPosition + LINKOFFSET;
156 }
157 --searchPos;
158 }
159 else
160 searchPos = startSearchPos;
161
162 if (searchString2[searchPos2] == currentChar)
163 {
164 if (searchPos2 == 0)
165 {
166 return currentPosition + LINKOFFSET;
167 }
168 --searchPos2;
169 }
170 else
171 searchPos2 = startSearchPos2;
172
173 --currentPosition;

Callers

nothing calls this directly

Calls 1

getCharAtMethod · 0.80

Tested by

no test coverage detected