Annotation of win32/apache22/srclib/apr-util/include/apr_uri.h, revision 1.1
1.1 ! moko 1: /* Licensed to the Apache Software Foundation (ASF) under one or more
! 2: * contributor license agreements. See the NOTICE file distributed with
! 3: * this work for additional information regarding copyright ownership.
! 4: * The ASF licenses this file to You under the Apache License, Version 2.0
! 5: * (the "License"); you may not use this file except in compliance with
! 6: * the License. You may obtain a copy of the License at
! 7: *
! 8: * http://www.apache.org/licenses/LICENSE-2.0
! 9: *
! 10: * Unless required by applicable law or agreed to in writing, software
! 11: * distributed under the License is distributed on an "AS IS" BASIS,
! 12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
! 13: * See the License for the specific language governing permissions and
! 14: * limitations under the License.
! 15: */
! 16:
! 17: /*
! 18: * apr_uri.h: External Interface of apr_uri.c
! 19: */
! 20:
! 21: /**
! 22: * @file apr_uri.h
! 23: * @brief APR-UTIL URI Routines
! 24: */
! 25:
! 26: #ifndef APR_URI_H
! 27: #define APR_URI_H
! 28:
! 29: #include "apu.h"
! 30:
! 31: #include "apr_network_io.h"
! 32:
! 33: #ifdef __cplusplus
! 34: extern "C" {
! 35: #endif
! 36:
! 37: /**
! 38: * @defgroup APR_Util_URI URI
! 39: * @ingroup APR_Util
! 40: * @{
! 41: */
! 42:
! 43: #define APR_URI_FTP_DEFAULT_PORT 21 /**< default FTP port */
! 44: #define APR_URI_SSH_DEFAULT_PORT 22 /**< default SSH port */
! 45: #define APR_URI_TELNET_DEFAULT_PORT 23 /**< default telnet port */
! 46: #define APR_URI_GOPHER_DEFAULT_PORT 70 /**< default Gopher port */
! 47: #define APR_URI_HTTP_DEFAULT_PORT 80 /**< default HTTP port */
! 48: #define APR_URI_POP_DEFAULT_PORT 110 /**< default POP port */
! 49: #define APR_URI_NNTP_DEFAULT_PORT 119 /**< default NNTP port */
! 50: #define APR_URI_IMAP_DEFAULT_PORT 143 /**< default IMAP port */
! 51: #define APR_URI_PROSPERO_DEFAULT_PORT 191 /**< default Prospero port */
! 52: #define APR_URI_WAIS_DEFAULT_PORT 210 /**< default WAIS port */
! 53: #define APR_URI_LDAP_DEFAULT_PORT 389 /**< default LDAP port */
! 54: #define APR_URI_HTTPS_DEFAULT_PORT 443 /**< default HTTPS port */
! 55: #define APR_URI_RTSP_DEFAULT_PORT 554 /**< default RTSP port */
! 56: #define APR_URI_SNEWS_DEFAULT_PORT 563 /**< default SNEWS port */
! 57: #define APR_URI_ACAP_DEFAULT_PORT 674 /**< default ACAP port */
! 58: #define APR_URI_NFS_DEFAULT_PORT 2049 /**< default NFS port */
! 59: #define APR_URI_TIP_DEFAULT_PORT 3372 /**< default TIP port */
! 60: #define APR_URI_SIP_DEFAULT_PORT 5060 /**< default SIP port */
! 61:
! 62: /** Flags passed to unparse_uri_components(): */
! 63: /** suppress "scheme://user\@site:port" */
! 64: #define APR_URI_UNP_OMITSITEPART (1U<<0)
! 65: /** Just omit user */
! 66: #define APR_URI_UNP_OMITUSER (1U<<1)
! 67: /** Just omit password */
! 68: #define APR_URI_UNP_OMITPASSWORD (1U<<2)
! 69: /** omit "user:password\@" part */
! 70: #define APR_URI_UNP_OMITUSERINFO (APR_URI_UNP_OMITUSER | \
! 71: APR_URI_UNP_OMITPASSWORD)
! 72: /** Show plain text password (default: show XXXXXXXX) */
! 73: #define APR_URI_UNP_REVEALPASSWORD (1U<<3)
! 74: /** Show "scheme://user\@site:port" only */
! 75: #define APR_URI_UNP_OMITPATHINFO (1U<<4)
! 76: /** Omit the "?queryarg" from the path */
! 77: #define APR_URI_UNP_OMITQUERY (1U<<5)
! 78:
! 79: /** @see apr_uri_t */
! 80: typedef struct apr_uri_t apr_uri_t;
! 81:
! 82: /**
! 83: * A structure to encompass all of the fields in a uri
! 84: */
! 85: struct apr_uri_t {
! 86: /** scheme ("http"/"ftp"/...) */
! 87: char *scheme;
! 88: /** combined [user[:password]\@]host[:port] */
! 89: char *hostinfo;
! 90: /** user name, as in http://user:passwd\@host:port/ */
! 91: char *user;
! 92: /** password, as in http://user:passwd\@host:port/ */
! 93: char *password;
! 94: /** hostname from URI (or from Host: header) */
! 95: char *hostname;
! 96: /** port string (integer representation is in "port") */
! 97: char *port_str;
! 98: /** the request path (or NULL if only scheme://host was given) */
! 99: char *path;
! 100: /** Everything after a '?' in the path, if present */
! 101: char *query;
! 102: /** Trailing "#fragment" string, if present */
! 103: char *fragment;
! 104:
! 105: /** structure returned from gethostbyname() */
! 106: struct hostent *hostent;
! 107:
! 108: /** The port number, numeric, valid only if port_str != NULL */
! 109: apr_port_t port;
! 110:
! 111: /** has the structure been initialized */
! 112: unsigned is_initialized:1;
! 113:
! 114: /** has the DNS been looked up yet */
! 115: unsigned dns_looked_up:1;
! 116: /** has the dns been resolved yet */
! 117: unsigned dns_resolved:1;
! 118: };
! 119:
! 120: /* apr_uri.c */
! 121: /**
! 122: * Return the default port for a given scheme. The schemes recognized are
! 123: * http, ftp, https, gopher, wais, nntp, snews, and prospero
! 124: * @param scheme_str The string that contains the current scheme
! 125: * @return The default port for this scheme
! 126: */
! 127: APU_DECLARE(apr_port_t) apr_uri_port_of_scheme(const char *scheme_str);
! 128:
! 129: /**
! 130: * Unparse a apr_uri_t structure to an URI string. Optionally
! 131: * suppress the password for security reasons.
! 132: * @param p The pool to allocate out of
! 133: * @param uptr All of the parts of the uri
! 134: * @param flags How to unparse the uri. One of:
! 135: * <PRE>
! 136: * APR_URI_UNP_OMITSITEPART Suppress "scheme://user\@site:port"
! 137: * APR_URI_UNP_OMITUSER Just omit user
! 138: * APR_URI_UNP_OMITPASSWORD Just omit password
! 139: * APR_URI_UNP_OMITUSERINFO Omit "user:password\@" part
! 140: * APR_URI_UNP_REVEALPASSWORD Show plain text password (default: show XXXXXXXX)
! 141: * APR_URI_UNP_OMITPATHINFO Show "scheme://user\@site:port" only
! 142: * APR_URI_UNP_OMITQUERY Omit "?queryarg" or "#fragment"
! 143: * </PRE>
! 144: * @return The uri as a string
! 145: */
! 146: APU_DECLARE(char *) apr_uri_unparse(apr_pool_t *p,
! 147: const apr_uri_t *uptr,
! 148: unsigned flags);
! 149:
! 150: /**
! 151: * Parse a given URI, fill in all supplied fields of a apr_uri_t
! 152: * structure. This eliminates the necessity of extracting host, port,
! 153: * path, query info repeatedly in the modules.
! 154: * @param p The pool to allocate out of
! 155: * @param uri The uri to parse
! 156: * @param uptr The apr_uri_t to fill out
! 157: * @return APR_SUCCESS for success or error code
! 158: */
! 159: APU_DECLARE(apr_status_t) apr_uri_parse(apr_pool_t *p, const char *uri,
! 160: apr_uri_t *uptr);
! 161:
! 162: /**
! 163: * Special case for CONNECT parsing: it comes with the hostinfo part only
! 164: * @param p The pool to allocate out of
! 165: * @param hostinfo The hostinfo string to parse
! 166: * @param uptr The apr_uri_t to fill out
! 167: * @return APR_SUCCESS for success or error code
! 168: */
! 169: APU_DECLARE(apr_status_t) apr_uri_parse_hostinfo(apr_pool_t *p,
! 170: const char *hostinfo,
! 171: apr_uri_t *uptr);
! 172:
! 173: /** @} */
! 174: #ifdef __cplusplus
! 175: }
! 176: #endif
! 177:
! 178: #endif /* APR_URI_H */
E-mail: