From cc4566604bd88a830ad18d4b91439af6ae4c8611 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Fri, 6 May 2022 15:39:20 +0000 Subject: [PATCH] Simplify gopherToHTML() (#1026) No logic change. --- src/gopher.cc | 120 +++++++++++++++++++++++--------------------------- 1 file changed, 55 insertions(+), 65 deletions(-) diff --git a/src/gopher.cc b/src/gopher.cc index 409c1808c6..2006b4183a 100644 --- a/src/gopher.cc +++ b/src/gopher.cc @@ -102,6 +102,10 @@ public: ~GopherStateData(); + /// URL for icon to display (or nil), given the Gopher item-type code. + /// The returned c-string is invalidated by the next call to this function. + const char *iconUrl(char); + public: StoreEntry *entry; enum { @@ -168,6 +172,56 @@ GopherStateData::~GopherStateData() memFree(buf, MEM_4K_BUF); } +const char * +GopherStateData::iconUrl(const char gtype) +{ + switch (gtype) { + + case GOPHER_DIRECTORY: + return mimeGetIconURL("internal-menu"); + + case GOPHER_HTML: + case GOPHER_FILE: + return mimeGetIconURL("internal-text"); + + case GOPHER_INDEX: + case GOPHER_CSO: + return mimeGetIconURL("internal-index"); + + case GOPHER_IMAGE: + case GOPHER_GIF: + case GOPHER_PLUS_IMAGE: + return mimeGetIconURL("internal-image"); + + case GOPHER_SOUND: + case GOPHER_PLUS_SOUND: + return mimeGetIconURL("internal-sound"); + + case GOPHER_PLUS_MOVIE: + return mimeGetIconURL("internal-movie"); + + case GOPHER_TELNET: + case GOPHER_3270: + return mimeGetIconURL("internal-telnet"); + + case GOPHER_BIN: + + case GOPHER_MACBINHEX: + case GOPHER_DOSBIN: + case GOPHER_UUENCODED: + return mimeGetIconURL("internal-binary"); + + case GOPHER_INFO: + return nullptr; + + case GOPHER_WWW: + return mimeGetIconURL("internal-link"); + + default: + return mimeGetIconURL("internal-unknown"); + } +} + /** * Create MIME Header for Gopher Data */ @@ -370,7 +424,6 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) char *host = NULL; char *port = NULL; char *escaped_selector = NULL; - const char *icon_url = NULL; char gtype; StoreEntry *entry = NULL; @@ -515,70 +568,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) /* escape a selector here */ escaped_selector = xstrdup(rfc1738_escape_part(selector)); - switch (gtype) { - - case GOPHER_DIRECTORY: - icon_url = mimeGetIconURL("internal-menu"); - break; - - case GOPHER_HTML: - - case GOPHER_FILE: - icon_url = mimeGetIconURL("internal-text"); - break; - - case GOPHER_INDEX: - - case GOPHER_CSO: - icon_url = mimeGetIconURL("internal-index"); - break; - - case GOPHER_IMAGE: - - case GOPHER_GIF: - - case GOPHER_PLUS_IMAGE: - icon_url = mimeGetIconURL("internal-image"); - break; - - case GOPHER_SOUND: - - case GOPHER_PLUS_SOUND: - icon_url = mimeGetIconURL("internal-sound"); - break; - - case GOPHER_PLUS_MOVIE: - icon_url = mimeGetIconURL("internal-movie"); - break; - - case GOPHER_TELNET: - - case GOPHER_3270: - icon_url = mimeGetIconURL("internal-telnet"); - break; - - case GOPHER_BIN: - - case GOPHER_MACBINHEX: - - case GOPHER_DOSBIN: - - case GOPHER_UUENCODED: - icon_url = mimeGetIconURL("internal-binary"); - break; - - case GOPHER_INFO: - icon_url = NULL; - break; - - case GOPHER_WWW: - icon_url = mimeGetIconURL("internal-link"); - break; - - default: - icon_url = mimeGetIconURL("internal-unknown"); - break; - } + const auto icon_url = gopherState->iconUrl(gtype); if ((gtype == GOPHER_TELNET) || (gtype == GOPHER_3270)) { if (strlen(escaped_selector) != 0) -- 2.47.2