Lines Matching defs:pszUri

169 static bool rtUriFindSchemeEnd(const char *pszUri, size_t iStart, size_t cbLen, size_t *piEnd)
175 if (pszUri[i] == ':')
185 static bool rtUriCheckAuthorityStart(const char *pszUri, size_t iStart, size_t cbLen, size_t *piStart)
189 && pszUri[iStart ] == '/'
190 && pszUri[iStart + 1] == '/')
199 static bool rtUriFindAuthorityEnd(const char *pszUri, size_t iStart, size_t cbLen, size_t *piEnd)
205 if ( pszUri[i] == '/'
206 || pszUri[i] == '?'
207 || pszUri[i] == '#')
217 static bool rtUriCheckPathStart(const char *pszUri, size_t iStart, size_t cbLen, size_t *piStart)
221 && pszUri[iStart] == '/')
228 && ( pszUri[iStart] == '?'
229 || pszUri[iStart] == '#'))
236 static bool rtUriFindPathEnd(const char *pszUri, size_t iStart, size_t cbLen, size_t *piEnd)
242 if ( pszUri[i] == '?'
243 || pszUri[i] == '#')
253 static bool rtUriCheckQueryStart(const char *pszUri, size_t iStart, size_t cbLen, size_t *piStart)
257 && pszUri[iStart] == '?')
265 static bool rtUriFindQueryEnd(const char *pszUri, size_t iStart, size_t cbLen, size_t *piEnd)
271 if (pszUri[i] == '#')
281 static bool rtUriCheckFragmentStart(const char *pszUri, size_t iStart, size_t cbLen, size_t *piStart)
285 && pszUri[iStart] == '#')
386 RTR3DECL(bool) RTUriHasScheme(const char *pszUri, const char *pszScheme)
389 char *pszTmp = RTUriScheme(pszUri);
398 RTR3DECL(char *) RTUriScheme(const char *pszUri)
400 AssertPtrReturn(pszUri, NULL);
403 size_t cbLen = strlen(pszUri);
404 if (rtUriFindSchemeEnd(pszUri, 0, cbLen, &iPos1))
405 return rtUriPercentDecodeN(pszUri, iPos1);
409 RTR3DECL(char *) RTUriAuthority(const char *pszUri)
411 AssertPtrReturn(pszUri, NULL);
414 size_t cbLen = strlen(pszUri);
416 if (!rtUriFindSchemeEnd(pszUri, 0, cbLen, &iPos1))
423 if (rtUriCheckAuthorityStart(pszUri, iPos1, cbLen - iPos1, &iPos2))
428 rtUriFindAuthorityEnd(pszUri, iPos2, cbLen - iPos2, &iPos3);
430 return rtUriPercentDecodeN(&pszUri[iPos2], iPos3 - iPos2);
437 RTR3DECL(char *) RTUriPath(const char *pszUri)
439 AssertPtrReturn(pszUri, NULL);
442 size_t cbLen = strlen(pszUri);
444 if (!rtUriFindSchemeEnd(pszUri, 0, cbLen, &iPos1))
452 if (rtUriCheckAuthorityStart(pszUri, iPos1, cbLen - iPos1, &iPos2))
456 if (!rtUriFindAuthorityEnd(pszUri, iPos2, cbLen - iPos2, &iPos3))
462 if (rtUriCheckPathStart(pszUri, iPos3, cbLen - iPos3, &iPos4))
466 rtUriFindPathEnd(pszUri, iPos4, cbLen - iPos4, &iPos5);
468 return rtUriPercentDecodeN(&pszUri[iPos4], iPos5 - iPos4);
474 RTR3DECL(char *) RTUriQuery(const char *pszUri)
476 AssertPtrReturn(pszUri, NULL);
479 size_t cbLen = strlen(pszUri);
481 if (!rtUriFindSchemeEnd(pszUri, 0, cbLen, &iPos1))
489 if (rtUriCheckAuthorityStart(pszUri, iPos1, cbLen - iPos1, &iPos2))
493 if (!rtUriFindAuthorityEnd(pszUri, iPos2, cbLen - iPos2, &iPos3))
500 if (rtUriCheckPathStart(pszUri, iPos3, cbLen - iPos3, &iPos4))
504 if (!rtUriFindPathEnd(pszUri, iPos4, cbLen - iPos4, &iPos5))
510 if (rtUriCheckQueryStart(pszUri, iPos5, cbLen - iPos5, &iPos6))
514 rtUriFindQueryEnd(pszUri, iPos6, cbLen - iPos6, &iPos7);
516 return rtUriPercentDecodeN(&pszUri[iPos6], iPos7 - iPos6);
522 RTR3DECL(char *) RTUriFragment(const char *pszUri)
524 AssertPtrReturn(pszUri, NULL);
527 size_t cbLen = strlen(pszUri);
529 if (!rtUriFindSchemeEnd(pszUri, 0, cbLen, &iPos1))
537 if (rtUriCheckAuthorityStart(pszUri, iPos1, cbLen - iPos1, &iPos2))
541 if (!rtUriFindAuthorityEnd(pszUri, iPos2, cbLen - iPos2, &iPos3))
548 if (rtUriCheckPathStart(pszUri, iPos3, cbLen - iPos3, &iPos4))
552 if (!rtUriFindPathEnd(pszUri, iPos4, cbLen - iPos4, &iPos5))
559 if (rtUriCheckQueryStart(pszUri, iPos5, cbLen - iPos5, &iPos6))
563 if (!rtUriFindQueryEnd(pszUri, iPos6, cbLen - iPos6, &iPos7))
570 if (rtUriCheckFragmentStart(pszUri, iPos7, cbLen - iPos7, &iPos8))
575 return rtUriPercentDecodeN(&pszUri[iPos8], cbLen - iPos8);
619 RTR3DECL(char *) RTUriFilePath(const char *pszUri, uint32_t uFormat)
621 return RTUriFileNPath(pszUri, uFormat, RTSTR_MAX);
624 RTR3DECL(char *) RTUriFileNPath(const char *pszUri, uint32_t uFormat, size_t cchMax)
626 AssertPtrReturn(pszUri, NULL);
629 size_t cbLen = RT_MIN(strlen(pszUri), cchMax);
631 if (!rtUriFindSchemeEnd(pszUri, 0, cbLen, &iPos1))
637 if (RTStrNICmp(pszUri, "file:", iPos1) != 0)
643 if (rtUriCheckAuthorityStart(pszUri, iPos1, cbLen - iPos1, &iPos2))
647 if (!rtUriFindAuthorityEnd(pszUri, iPos2, cbLen - iPos2, &iPos3))
653 if (rtUriCheckPathStart(pszUri, iPos3, cbLen - iPos3, &iPos4))
665 && pszUri[iPos4] == '/')
669 rtUriFindPathEnd(pszUri, iPos4, cbLen - iPos4, &iPos5);
672 char *pszPath = rtUriPercentDecodeN(&pszUri[iPos4], iPos5 - iPos4);