Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions
nsNoAuthURLParser Class Reference

#include <nsURLParsers.h>

Inheritance diagram for nsNoAuthURLParser:
Inheritance graph
[legend]
Collaboration diagram for nsNoAuthURLParser:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void ParseAfterScheme (const char *spec, PRInt32 specLen, PRUint32 *authPos, PRInt32 *authLen, PRUint32 *pathPos, PRInt32 *pathLen)
void parseURL (in string spec, in long specLen, out unsigned long schemePos, out long schemeLen, out unsigned long authorityPos, out long authorityLen, out unsigned long pathPos, out long pathLen)
 The string to parse in the following methods may be given as a null terminated string, in which case the length argument should be -1.
void parseAuthority (in string authority, in long authorityLen, out unsigned long usernamePos, out long usernameLen, out unsigned long passwordPos, out long passwordLen, out unsigned long hostnamePos, out long hostnameLen, out long port)
 ParseAuthority breaks the authority string up into its 4 components: username, password, hostname, and hostport.
void parseUserInfo (in string userinfo, in long userinfoLen, out unsigned long usernamePos, out long usernameLen, out unsigned long passwordPos, out long passwordLen)
 userinfo = <username>:<password>
void parseServerInfo (in string serverinfo, in long serverinfoLen, out unsigned long hostnamePos, out long hostnameLen, out long port)
 serverinfo = <hostname>:<port>
void parsePath (in string path, in long pathLen, out unsigned long filepathPos, out long filepathLen, out unsigned long paramPos, out long paramLen, out unsigned long queryPos, out long queryLen, out unsigned long refPos, out long refLen)
 ParsePath breaks the path string up into its 4 major components: a file path, a param string, a query string, and a reference string.
void parseFilePath (in string filepath, in long filepathLen, out unsigned long directoryPos, out long directoryLen, out unsigned long basenamePos, out long basenameLen, out unsigned long extensionPos, out long extensionLen)
 ParseFilePath breaks the file path string up into: the directory portion, file base name, and file extension.
void parseFileName (in string filename, in long filenameLen, out unsigned long basenamePos, out long basenameLen, out unsigned long extensionPos, out long extensionLen)
 filename = <basename>.

Detailed Description

Definition at line 76 of file nsURLParsers.h.


Member Function Documentation

void nsNoAuthURLParser::ParseAfterScheme ( const char *  spec,
PRInt32  specLen,
PRUint32 authPos,
PRInt32 authLen,
PRUint32 pathPos,
PRInt32 pathLen 
) [virtual]

Implements nsBaseURLParser.

Definition at line 387 of file nsURLParsers.cpp.

{
    NS_PRECONDITION(specLen >= 0, "unexpected");

    // everything is the path
    PRUint32 pos = 0;
    switch (CountConsecutiveSlashes(spec, specLen)) {
    case 0:
    case 1:
        break;
    case 2:
        {
            const char *p = nsnull;
            if (specLen > 2) {
                // looks like there is an authority section
#if defined(XP_WIN) || defined(XP_OS2)
                // if the authority looks like a drive number then we
                // really want to treat it as part of the path
                if ((specLen > 3) && (spec[3] == ':' || spec[3] == '|') &&
                    nsCRT::IsAsciiAlpha(spec[2]) &&
                    ((specLen == 4) || (spec[4] == '/') || (spec[4] == '\\'))) {
                    pos = 1;
                    break;  
                } 
#endif
                p = (const char *) memchr(spec + 2, '/', specLen - 2);
            }
            if (p) {
                SET_RESULT(auth, 2, p - (spec + 2));
                SET_RESULT(path, p - spec, specLen - (p - spec));
            }
            else {
                SET_RESULT(auth, 2, specLen - 2);
                SET_RESULT(path, 0, -1);
            }
            return;
        }
    default:
        pos = 2;
        break;
    }
    SET_RESULT(auth, pos, 0);
    SET_RESULT(path, pos, specLen - pos);
}

Here is the call graph for this function:

void nsIURLParser::parseAuthority ( in string  authority,
in long  authorityLen,
out unsigned long  usernamePos,
out long  usernameLen,
out unsigned long  passwordPos,
out long  passwordLen,
out unsigned long  hostnamePos,
out long  hostnameLen,
out long  port 
) [inherited]

ParseAuthority breaks the authority string up into its 4 components: username, password, hostname, and hostport.

auth = <username>:<password><hostname>:<port>

void nsIURLParser::parseFileName ( in string  filename,
in long  filenameLen,
out unsigned long  basenamePos,
out long  basenameLen,
out unsigned long  extensionPos,
out long  extensionLen 
) [inherited]

filename = <basename>.

<extension>

void nsIURLParser::parseFilePath ( in string  filepath,
in long  filepathLen,
out unsigned long  directoryPos,
out long  directoryLen,
out unsigned long  basenamePos,
out long  basenameLen,
out unsigned long  extensionPos,
out long  extensionLen 
) [inherited]

ParseFilePath breaks the file path string up into: the directory portion, file base name, and file extension.

filepath = <directory><basename>.<extension>

void nsIURLParser::parsePath ( in string  path,
in long  pathLen,
out unsigned long  filepathPos,
out long  filepathLen,
out unsigned long  paramPos,
out long  paramLen,
out unsigned long  queryPos,
out long  queryLen,
out unsigned long  refPos,
out long  refLen 
) [inherited]

ParsePath breaks the path string up into its 4 major components: a file path, a param string, a query string, and a reference string.

path = <filepath>;?<query>#<ref>

void nsIURLParser::parseServerInfo ( in string  serverinfo,
in long  serverinfoLen,
out unsigned long  hostnamePos,
out long  hostnameLen,
out long  port 
) [inherited]

serverinfo = <hostname>:<port>

void nsIURLParser::parseURL ( in string  spec,
in long  specLen,
out unsigned long  schemePos,
out long  schemeLen,
out unsigned long  authorityPos,
out long  authorityLen,
out unsigned long  pathPos,
out long  pathLen 
) [inherited]

The string to parse in the following methods may be given as a null terminated string, in which case the length argument should be -1.

Out parameters of the following methods are all optional (ie. the caller may pass-in a NULL value if the corresponding results are not needed). Signed out parameters may hold a value of -1 if the corresponding result is not part of the string being parsed.

The parsing routines attempt to be as forgiving as possible. ParseSpec breaks the URL string up into its 3 major components: a scheme, an authority section (hostname, etc.), and a path.

spec = <scheme>://<authority><path>

void nsIURLParser::parseUserInfo ( in string  userinfo,
in long  userinfoLen,
out unsigned long  usernamePos,
out long  usernameLen,
out unsigned long  passwordPos,
out long  passwordLen 
) [inherited]

userinfo = <username>:<password>


The documentation for this class was generated from the following files: