/* * Copyright 2020 Vincent Sanders * * This file is part of NetSurf. * * NetSurf is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * NetSurf is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file * content generator for the about scheme blank page */ #include #include #include #include "netsurf/types.h" #include "utils/errors.h" #include "utils/nsoption.h" #include "private.h" #include "config.h" /** * Handler to generate about scheme config page * * \param ctx The fetcher context. * \return true if handled false if aborted. */ bool fetch_about_config_handler(struct fetch_about_context *ctx) { char buffer[1024]; int slen = 0; unsigned int opt_loop = 0; int elen = 0; /* entry length */ nserror res; bool even = false; /* content is going to return ok */ fetch_about_set_http_code(ctx, 200); /* content type */ if (fetch_about_send_header(ctx, "Content-Type: text/html")) { goto fetch_about_config_handler_aborted; } res = fetch_about_ssenddataf(ctx, "\n\n" "NetSurf Browser Config\n" "\n" "\n" "\n" "

NetSurf Browser Config

\n" "\n" "" "" "" "\n"); if (res != NSERROR_OK) { goto fetch_about_config_handler_aborted; } do { if (even) { elen = nsoption_snoptionf(buffer + slen, sizeof buffer - slen, opt_loop, "" "" "" "" "" "\n"); } else { elen = nsoption_snoptionf(buffer + slen, sizeof buffer - slen, opt_loop, "" "" "" "" "" "\n"); } if (elen <= 0) break; /* last option */ if (elen >= (int) (sizeof buffer - slen)) { /* last entry would not fit in buffer, submit buffer */ res = fetch_about_senddata(ctx, (const uint8_t *)buffer, slen); if (res != NSERROR_OK) { goto fetch_about_config_handler_aborted; } slen = 0; } else { /* normal addition */ slen += elen; opt_loop++; even = !even; } } while (elen > 0); slen += snprintf(buffer + slen, sizeof buffer - slen, "
OptionTypeProvenanceSetting
%k%t%p%V
%k%t%p%V
\n\n\n"); res = fetch_about_senddata(ctx, (const uint8_t *)buffer, slen); if (res != NSERROR_OK) { goto fetch_about_config_handler_aborted; } fetch_about_send_finished(ctx); return true; fetch_about_config_handler_aborted: return false; }