]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Simplify gopherToHTML() (#1026)
authorAmos Jeffries <yadij@users.noreply.github.com>
Fri, 6 May 2022 15:39:20 +0000 (15:39 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Fri, 6 May 2022 15:39:23 +0000 (15:39 +0000)
No logic change.

src/gopher.cc

index 409c1808c62f29998a6963086050bb1df416c68f..2006b4183a41f03394d47404be7fc7c72f7c6449 100644 (file)
@@ -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)