#include #include #include int main(int argc,char **argv); char *showenv(char **env,char *envname); int main(int argc,char **argv) { char *SERVER_SOFTWARE,*SERVER_NAME,*GATEWAY_INTERFACE,*SERVER_PROTOCOL, *SERVER_PORT,*REQUEST_METHOD,*PATH_INFO,*PATH_TRANSLATED, *SCRIPT_NAME,*QUERY_STRING,*REMOTE_HOST,*REMOTE_ADDR,*AUTH_TYPE, *REMOTE_USER,*REMOTE_IDENT,*CONTENT_TYPE,*CONTENT_LENGTH, *HTTP_ACCEPT,*HTTP_USER_AGENT; int a; char buf[1024],*p; printf("Content-type: text/html\n"); printf("--- arguments ---
"); printf("argc=%d
",argc); for(a=0;a",a,argv[a]); } printf("--- environment ---
"); showenv(&SERVER_SOFTWARE,"SERVER_SOFTWARE"); showenv(&SERVER_NAME,"SERVER_NAME"); showenv(&GATEWAY_INTERFACE,"GATEWAY_INTERFACE"); showenv(&SERVER_PROTOCOL,"SERVER_PROTOCOL"); showenv(&SERVER_PORT,"SERVER_PORT"); showenv(&REQUEST_METHOD,"REQUEST_METHOD"); showenv(&PATH_INFO,"PATH_INFO"); showenv(&PATH_TRANSLATED,"PATH_TRANSLATED"); showenv(&SCRIPT_NAME,"SCRIPT_NAME"); showenv(&QUERY_STRING,"QUERY_STRING"); showenv(&REMOTE_HOST,"REMOTE_HOST"); showenv(&REMOTE_ADDR,"REMOTE_ADDR"); showenv(&AUTH_TYPE,"AUTH_TYPE"); showenv(&REMOTE_USER,"REMOTE_USER"); showenv(&REMOTE_IDENT,"REMOTE_IDENT"); showenv(&CONTENT_TYPE,"CONTENT_TYPE"); showenv(&CONTENT_LENGTH,"CONTENT_LENGTH"); showenv(&HTTP_ACCEPT,"HTTP_ACCEPT"); showenv(&HTTP_USER_AGENT,"HTTP_USER_AGENT"); if (REQUEST_METHOD != NULL) { if (strcasecmp(REQUEST_METHOD,"POST") == 0) { printf("--- stdin ---
"); while(fgets(buf,sizeof(buf),stdin) != NULL) { for(p=buf; *p;) { if ((*p == 13) || (*p == 10)) strcpy(p,p+1); else p++; } printf("%s
",buf); } } } fflush(stdout); return 0; } char *showenv(char **env,char *envname) { if ((*env = getenv(envname)) == NULL) { printf("unset %s
",envname); } else { printf("%s=%s
",envname,*env); } return *env; }