155 lines
2.9 KiB
C++
155 lines
2.9 KiB
C++
/**********************************************************************/
|
||
/** Microsoft Windows NT **/
|
||
/** Copyright(c) Microsoft Corp., 1993 **/
|
||
/**********************************************************************/
|
||
|
||
/*
|
||
utility.cxx
|
||
|
||
This module contains routines of general utility.
|
||
|
||
|
||
FILE HISTORY:
|
||
KeithMo 17-Mar-1993 Created.
|
||
|
||
*/
|
||
|
||
|
||
#include "w3p.hxx"
|
||
#include <time.h>
|
||
|
||
//
|
||
// Private constants.
|
||
//
|
||
|
||
//
|
||
// The number of times to retry outputting a log item
|
||
//
|
||
|
||
#define LOG_FILE_RETRIES 2
|
||
|
||
//
|
||
// Private globals.
|
||
//
|
||
|
||
|
||
//
|
||
// Private prototypes.
|
||
//
|
||
|
||
/*******************************************************************
|
||
|
||
NAME: ::SkipNonWhite
|
||
|
||
SYNOPSIS: Returns the first whitespace character starting
|
||
from the passed position
|
||
|
||
HISTORY:
|
||
Johnl 21-Sep-1994 Created
|
||
|
||
********************************************************************/
|
||
|
||
CHAR * SkipNonWhite( CHAR * pch )
|
||
{
|
||
while ( *pch && !ISWHITEA( *pch ) && *pch != '\n' )
|
||
pch++;
|
||
|
||
return pch;
|
||
}
|
||
|
||
CHAR * SkipTo( CHAR * pch, CHAR ch )
|
||
{
|
||
while ( *pch && *pch != '\n' && *pch != ch )
|
||
pch++;
|
||
|
||
return pch;
|
||
}
|
||
|
||
/*******************************************************************
|
||
|
||
NAME: ::SkipWhite
|
||
|
||
SYNOPSIS: Skips white space starting at the passed point in the string
|
||
and returns the next non-white space character.
|
||
|
||
HISTORY:
|
||
Johnl 23-Aug-1994 Created
|
||
|
||
********************************************************************/
|
||
|
||
CHAR * SkipWhite( CHAR * pch )
|
||
{
|
||
while ( ISWHITEA( *pch ) )
|
||
{
|
||
pch++;
|
||
}
|
||
|
||
return pch;
|
||
}
|
||
|
||
/*******************************************************************
|
||
|
||
NAME: IsPointNine
|
||
|
||
SYNOPSIS: Determines if the HTTP request is a 0.9 request (has no
|
||
version number)
|
||
|
||
ENTRY: pchReq - HTTP request to look in
|
||
|
||
RETURNS: TRUE if this is a 0.9 request, FALSE if not
|
||
|
||
HISTORY:
|
||
Johnl 08-Sep-1994 Created
|
||
|
||
********************************************************************/
|
||
|
||
BOOL IsPointNine( CHAR * pchReq )
|
||
{
|
||
//
|
||
// If there's no '\n' then we don't have a complete request yet
|
||
//
|
||
|
||
if ( !strchr( pchReq, '\n' ))
|
||
return FALSE;
|
||
|
||
//
|
||
// Skip white space at beginning of request.
|
||
//
|
||
pchReq = ::SkipWhite( pchReq );
|
||
|
||
//
|
||
// Should be at a 'GET' now.
|
||
//
|
||
|
||
if (*pchReq != 'G' && *pchReq != 'g')
|
||
{
|
||
return FALSE;
|
||
}
|
||
|
||
//
|
||
// Skip the rest of the verb, whitespace, and the URL.
|
||
// URL.
|
||
|
||
pchReq = ::SkipNonWhite( pchReq );
|
||
pchReq = ::SkipWhite( pchReq );
|
||
pchReq = ::SkipNonWhite( pchReq );
|
||
|
||
//
|
||
// Skip white space after the URL
|
||
//
|
||
pchReq = ::SkipWhite( pchReq );
|
||
|
||
if (*pchReq == '\n' || *pchReq == '\0')
|
||
{
|
||
return TRUE;
|
||
}
|
||
|
||
return FALSE;
|
||
|
||
}
|
||
|
||
|
||
//
|
||
// Private functions.
|
||
//
|
||
|