|
/*
|
|
* echo.c --
|
|
*
|
|
* Produce a page containing all FastCGI inputs
|
|
*
|
|
*
|
|
* Copyright (c) 1996 Open Market, Inc.
|
|
*
|
|
* See the file "LICENSE.TERMS" for information on usage and redistribution
|
|
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
*
|
|
*/
|
|
#ifndef lint
|
|
static const char rcsid[] = "$Id: echo.c,v 1.5 1999/07/28 00:29:37 roberts Exp $";
|
|
#endif /* not lint */
|
|
|
|
#include "fcgi_config.h"
|
|
|
|
#include <stdlib.h>
|
|
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#include <process.h>
|
|
#else
|
|
extern char **environ;
|
|
#endif
|
|
|
|
#include "fcgi_stdio.h"
|
|
|
|
|
|
static void PrintEnv(char *label, char **envp)
|
|
{
|
|
printf("%s:<br>\n<pre>\n", label);
|
|
for ( ; *envp != NULL; envp++) {
|
|
printf("%s\n", *envp);
|
|
}
|
|
printf("</pre><p>\n");
|
|
}
|
|
|
|
int main ()
|
|
{
|
|
char **initialEnv = environ;
|
|
int count = 0;
|
|
|
|
while (FCGI_Accept() >= 0) {
|
|
char *contentLength = getenv("CONTENT_LENGTH");
|
|
int len;
|
|
|
|
printf("Content-type: text/html\r\n"
|
|
"\r\n"
|
|
"<title>FastCGI echo</title>"
|
|
"<h1>FastCGI echo</h1>\n"
|
|
"Request number %d, Process ID: %d<p>\n", ++count, getpid());
|
|
|
|
if (contentLength != NULL) {
|
|
len = strtol(contentLength, NULL, 10);
|
|
}
|
|
else {
|
|
len = 0;
|
|
}
|
|
|
|
if (len <= 0) {
|
|
printf("No data from standard input.<p>\n");
|
|
}
|
|
else {
|
|
int i, ch;
|
|
|
|
printf("Standard input:<br>\n<pre>\n");
|
|
for (i = 0; i < len; i++) {
|
|
if ((ch = getchar()) < 0) {
|
|
printf("Error: Not enough bytes received on standard input<p>\n");
|
|
break;
|
|
}
|
|
putchar(ch);
|
|
}
|
|
printf("\n</pre><p>\n");
|
|
}
|
|
|
|
|
|
printf("<form action=\"/\" enctype=\"multipart/form-data\" method=\"post\"><p><input type=\"file\" name=\"datafile\" ></p></form>");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PrintEnv("Request environment", environ);
|
|
PrintEnv("Initial environment", initialEnv);
|
|
} /* while */
|
|
|
|
return 0;
|
|
}
|