diff --git a/src/gopher.cc b/src/gopher.cc index 576a3f7..2645b6b 100644 --- a/src/gopher.cc +++ b/src/gopher.cc @@ -364,7 +364,6 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) char *lpos = NULL; char *tline = NULL; LOCAL_ARRAY(char, line, TEMP_BUF_SIZE); - LOCAL_ARRAY(char, tmpbuf, TEMP_BUF_SIZE); char *name = NULL; char *selector = NULL; char *host = NULL; @@ -374,7 +373,6 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) char gtype; StoreEntry *entry = NULL; - memset(tmpbuf, '\0', TEMP_BUF_SIZE); memset(line, '\0', TEMP_BUF_SIZE); entry = gopherState->entry; @@ -409,7 +407,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) return; } - String outbuf; + SBuf outbuf; if (!gopherState->HTML_header_added) { if (gopherState->conversion == GopherStateData::HTML_CSO_RESULT) @@ -577,34 +575,34 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) break; } - memset(tmpbuf, '\0', TEMP_BUF_SIZE); - if ((gtype == GOPHER_TELNET) || (gtype == GOPHER_3270)) { if (strlen(escaped_selector) != 0) - snprintf(tmpbuf, TEMP_BUF_SIZE, " %s\n", - icon_url, escaped_selector, rfc1738_escape_part(host), - *port ? ":" : "", port, html_quote(name)); + outbuf.appendf(" %s\n", + icon_url, escaped_selector, rfc1738_escape_part(host), + *port ? ":" : "", port, html_quote(name)); else - snprintf(tmpbuf, TEMP_BUF_SIZE, " %s\n", - icon_url, rfc1738_escape_part(host), *port ? ":" : "", - port, html_quote(name)); + outbuf.appendf(" %s\n", + icon_url, rfc1738_escape_part(host), *port ? ":" : "", + port, html_quote(name)); } else if (gtype == GOPHER_INFO) { - snprintf(tmpbuf, TEMP_BUF_SIZE, "\t%s\n", html_quote(name)); + outbuf.appendf("\t%s\n", html_quote(name)); } else { if (strncmp(selector, "GET /", 5) == 0) { /* WWW link */ - snprintf(tmpbuf, TEMP_BUF_SIZE, " %s\n", - icon_url, host, rfc1738_escape_unescaped(selector + 5), html_quote(name)); + outbuf.appendf(" %s\n", + icon_url, host, rfc1738_escape_unescaped(selector + 5), html_quote(name)); + } else if (gtype == GOPHER_WWW) { + outbuf.appendf(" %s\n", + icon_url, rfc1738_escape_unescaped(selector), html_quote(name)); } else { /* Standard link */ - snprintf(tmpbuf, TEMP_BUF_SIZE, " %s\n", - icon_url, host, gtype, escaped_selector, html_quote(name)); + outbuf.appendf(" %s\n", + icon_url, host, gtype, escaped_selector, html_quote(name)); } } safe_free(escaped_selector); - outbuf.append(tmpbuf); } else { memset(line, '\0', TEMP_BUF_SIZE); continue; @@ -637,13 +635,12 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) break; if (gopherState->cso_recno != recno) { - snprintf(tmpbuf, TEMP_BUF_SIZE, "
", recno, html_quote(result)); + outbuf.appendf("
", recno, html_quote(result)); gopherState->cso_recno = recno; } else { - snprintf(tmpbuf, TEMP_BUF_SIZE, "%s\n", html_quote(result)); + outbuf.appendf("%s\n", html_quote(result)); } - outbuf.append(tmpbuf); break; } else { int code; @@ -671,8 +668,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) case 502: { /* Too Many Matches */ /* Print the message the server returns */ - snprintf(tmpbuf, TEMP_BUF_SIZE, "
", html_quote(result)); - outbuf.append(tmpbuf); + outbuf.appendf("
", html_quote(result)); break; } @@ -688,13 +684,12 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) } /* while loop */ - if (outbuf.size() > 0) { - entry->append(outbuf.rawBuf(), outbuf.size()); + if (outbuf.length() > 0) { + entry->append(outbuf.rawContent(), outbuf.length()); /* now let start sending stuff to client */ entry->flush(); } - outbuf.clean(); return; }