aboutsummaryrefslogtreecommitdiffstats
path: root/cgi.c
diff options
context:
space:
mode:
Diffstat (limited to 'cgi.c')
-rw-r--r--cgi.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/cgi.c b/cgi.c
new file mode 100644
index 0000000..d7d2c84
--- /dev/null
+++ b/cgi.c
@@ -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;
+}