diff options
Diffstat (limited to 'cgi.c')
| -rw-r--r-- | cgi.c | 94 |
1 files changed, 94 insertions, 0 deletions
@@ -0,0 +1,94 @@ +/* Copyright (c) 2021, la-ninpre + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * ************************************************************************* + * + * this file contains code for cgi version of nimisewi. + * + * i know that there are libraries for cgi in c, but c'mon, it's so small and + * simple. + * stylesheet is arbitrary, replace with anything you want if you don't like it. + */ + +#include <err.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "cgi.h" + +#include "nimisewi.h" + +void +print_response_header(void) +{ + printf("Status: 200 OK\r"); + printf("Content-Type: text/html\r"); +} + +void +print_html_header(void) +{ + printf("<!doctype html\n"); + printf("<html>\n"); + printf("<head>\n"); + print_html_stylesheet(); + printf("</head>\n"); + printf("<body>\n"); +} + +void +print_html_stylesheet(void) +{ + printf("<style>\n"); + printf("body { background: #ff8; }\n"); + printf("h1 { text-align: center; font: bold 48pt monospace; color: #4ad }\n"); + printf("</style>\n"); +} + +void +print_html_footer(void) +{ + printf("</body>\n"); + printf("</html>\n"); +} + +int +main(void) +{ +#ifdef __OpenBSD__ + if (pledge("stdio", NULL) == -1) { + err(EXIT_FAILURE, "pledge"); + } +#endif + + char *ns; + ns = nimi_sewi(); + if (ns == NULL) { + err(EXIT_FAILURE, "memory could'n be allocated"); + } + + print_response_header(); + print_html_header(); + + printf("<h1>"); + printf("%s", ns); + printf("</h1>\n"); + + weka_e_nimi_sewi(ns); + + print_html_footer(); + + return EXIT_SUCCESS; +} |
