Simplify INetURLObject::parseHostOrNetBiosName

Change-Id: I18818e89b2e6f0ef203caa51ba554c281753d3f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127383
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 7b86fe0..67cb1f1 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -2831,67 +2831,50 @@ bool INetURLObject::parseHostOrNetBiosName(
    EncodeMechanism eMechanism, rtl_TextEncoding eCharset, bool bNetBiosName,
    OUStringBuffer* pCanonic)
{
    if (pBegin >= pEnd)
        return true;
    sal_Int32 nOriginalCanonicLength = pCanonic ? pCanonic->getLength() : 0;
    if (pBegin < pEnd)
    if (sal_Unicode const* p = pBegin; parseHost(p, pEnd, pCanonic) && p == pEnd)
        return true;
    if (pCanonic)
        pCanonic->setLength(nOriginalCanonicLength); // discard parseHost results
    if (!bNetBiosName)
        return false;
    while (pBegin < pEnd)
    {
        sal_Unicode const * p = pBegin;
        if (!parseHost(p, pEnd, pCanonic) || p != pEnd)
        EscapeType eEscapeType;
        sal_uInt32 nUTF32 = getUTF32(pBegin, pEnd, eMechanism, eCharset, eEscapeType);
        switch (nUTF32)
        {
            if (bNetBiosName)
            {
                OUStringBuffer buf;
                while (pBegin < pEnd)
                {
                    EscapeType eEscapeType;
                    sal_uInt32 nUTF32 = getUTF32(pBegin, pEnd,
                                                 eMechanism, eCharset,
                                                 eEscapeType);
                    if (!INetMIME::isVisible(nUTF32))
                    {
                        if (pCanonic)
                            pCanonic->setLength(nOriginalCanonicLength);
                        return false;
                    }
                    if (!rtl::isAsciiAlphanumeric(nUTF32))
                        switch (nUTF32)
                        {
                        case '"':
                        case '*':
                        case '+':
                        case ',':
                        case '/':
                        case ':':
                        case ';':
                        case '<':
                        case '=':
                        case '>':
                        case '?':
                        case '[':
                        case '\\':
                        case ']':
                        case '`':
                        case '|':
                            return false;
                        }
                    if (pCanonic != nullptr) {
                        appendUCS4(
                            buf, nUTF32, eEscapeType, PART_URIC,
                            eCharset, true);
                    }
                }
                if (pCanonic)
                {
                    pCanonic->setLength(nOriginalCanonicLength);
                    pCanonic->append(buf);
                }
            }
            else
            {
            case '"':
            case '*':
            case '+':
            case ',':
            case '/':
            case ':':
            case ';':
            case '<':
            case '=':
            case '>':
            case '?':
            case '[':
            case '\\':
            case ']':
            case '`':
            case '|':
                if (pCanonic)
                    pCanonic->setLength(nOriginalCanonicLength);
                return false;
            }
            default:
                if (!INetMIME::isVisible(nUTF32))
                {
                    if (pCanonic)
                        pCanonic->setLength(nOriginalCanonicLength);
                    return false;
                }
        }
        if (pCanonic)
            appendUCS4(*pCanonic, nUTF32, eEscapeType, PART_URIC, eCharset, true);
    }
    return true;
}