1 /* libxml2 - Library for parsing XML documents
2 * Copyright (C) 2006-2019 Free Software Foundation, Inc.
3 *
4 * This file is not part of the GNU gettext program, but is used with
5 * GNU gettext.
6 *
7 * The original copyright notice is as follows:
8 */
9
10 /*
11 * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a copy
14 * of this software and associated documentation files (the "Software"), to deal
15 * in the Software without restriction, including without limitation the rights
16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17 * copies of the Software, and to permit persons to whom the Software is fur-
18 * nished to do so, subject to the following conditions:
19 *
20 * The above copyright notice and this permission notice shall be included in
21 * all copies or substantial portions of the Software.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
25 * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29 * THE SOFTWARE.
30 *
31 * Author: Daniel Veillard
32 */
33
34 /**
35 * Summary: library of generic URI related routines
36 * Description: library of generic URI related routines
37 * Implements RFC 2396
38 */
39
40 #ifndef __XML_URI_H__
41 #define __XML_URI_H__
42
43 #include <libxml/xmlversion.h>
44 #include <libxml/tree.h>
45
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49
50 /**
51 * xmlURI:
52 *
53 * A parsed URI reference. This is a struct containing the various fields
54 * as described in RFC 2396 but separated for further processing.
55 *
56 * Note: query is a deprecated field which is incorrectly unescaped.
57 * query_raw takes precedence over query if the former is set.
58 * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127
59 */
60 typedef struct _xmlURI xmlURI;
61 typedef xmlURI *xmlURIPtr;
62 struct _xmlURI {
63 char *scheme; /* the URI scheme */
64 char *opaque; /* opaque part */
65 char *authority; /* the authority part */
66 char *server; /* the server part */
67 char *user; /* the user part */
68 int port; /* the port number */
69 char *path; /* the path string */
70 char *query; /* the query string (deprecated - use with caution) */
71 char *fragment; /* the fragment identifier */
72 int cleanup; /* parsing potentially unclean URI */
73 char *query_raw; /* the query string (as it appears in the URI) */
74 };
75
76 /*
77 * This function is in tree.h:
78 * xmlChar * xmlNodeGetBase (xmlDocPtr doc,
79 * xmlNodePtr cur);
80 */
81 XMLPUBFUN xmlURIPtr XMLCALL
82 xmlCreateURI (void);
83 XMLPUBFUN xmlChar * XMLCALL
84 xmlBuildURI (const xmlChar *URI,
85 const xmlChar *base);
86 XMLPUBFUN xmlChar * XMLCALL
87 xmlBuildRelativeURI (const xmlChar *URI,
88 const xmlChar *base);
89 XMLPUBFUN xmlURIPtr XMLCALL
90 xmlParseURI (const char *str);
91 XMLPUBFUN xmlURIPtr XMLCALL
92 xmlParseURIRaw (const char *str,
93 int raw);
94 XMLPUBFUN int XMLCALL
95 xmlParseURIReference (xmlURIPtr uri,
96 const char *str);
97 XMLPUBFUN xmlChar * XMLCALL
98 xmlSaveUri (xmlURIPtr uri);
99 XMLPUBFUN void XMLCALL
100 xmlPrintURI (FILE *stream,
101 xmlURIPtr uri);
102 XMLPUBFUN xmlChar * XMLCALL
103 xmlURIEscapeStr (const xmlChar *str,
104 const xmlChar *list);
105 XMLPUBFUN char * XMLCALL
106 xmlURIUnescapeString (const char *str,
107 int len,
108 char *target);
109 XMLPUBFUN int XMLCALL
110 xmlNormalizeURIPath (char *path);
111 XMLPUBFUN xmlChar * XMLCALL
112 xmlURIEscape (const xmlChar *str);
113 XMLPUBFUN void XMLCALL
114 xmlFreeURI (xmlURIPtr uri);
115 XMLPUBFUN xmlChar* XMLCALL
116 xmlCanonicPath (const xmlChar *path);
117 XMLPUBFUN xmlChar* XMLCALL
118 xmlPathToURI (const xmlChar *path);
119
120 #ifdef __cplusplus
121 }
122 #endif
123 #endif /* __XML_URI_H__ */