#include #include #include #include #include void print_preamble() { puts( "Content-type: application/xhtml+xml\r\n\r\n" "" "" "Echo" "" ); } void proceed_cookies(struct magi_cookie_list *cookies) { puts("

Cookies:

"); while (cookies) { puts("Cookie with name ["); puts(cookies->item.name); if (cookies->item.data) { puts("] is ["); puts(cookies->item.data); } if (cookies->item.domain) { puts("] for domain ["); puts(cookies->item.domain); } if (cookies->item.port) { puts("] for port ["); puts(cookies->item.port); } if (cookies->item.path) { puts("] for path ["); puts(cookies->item.path); } puts("]
"); cookies = cookies->next; } puts("
"); } void proceed_fields(struct magi_field_list *fields) { puts("

Feilds:

"); while (fields) { puts("Feild ["); puts(fields->item.name); puts("] = ["); puts(fields->item.data); puts("]
"); fields = fields->next; } puts("
"); } void proceed_params(struct magi_param_list *params) { puts("

HTTP Parameters:

"); while (params) { puts("Param ["); puts(params->item.name); puts("] is ["); puts(params->item.data); puts("]
"); params = params->next; } puts("
"); } void handle_request() { struct magi_request request; if (magi_request_build_cgi(&request, 0, 0)) { puts("

Echo CGI Script

"); puts("I was called with method ["); puts(request.method); if (request.uri) { puts("] with URL ["); puts(request.uri); } if (request.server_name) { puts("] for server ["); puts(request.server_name); } if (request.server_port) { puts("] on port ["); puts(request.server_port); } if (request.server_protocol) { puts("] with protocol ["); puts(request.server_protocol); } if (request.server_software) { puts("] and I am running on software ["); puts(request.server_software); } puts("]
"); proceed_cookies(request.cookies); proceed_fields(request.fields); proceed_params(request.http_params); magi_request_destroy(&request); } } void print_footer() { puts(""); } int main(int argc, char const *argv[]) { print_preamble(); handle_request(); print_footer(); return 0; }