The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

/*
** ____ _
** ___| _ \ ___ _ __| |
** / _ \ |_) / _ \ '__| |
** | __/ __/ __/ | | |
** \___|_| \___|_| |_|
**
** ePerl -- Embedded Perl 5 for HTML
**
** ePerl interprets a HTML markup file bristled with Perl 5 program
** statements by expanding the Perl 5 code. It operates as a stand-alone
** NPH-CGI/1.1 compliant Unix program and produces pure HTML markup code
** as the resulting data.
**
** =====================================================================
**
** Copyright (c) 1996,1997 Ralf S. Engelschall, All rights reserved.
**
** 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. All advertising materials mentioning features or use of this
** software must display the following acknowledgment:
** "This product includes software developed by
** Ralf S. Engelschall <rse@engelschall.com>."
**
** 4. Redistributions of any form whatsoever must retain the following
** acknowledgment:
** "This product includes software developed by
** Ralf S. Engelschall <rse@engelschall.com>."
**
** 5. The names "ePerl" and "Embedded Perl 5 for HTML" must not be used to
** endorse or promote products derived from this software without
** prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``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 RALF S. ENGELSCHALL OR HIS 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.
**
** =====================================================================
**
** eperl_http.c -- ePerl HTTP stuff
*/
#include "eperl_global.h"
#include "eperl_proto.h"
/*
**
** print a standard HTTP reponse of header lines
**
*/
void PrintHTTPResponse(void)
{
char *cp;
if ((cp = getenv("SERVER_PROTOCOL")) == NULL)
cp = "HTTP/1.0";
printf("%s 200 OK\n", cp);
if ((cp = getenv("SERVER_SOFTWARE")) == NULL)
cp = "unknown-server/0.0";
printf("Server: %s %s Perl/%s\n", cp, ePerl_WebID, AC_perlvers);
printf("Date: %s\n", WebTime());
printf("Connection: close\n");
return;
}
/*
**
** Give back acceptable HTTP time format string
**
*/
char *WebTime(void)
{
time_t t;
struct tm *tm;
char *cp;
t = time(&t);
tm = localtime(&t);
cp = ctime(&t);
cp[strlen(cp)-1] = NUL;
return cp;
}
/*EOF*/