home *** CD-ROM | disk | FTP | other *** search
- <HTML><TITLE>NPH.c</TITLE><BODY><PRE>/*____________________________________________________________________________*\
- *
-
- Copyright (c) 1997 John Roy. All rights reserved.
-
- These sources, libraries and applications are
- FREE FOR COMMERCIAL AND NON-COMMERCIAL USE
- as long as the following conditions are adhered to.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- 3. Redistributions of any form whatsoever and all advertising materials
- mentioning features must contain the following
- acknowledgment:
- "This product includes software developed by John Roy
- (http://www.johnroy.com/pi3/)."
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL THE AUTHORS OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
- *____________________________________________________________________________*|
- *
- * $Source: NPH.c$
- * $Date: Sun Aug 10 06:41:31 1997$
- *
- Description:
- Simple <A HREF="/pidocs/Objects/HTTP.html#CGI">CGI</A> program which sends a full response (Non parsed headers) to
- the server.
-
- Speaks HTTP/1.0
- \*____________________________________________________________________________*/
- /* $SourceTop:$ */
-
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
-
- /*____________________________________________________________________________*\
- *
- Function:
- Synopsis:
- Description:
- \*____________________________________________________________________________*/
- int main( int iArgc, const char *ppArgv[] )
- {
- const char *pQuery = getenv( "QUERY_STRING" );
- const char *pProgram = __FILE__;
-
- if ( !pQuery || !*pQuery )
- {
- /* --- Usage --- */
- printf("Content-Type: text/html\n");
- printf("\n" );
- printf("<HTML>\n");
- printf("<TITLE>%s Usage</TITLE>\n", pProgram );
- printf("<BODY>\n");
- printf("<H1>%s Usage</H1>\n", pProgram);
- printf("Specify the HTTP response code to send in \
- the QUERY_STRING<BR>\n");
- printf("Example:\n" );
- printf("<CODE>http://my_host/this_script?501</CODE><BR>\n" );
- printf("<STRONG>Note:</STRONG> This program will not check that the \
- reponse code specified is a valid HTTP response code.<BR>\n" );
- printf("</HTML>\n");
- printf("</BODY>\n");
- }
- else
- {
- time_t tT;
-
- /* --- Headers --- */
- printf("HTTP/1.0 %s No comment\n", pQuery );
- if ( time( &tT ) )
- {
- enum { BUF_SIZE=127 };
- char szBuf[BUF_SIZE+1];
- struct tm *pTm = gmtime( &tT );
- if ( pTm )
- {
- strftime( szBuf, BUF_SIZE, "%a, %d %b %Y %H:%M:%S GMT",
- gmtime( &tT ) );
- };
- printf( "Date: %s\n", szBuf );
- };
- printf("Server: Pi3-NPHCGI/1.0\n" );
- printf("Content-Type: text/html\n" );
- printf("\n" );
-
- /* --- Body --- */
- printf("<HTML>\n");
- printf("<TITLE>%s No comment</TITLE>\n", pQuery );
- printf("<BODY>\n");
- printf("<H1>%s No comment</H1>\n", pQuery );
- printf("<A HREF="/pidocs/Objects/HTTP.html#CGI">CGI</A> program sent a full response with HTTP response code %s\n",
- pQuery );
- printf("</HTML>\n");
- printf("</BODY>\n");
- };
-
- return 0;
- }
-
- </PRE></BODY></HTML>