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.
 
 
 
 
 
 

239 lines
4.6 KiB

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
parseurl.h
Abstract:
Header for parseurl.c and protocol-specific parsers
Author:
Richard L Firth (rfirth) 26-Apr-1995
Revision History:
26-Apr-1995
Created
--*/
#if defined(__cplusplus)
extern "C" {
#endif
//
// manifests
//
#define SAFE 0x00 // character is safe in all schemes
#define SCHEME_FTP 0x01 // character is unsafe in FTP scheme
#define SCHEME_GOPHER 0x02 // character is unsafe in gopher scheme
#define SCHEME_HTTP 0x04 // character is unsafe in HTTP scheme
#define UNSAFE 0x80 // character is unsafe in all schemes
#define SCHEME_ANY (SCHEME_FTP | SCHEME_GOPHER | SCHEME_HTTP)
//
// types
//
typedef
DWORD
(*LPFN_URL_PARSER)(
LPHINTERNET,
LPSTR,
DWORD,
LPSTR,
DWORD,
DWORD,
DWORD_PTR
);
//
// prototypes
//
BOOL
IsValidUrl(
IN LPCSTR lpszUrl
);
BOOL
DoesSchemeRequireSlashes(
IN LPSTR lpszScheme,
IN DWORD dwSchemeLength,
IN BOOL bHasHostName
);
DWORD
ParseUrl(
IN OUT LPHINTERNET hInternet,
IN LPVOID hMapped,
IN LPCSTR Url,
IN LPCSTR Headers,
IN DWORD HeadersLength,
IN DWORD OpenFlags,
IN DWORD_PTR Context
);
DWORD
CrackUrl(
IN OUT LPSTR lpszUrl,
IN DWORD dwUrlLength,
IN BOOL bEscape,
OUT LPINTERNET_SCHEME lpSchemeType OPTIONAL,
OUT LPSTR* lpszSchemeName OPTIONAL,
OUT LPDWORD lpdwSchemeNameLength OPTIONAL,
OUT LPSTR* lpszHostName OPTIONAL,
OUT LPDWORD lpdwHostNameLength OPTIONAL,
OUT LPINTERNET_PORT lpServerPort OPTIONAL,
OUT LPSTR* lpszUserName OPTIONAL,
OUT LPDWORD lpdwUserNameLength OPTIONAL,
OUT LPSTR* lpszPassword OPTIONAL,
OUT LPDWORD lpdwPasswordLength OPTIONAL,
OUT LPSTR* UrlPath OPTIONAL,
OUT LPDWORD lpdwUrlPathLength OPTIONAL,
OUT LPSTR* lpszExtraInfo OPTIONAL,
OUT LPDWORD lpdwExtraInfoLength OPTIONAL,
OUT LPBOOL pHavePort
);
DWORD
EncodeAuthorityComponent(
IN LPSTR Component,
IN DWORD ComponentLength,
OUT LPSTR EncodedComponent,
IN OUT LPDWORD EncodedComponentLength
);
DWORD
EncodeUrlPath(
IN DWORD Flags,
IN DWORD SchemeFlags,
IN LPSTR UrlPath,
IN DWORD UrlPathLength,
OUT LPSTR EncodedUrlPath,
IN OUT LPDWORD EncodedUrlPathLength
);
//
// flags for EncodeUrlPath
//
#define NO_ENCODE_PATH_SEP 0x00000001
DWORD
DecodeUrl(
IN LPSTR Url,
IN DWORD UrlLength,
OUT LPSTR UnescapedString,
IN OUT LPDWORD UnescapedLength
);
DWORD
DecodeUrlInSitu(
IN LPSTR BufferAddress,
IN OUT LPDWORD BufferLength
);
DWORD
DecodeUrlStringInSitu(
IN LPSTR BufferAddress,
IN OUT LPDWORD BufferLength
);
DWORD
GetUrlAddressInfo(
IN OUT LPSTR* Url,
IN OUT LPDWORD UrlLength,
OUT LPSTR* PartOne,
OUT LPDWORD PartOneLength,
OUT LPBOOL PartOneEscape,
OUT LPSTR* PartTwo,
OUT LPDWORD PartTwoLength,
OUT LPBOOL PartTwoEscape
);
DWORD
GetUrlAddress(
IN OUT LPSTR* lpszUrl,
OUT LPDWORD lpdwUrlLength,
OUT LPSTR* lpszUserName OPTIONAL,
OUT LPDWORD lpdwUserNameLength OPTIONAL,
OUT LPSTR* lpszPassword OPTIONAL,
OUT LPDWORD lpdwPasswordLength OPTIONAL,
OUT LPSTR* lpszHostName OPTIONAL,
OUT LPDWORD lpdwHostNameLength OPTIONAL,
OUT INTERNET_PORT* lpPort OPTIONAL,
OUT LPBOOL pHavePort
);
INTERNET_SCHEME
MapUrlSchemeName(
IN LPSTR lpszSchemeName,
IN DWORD dwSchemeNameLength
);
LPSTR
MapUrlScheme(
IN INTERNET_SCHEME Scheme,
OUT LPDWORD lpdwSchemeNameLength
);
LPSTR
MapUrlSchemeToName(
IN INTERNET_SCHEME Scheme
);
//
// protocol-specific URL parsers
//
DWORD
ParseFtpUrl(
IN OUT LPHINTERNET hInternet,
IN LPSTR Url,
IN DWORD SchemeLength,
IN LPSTR Headers,
IN DWORD HeadersLength,
IN DWORD OpenFlags,
IN DWORD_PTR Context
);
DWORD
ParseGopherUrl(
IN OUT LPHINTERNET hInternet,
IN LPSTR Url,
IN DWORD SchemeLength,
IN LPSTR Headers,
IN DWORD HeadersLength,
IN DWORD OpenFlags,
IN DWORD_PTR Context
);
DWORD
GopherLocatorToUrl(
IN LPSTR Locator,
OUT LPSTR Buffer,
IN DWORD BufferLength,
OUT LPDWORD UrlLength
);
DWORD
ParseHttpUrl(
IN OUT LPHINTERNET hInternet,
IN LPSTR Url,
IN DWORD SchemeLength,
IN LPSTR Headers,
IN DWORD HeadersLength,
IN DWORD OpenFlags,
IN DWORD_PTR Context
);
#if defined(__cplusplus)
}
#endif