diff --git a/kdirshare/kded/kdirshareimpl.cpp b/kdirshare/kded/kdirshareimpl.cpp index db17373b..8cba53e3 100644 --- a/kdirshare/kded/kdirshareimpl.cpp +++ b/kdirshare/kded/kdirshareimpl.cpp @@ -34,8 +34,6 @@ #include static const QDir::SortFlags s_dirsortflags = (QDir::Name | QDir::DirsFirst); -static const QByteArray s_data404("404 Not Found"); -static const QByteArray s_data500("500 Internal Server Error"); // AVAHI_LABEL_MAX - 3 (for dots) - 1 (for null terminator) static const int s_sharenamelimit = 60; @@ -97,6 +95,38 @@ static QByteArray styleSheetForPalette(const QPalette &palette) return stylesheet; } +static QByteArray contentForError(const QString &path, const ushort status) +{ + const QString pathtitle = getTitle(path); + + QByteArray data; + data.append("\n"); + data.append(" \n"); + data.append(" \n"); + data.append(" \n"); + data.append(" \n"); + data.append(" "); + data.append(pathtitle.toUtf8()); + data.append("\n"); + switch (status) { + case 404: { + data.append("
404 Not Found
\n"); + break; + } + case 500: { + data.append("
500 Internal Server Error
\n"); + break; + } + default: { + Q_ASSERT(false); + break; + } + } + data.append(" \n"); + data.append(""); + return data; +} + static QByteArray contentForFile(const QString &basedir, const QFileInfo &fileinfo) { QByteArray data; @@ -271,7 +301,7 @@ void KDirServer::respond(const QByteArray &url, QByteArray *outdata, iconbuffer.open(QBuffer::WriteOnly); if (!iconpixmap.save(&iconbuffer, iconformat)) { kWarning() << "Could not save image"; - outdata->append(s_data500); + outdata->append(contentForError(normalizedpath, 500)); *outhttpstatus = 500; outheaders->insert("Content-Type", "text/html; charset=UTF-8"); } else { @@ -298,7 +328,7 @@ void KDirServer::respond(const QByteArray &url, QByteArray *outdata, outheaders->insert("Content-Type", filemime.toAscii()); outfilepath->append(pathinfo.filePath()); } else { - outdata->append(s_data404); + outdata->append(contentForError(normalizedpath, 404)); *outhttpstatus = 404; outheaders->insert("Content-Type", "text/html; charset=UTF-8"); }