annotate uriparser/src/UriRecompose.c @ 60:a2be1eba7adb

uriparser: import 0.8.5, close #878 @10m
author David Demelier <markand@malikania.fr>
date Fri, 13 Jul 2018 10:50:43 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * uriparser - RFC 3986 URI parsing library
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (C) 2007, Weijia Song <songweijia@gmail.com>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 * Copyright (C) 2007, Sebastian Pipping <sebastian@pipping.org>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * All rights reserved.
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 *
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * Redistribution and use in source and binary forms, with or without
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 * modification, are permitted provided that the following conditions
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * are met:
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 *
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * * Redistributions of source code must retain the above
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * copyright notice, this list of conditions and the following
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * disclaimer.
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 *
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * * Redistributions in binary form must reproduce the above
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 * copyright notice, this list of conditions and the following
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 * disclaimer in the documentation and/or other materials
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 * provided with the distribution.
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 *
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 * * Neither the name of the <ORGANIZATION> nor the names of its
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 * contributors may be used to endorse or promote products
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * derived from this software without specific prior written
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * permission.
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 *
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * OF THE POSSIBILITY OF SUCH DAMAGE.
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 /* What encodings are enabled? */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 #include <uriparser/UriDefsConfig.h>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 #if (!defined(URI_PASS_ANSI) && !defined(URI_PASS_UNICODE))
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 /* Include SELF twice */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 # ifdef URI_ENABLE_ANSI
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 # define URI_PASS_ANSI 1
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 # include "UriRecompose.c"
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 # undef URI_PASS_ANSI
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 # endif
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 # ifdef URI_ENABLE_UNICODE
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 # define URI_PASS_UNICODE 1
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 # include "UriRecompose.c"
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 # undef URI_PASS_UNICODE
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 # endif
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 #else
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 # ifdef URI_PASS_ANSI
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 # include <uriparser/UriDefsAnsi.h>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 # else
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 # include <uriparser/UriDefsUnicode.h>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 # include <wchar.h>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 # endif
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 #ifndef URI_DOXYGEN
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 # include <uriparser/Uri.h>
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 # include "UriCommon.h"
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 #endif
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
69
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 static int URI_FUNC(ToStringEngine)(URI_CHAR * dest, const URI_TYPE(Uri) * uri,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 int maxChars, int * charsWritten, int * charsRequired);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 int URI_FUNC(ToStringCharsRequired)(const URI_TYPE(Uri) * uri,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 int * charsRequired) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 const int MAX_CHARS = ((unsigned int)-1) >> 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 return URI_FUNC(ToStringEngine)(NULL, uri, MAX_CHARS, NULL, charsRequired);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 int URI_FUNC(ToString)(URI_CHAR * dest, const URI_TYPE(Uri) * uri,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 int maxChars, int * charsWritten) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 return URI_FUNC(ToStringEngine)(dest, uri, maxChars, charsWritten, NULL);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 static URI_INLINE int URI_FUNC(ToStringEngine)(URI_CHAR * dest,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 const URI_TYPE(Uri) * uri, int maxChars, int * charsWritten,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 int * charsRequired) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 int written = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 if ((uri == NULL) || ((dest == NULL) && (charsRequired == NULL))) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 return URI_ERROR_NULL;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 if (maxChars < 1) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 maxChars--; /* So we don't have to substract 1 for '\0' all the time */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 /* [01/19] result = "" */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 (*charsRequired) = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 /* [02/19] if defined(scheme) then */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 if (uri->scheme.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 /* [03/19] append scheme to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 const int charsToWrite
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 = (int)(uri->scheme.afterLast - uri->scheme.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 memcpy(dest + written, uri->scheme.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 (*charsRequired) += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 /* [04/19] append ":" to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 memcpy(dest + written, _UT(":"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 /* [05/19] endif; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 /* [06/19] if defined(authority) then */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 if (URI_FUNC(IsHostSet)(uri)) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 /* [07/19] append "//" to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 if (written + 2 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 memcpy(dest + written, _UT("//"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 2 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 written += 2;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 (*charsRequired) += 2;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 /* [08/19] append authority to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 /* UserInfo */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 if (uri->userInfo.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 const int charsToWrite = (int)(uri->userInfo.afterLast - uri->userInfo.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 memcpy(dest + written, uri->userInfo.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 memcpy(dest + written, _UT("@"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 (*charsRequired) += charsToWrite + 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 /* Host */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 if (uri->hostData.ip4 != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 /* IPv4 */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 int i = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 for (; i < 4; i++) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 const unsigned char value = uri->hostData.ip4->data[i];
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 const int charsToWrite = (value > 99) ? 3 : ((value > 9) ? 2 : 1);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 URI_CHAR text[4];
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 if (value > 99) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 text[0] = _UT('0') + (value / 100);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 text[1] = _UT('0') + ((value % 100) / 10);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 text[2] = _UT('0') + (value % 10);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 } else if (value > 9) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 text[0] = _UT('0') + (value / 10);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 text[1] = _UT('0') + (value % 10);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 text[0] = _UT('0') + value;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 text[charsToWrite] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 memcpy(dest + written, text, charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 if (i < 3) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 memcpy(dest + written, _UT("."),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 (*charsRequired) += charsToWrite + 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 } else if (uri->hostData.ip6 != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 /* IPv6 */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 int i = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 memcpy(dest + written, _UT("["),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
270
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 for (; i < 16; i++) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 const unsigned char value = uri->hostData.ip6->data[i];
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 if (written + 2 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 URI_CHAR text[3];
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 text[0] = URI_FUNC(HexToLetterEx)(value / 16, URI_FALSE);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 text[1] = URI_FUNC(HexToLetterEx)(value % 16, URI_FALSE);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 text[2] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 memcpy(dest + written, text, 2 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 written += 2;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
288 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 (*charsRequired) += 2;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 if (((i & 1) == 1) && (i < 15)) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 memcpy(dest + written, _UT(":"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
309
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 memcpy(dest + written, _UT("]"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 } else if (uri->hostData.ipFuture.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 /* IPvFuture */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 const int charsToWrite = (int)(uri->hostData.ipFuture.afterLast
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 - uri->hostData.ipFuture.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 memcpy(dest + written, _UT("["),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
332 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
333 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
334 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
336 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
339 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
341
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
342 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 memcpy(dest + written, uri->hostData.ipFuture.first, charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
347 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
350 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
352
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
354 memcpy(dest + written, _UT("]"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
355 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
356 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
358 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
359 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
360 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
362 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
363 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 (*charsRequired) += 1 + charsToWrite + 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
366 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 } else if (uri->hostText.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
368 /* Regname */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
369 const int charsToWrite = (int)(uri->hostText.afterLast - uri->hostText.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
370 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
371 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
372 memcpy(dest + written, uri->hostText.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
373 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
374 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
376 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
377 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
378 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
379 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
380 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
382 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
383 (*charsRequired) += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
384 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
385 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
386
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
387 /* Port */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
388 if (uri->portText.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
389 const int charsToWrite = (int)(uri->portText.afterLast - uri->portText.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
390 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
391 /* Leading ':' */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
392 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
393 memcpy(dest + written, _UT(":"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
394 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
395 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
396 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
397 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
398 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
399 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
400 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
401 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
402 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
403
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
404 /* Port number */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
405 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
406 memcpy(dest + written, uri->portText.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
407 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
408 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
409 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
410 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
411 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
412 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
413 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
414 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
415 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
416 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
417 (*charsRequired) += 1 + charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
418 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
419 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
420 /* [09/19] endif; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
421 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
422 /* [10/19] append path to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
423 /* Slash needed here? */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
424 if (uri->absolutePath || ((uri->pathHead != NULL)
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
425 && URI_FUNC(IsHostSet)(uri))) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
426 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
427 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
428 memcpy(dest + written, _UT("/"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
429 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
430 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
431 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
432 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
433 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
434 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
435 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
436 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
437 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
438 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
439 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
440 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
441 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
442
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
443 if (uri->pathHead != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
444 URI_TYPE(PathSegment) * walker = uri->pathHead;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
445 do {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
446 const int charsToWrite = (int)(walker->text.afterLast - walker->text.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
447 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
448 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
449 memcpy(dest + written, walker->text.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
450 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
451 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
452 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
453 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
454 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
455 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
456 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
457 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
458 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
459 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
460 (*charsRequired) += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
461 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
462
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
463 /* Not last segment -> append slash */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
464 if (walker->next != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
465 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
466 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
467 memcpy(dest + written, _UT("/"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
468 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
469 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
470 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
471 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
472 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
473 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
474 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
475 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
476 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
477 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
478 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
479 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
480 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
481
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
482 walker = walker->next;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
483 } while (walker != NULL);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
484 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
485 /* [11/19] if defined(query) then */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
486 if (uri->query.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
487 /* [12/19] append "?" to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
488 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
489 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
490 memcpy(dest + written, _UT("?"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
491 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
492 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
493 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
494 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
495 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
496 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
497 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
498 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
499 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
500 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
501 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
502 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
503 /* [13/19] append query to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
504 {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
505 const int charsToWrite
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
506 = (int)(uri->query.afterLast - uri->query.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
507 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
508 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
509 memcpy(dest + written, uri->query.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
510 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
511 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
512 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
513 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
514 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
515 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
516 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
517 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
518 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
519 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
520 (*charsRequired) += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
521 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
522 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
523 /* [14/19] endif; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
524 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
525 /* [15/19] if defined(fragment) then */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
526 if (uri->fragment.first != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
527 /* [16/19] append "#" to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
528 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
529 if (written + 1 <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
530 memcpy(dest + written, _UT("#"),
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
531 1 * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
532 written += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
533 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
534 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
535 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
536 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
537 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
538 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
539 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
540 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
541 (*charsRequired) += 1;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
542 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
543 /* [17/19] append fragment to result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
544 {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
545 const int charsToWrite
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
546 = (int)(uri->fragment.afterLast - uri->fragment.first);
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
547 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
548 if (written + charsToWrite <= maxChars) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
549 memcpy(dest + written, uri->fragment.first,
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
550 charsToWrite * sizeof(URI_CHAR));
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
551 written += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
552 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
553 dest[0] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
554 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
555 *charsWritten = 0;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
556 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
557 return URI_ERROR_TOSTRING_TOO_LONG;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
558 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
559 } else {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
560 (*charsRequired) += charsToWrite;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
561 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
562 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
563 /* [18/19] endif; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
564 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
565 /* [19/19] return result; */
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
566 if (dest != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
567 dest[written++] = _UT('\0');
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
568 if (charsWritten != NULL) {
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
569 *charsWritten = written;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
570 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
571 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
572 return URI_SUCCESS;
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
573 }
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
574
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
575
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
576
a2be1eba7adb uriparser: import 0.8.5, close #878 @10m
David Demelier <markand@malikania.fr>
parents:
diff changeset
577 #endif