Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

122 lines
2.9 KiB

/*
* U R L . H
*
* Url normalization/canonicalization
*
* Copyright 1986-1997 Microsoft Corporation, All Rights Reserved
*/
#ifndef _URL_H_
#define _URL_H_
// ACP Language vs. DBCS -----------------------------------------------------
//
// ACP Language vs. DBCS -----------------------------------------------------
//
// FIsSystemDBCS()
//
typedef enum {
DBCS_UNKNOWN = 0,
DBCS_NO,
DBCS_YES
} LANG_DBCS;
DEC_GLOBAL LANG_DBCS gs_dbcs = DBCS_UNKNOWN;
inline BOOL
FIsSystemDBCS()
{
if (DBCS_UNKNOWN == gs_dbcs)
{
UINT uPrimaryLangID = PRIMARYLANGID(GetSystemDefaultLangID());
if ((uPrimaryLangID == LANG_JAPANESE) ||
(uPrimaryLangID == LANG_CHINESE) ||
(uPrimaryLangID == LANG_KOREAN))
{
gs_dbcs = DBCS_YES;
}
else
gs_dbcs = DBCS_NO;
}
return (DBCS_YES == gs_dbcs);
}
inline BOOL
FIsDBCSTrailingByte (const CHAR * pch, LONG cch)
{
// Checks to see if the previous byte of the pointed to character is
// a lead byte if and only if there is characters preceeding and the
// system is DBCS.
//
Assert (pch);
return ((0 < cch) && FIsSystemDBCS() && IsDBCSLeadByte(*(pch - 1)));
}
inline BOOL
FIsDriveTrailingChar(const CHAR * pch, LONG cch)
{
// Checks if the character we are pointing at stands after the drive letter
//
Assert(pch);
return ((2 < cch) && (':' == *(pch - 1)) &&
((('a' <= *(pch - 2)) && ('z' >= *(pch - 2))) ||
(('A' <= *(pch - 2)) && ('Z' >= *(pch - 2)))));
}
inline BOOL
FIsDriveTrailingChar(const WCHAR * pwch, LONG cch)
{
// Checks if the character we are pointing at stands after the drive letter
//
Assert(pwch);
return ((2 < cch) && (L':' == *(pwch - 1)) &&
(((L'a' <= *(pwch - 2)) && (L'z' >= *(pwch - 2))) ||
((L'A' <= *(pwch - 2)) && (L'Z' >= *(pwch - 2)))));
}
// Processing ----------------------------------------------------------------
//
SCODE __fastcall
ScStripAndCheckHttpPrefix (
/* [in] */ const IEcb& ecb,
/* [in/out] */ LPCWSTR * ppwszRequest);
LPCWSTR __fastcall
PwszUrlStrippedOfPrefix (
/* [in] */ LPCWSTR pwszUrl);
VOID __fastcall HttpUriEscape (
/* [in] */ LPCSTR pszSrc,
/* [out] */ auto_heap_ptr<CHAR>& pszDst);
VOID __fastcall HttpUriUnescape (
/* [in] */ const LPCSTR pszUrl,
/* [out] */ LPSTR pszUnescaped);
// Path conflicts ------------------------------------------------------------
//
BOOL __fastcall FPathConflict (
/* [in] */ LPCWSTR pwszSrc,
/* [in] */ LPCWSTR pwszDst);
BOOL __fastcall FSizedPathConflict (
/* [in] */ LPCWSTR pwszSrc,
/* [in] */ UINT cchSrc,
/* [in] */ LPCWSTR pwszDst,
/* [in] */ UINT cchDst);
BOOL __fastcall FIsImmediateParentUrl (
/* [in] */ LPCWSTR pwszParent,
/* [in] */ LPCWSTR pwszChild);
SCODE __fastcall
ScConstructRedirectUrl (
/* [in] */ const IEcb& ecb,
/* [in] */ BOOL fNeedSlash,
/* [out] */ LPSTR * ppszUrl,
/* [in] */ LPCWSTR pwszServer = NULL);
#endif // _URL_H_