diff options
Diffstat (limited to 'src/tools/sdpscanner/main.cpp')
-rw-r--r-- | src/tools/sdpscanner/main.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/tools/sdpscanner/main.cpp b/src/tools/sdpscanner/main.cpp index d0c3e2cc..6d9965f1 100644 --- a/src/tools/sdpscanner/main.cpp +++ b/src/tools/sdpscanner/main.cpp @@ -3,6 +3,7 @@ #include <QtCore/QByteArray> #include <QtCore/QDebug> +#include <QtCore/QUrl> #include <stdio.h> #include <string> #include <bluetooth/bluetooth.h> @@ -177,10 +178,17 @@ static void parseAttributeValues(sdp_data_t *data, int indentation, QByteArray & case SDP_URL_STR8: case SDP_URL_STR16: case SDP_URL_STR32: + { xmlOutput.append("<url value=\""); - xmlOutput.append(data->val.str, qstrnlen(data->val.str, data->unitSize)); + const QByteArray urlData = + QByteArray::fromRawData(data->val.str, qstrnlen(data->val.str, data->unitSize)); + const QUrl url = QUrl::fromEncoded(urlData); + // Encoded url %-encodes all of the XML special characters except '&', + // so we need to do that manually + xmlOutput.append(url.toEncoded().replace('&', "&")); xmlOutput.append("\"/>\n"); break; + } default: fprintf(stderr, "Unknown dtd type\n"); } |