From 5b441749fb3525c54453b9fe8a0c2e5bb37cf53a Mon Sep 17 00:00:00 2001 From: Patrick Date: Mon, 30 Mar 2020 12:33:11 -0500 Subject: early experiments of integrating w/ yocto toolchain --- src/Makefile | 19 +++++++++++++++++++ src/fcgi_commission.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/Makefile create mode 100644 src/fcgi_commission.cpp diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..94e823d --- /dev/null +++ b/src/Makefile @@ -0,0 +1,19 @@ +ARCH=$(shell uname -m) + +CC := g++ +SRCDIR := . +BUILDDIR := $(ARCH) +DEPLOYDIR := . +# DEPLOYDIR := deploy +# TARGET := $(DEPLOYDIR)/commissioning_$(ARCH).fcgi + +CCFLAGS := -std=c++11 -g -Wall -Werror -pedantic -pedantic-errors +LIB := -ljsoncpp -lfcgi++ -lfcgi +INC := -I ../include + +fcgi_commission.fcgi: fcgi_commission.o + $(CC) -o fcgi_commission.fcgi fcgi_commission.o + +clean: + @echo " $(RM) fcgi_commission.fcgi + diff --git a/src/fcgi_commission.cpp b/src/fcgi_commission.cpp new file mode 100644 index 0000000..bd082ff --- /dev/null +++ b/src/fcgi_commission.cpp @@ -0,0 +1,44 @@ +#include "fcgio.h" +#include + +int main(void) { + // Backup the stdio streambufs + streambuf * cin_streambuf = cin.rdbuf(); + streambuf * cout_streambuf = cout.rdbuf(); + streambuf * cerr_streambuf = cerr.rdbuf(); + + FCGX_Request request; + + FCGX_Init(); + FCGX_InitRequest(&request, 0, 0); + + while (FCGX_Accept_r(&request) == 0) { + fcgi_streambuf cin_fcgi_streambuf(request.in); + fcgi_streambuf cout_fcgi_streambuf(request.out); + fcgi_streambuf cerr_fcgi_streambuf(request.err); + + cin.rdbuf(&cin_fcgi_streambuf); + cout.rdbuf(&cout_fcgi_streambuf); + cerr.rdbuf(&cerr_fcgi_streambuf); + + cout << "Content-type: text/html\r\n" + << "\r\n" + << "\n" + << " \n" + << " Hello, World!\n" + << " \n" + << " \n" + << "

Hello, World!

\n" + << " \n" + << "\n"; + + // Note: the fcgi_streambuf destructor will auto flush + } + + // restore stdio streambufs + cin.rdbuf(cin_streambuf); + cout.rdbuf(cout_streambuf); + cerr.rdbuf(cerr_streambuf); + + return 0; +} \ No newline at end of file -- cgit v1.2.3