diff --git a/src/lib/uri/CMakeLists.txt b/src/lib/uri/CMakeLists.txt index 5fccca9a0f3e3b80897ef9d8f78a329507515806..efe7b17245458c76d495adcb3f8b230a2b40e8fd 100644 --- a/src/lib/uri/CMakeLists.txt +++ b/src/lib/uri/CMakeLists.txt @@ -1,10 +1,10 @@ add_custom_target(ragel WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMAND ragel -G2 src/lib/uri/uri.rl -o src/lib/uri/uri.c) + COMMAND ragel -G2 src/lib/uri/uri_parser.rl -o src/lib/uri/uri_parser.c) if (CC_HAS_WNO_IMPLICIT_FALLTHROUGH) # Suppress noise warnings for autogenerated Ragel code - set_source_files_properties(uri.c PROPERTIES COMPILE_FLAGS + set_source_files_properties(uri_parser.c PROPERTIES COMPILE_FLAGS -Wno-implicit-fallthrough) endif() -add_library(uri STATIC uri.c) +add_library(uri STATIC uri_parser.c) diff --git a/src/lib/uri/uri.h b/src/lib/uri/uri.h index b74c467f9949ec3d7548116c1b3c0b893d18c42b..ebedcb97e091bb1bf79ef4dd89191c99dacd7221 100644 --- a/src/lib/uri/uri.h +++ b/src/lib/uri/uri.h @@ -1,77 +1,8 @@ -#ifndef TARANTOOL_URI_H_INCLUDED -#define TARANTOOL_URI_H_INCLUDED /* - * Copyright 2010-2016, Tarantool AUTHORS, please see AUTHORS file. + * SPDX-License-Identifier: BSD-2-Clause * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * <COPYRIGHT HOLDER> OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * Copyright 2010-2021, Tarantool AUTHORS, please see AUTHORS file. */ +#pragma once -#include <stddef.h> -#include <stdbool.h> -#include <netdb.h> /* NI_MAXHOST, NI_MAXSERV */ -#include <limits.h> /* _POSIX_PATH_MAX */ - -#if defined(__cplusplus) -extern "C" { -#endif /* defined(__cplusplus) */ - -struct uri { - const char *scheme; - size_t scheme_len; - const char *login; - size_t login_len; - const char *password; - size_t password_len; - const char *host; - size_t host_len; - const char *service; - size_t service_len; - const char *path; - size_t path_len; - const char *query; - size_t query_len; - const char *fragment; - size_t fragment_len; - int host_hint; -}; - -#define URI_HOST_UNIX "unix/" -#define URI_MAXHOST NI_MAXHOST -#define URI_MAXSERVICE _POSIX_PATH_MAX /* _POSIX_PATH_MAX always > NI_MAXSERV */ - -int -uri_parse(struct uri *uri, const char *str); - -int -uri_format(char *str, int len, const struct uri *uri, bool write_password); - -#if defined(__cplusplus) -} /* extern "C" */ -#endif /* defined(__cplusplus) */ - -#endif /* TARANTOOL_URI_H_INCLUDED */ +#include "uri_parser.h" diff --git a/src/lib/uri/uri.c b/src/lib/uri/uri_parser.c similarity index 91% rename from src/lib/uri/uri.c rename to src/lib/uri/uri_parser.c index c00d89e44cdf9aa80eee3d05b9104e49d5a658fa..974acf54d4fd3bb102f3e2fc1ffffe04ece10299 100644 --- a/src/lib/uri/uri.c +++ b/src/lib/uri/uri_parser.c @@ -1,5 +1,5 @@ -#line 1 "src/lib/uri/uri.rl" +#line 1 "src/lib/uri/uri_parser.rl" /* * Copyright 2010-2016, Tarantool AUTHORS, please see AUTHORS file. * @@ -49,7 +49,7 @@ uri_parse(struct uri *uri, const char *p) size_t login_len = 0, scheme_len = 0; -#line 53 "src/lib/uri/uri.c" +#line 53 "src/lib/uri/uri_parser.c" static const int uri_start = 149; static const int uri_first_final = 149; static const int uri_error = 0; @@ -57,12 +57,12 @@ static const int uri_error = 0; static const int uri_en_main = 149; -#line 61 "src/lib/uri/uri.c" +#line 61 "src/lib/uri/uri_parser.c" { cs = uri_start; } -#line 66 "src/lib/uri/uri.c" +#line 66 "src/lib/uri/uri_parser.c" { if ( p == pe ) goto _test_eof; @@ -100,16 +100,16 @@ case 149: cs = 0; goto _out; tr156: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st150; st150: if ( ++p == pe ) goto _test_eof150; case 150: -#line 113 "src/lib/uri/uri.c" +#line 113 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st150; case 35: goto tr166; @@ -132,80 +132,80 @@ case 150: goto st150; goto st0; tr157: -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr166: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr177: -#line 71 "src/lib/uri/uri.rl" +#line 71 "src/lib/uri/uri_parser.rl" { s = p; } -#line 72 "src/lib/uri/uri.rl" +#line 72 "src/lib/uri/uri_parser.rl" { uri->query = s; uri->query_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr179: -#line 72 "src/lib/uri/uri.rl" +#line 72 "src/lib/uri/uri_parser.rl" { uri->query = s; uri->query_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr182: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr193: -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr202: -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr220: -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr239: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -221,17 +221,17 @@ case 150: uri->path_len = 0; }; } -#line 170 "src/lib/uri/uri.rl" +#line 170 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; tr245: -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -247,14 +247,14 @@ case 150: uri->path_len = 0; }; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st151; st151: if ( ++p == pe ) goto _test_eof151; case 151: -#line 258 "src/lib/uri/uri.c" +#line 258 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr172; case 37: goto tr173; @@ -273,14 +273,14 @@ case 151: goto tr172; goto st0; tr172: -#line 75 "src/lib/uri/uri.rl" +#line 75 "src/lib/uri/uri_parser.rl" { s = p; } goto st152; st152: if ( ++p == pe ) goto _test_eof152; case 152: -#line 284 "src/lib/uri/uri.c" +#line 284 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st152; case 37: goto st1; @@ -299,14 +299,14 @@ case 152: goto st152; goto st0; tr173: -#line 75 "src/lib/uri/uri.rl" +#line 75 "src/lib/uri/uri_parser.rl" { s = p; } goto st1; st1: if ( ++p == pe ) goto _test_eof1; case 1: -#line 310 "src/lib/uri/uri.c" +#line 310 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st152; case 117: goto st2; @@ -373,16 +373,16 @@ case 5: goto st152; goto st0; tr158: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st6; st6: if ( ++p == pe ) goto _test_eof6; case 6: -#line 386 "src/lib/uri/uri.c" +#line 386 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st150; case 117: goto st7; @@ -449,43 +449,43 @@ case 10: goto st150; goto st0; tr168: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st153; tr184: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st153; tr194: -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st153; tr203: -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st153; tr221: -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st153; st153: if ( ++p == pe ) goto _test_eof153; case 153: -#line 489 "src/lib/uri/uri.c" +#line 489 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr157; @@ -575,66 +575,66 @@ case 15: goto st153; goto st0; tr162: -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr170: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr186: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr196: -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr204: -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr224: -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr240: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -650,17 +650,17 @@ case 15: uri->path_len = 0; }; } -#line 170 "src/lib/uri/uri.rl" +#line 170 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; tr247: -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -676,14 +676,14 @@ case 15: uri->path_len = 0; }; } -#line 195 "src/lib/uri/uri.rl" +#line 195 "src/lib/uri/uri_parser.rl" { s = p; } goto st154; st154: if ( ++p == pe ) goto _test_eof154; case 154: -#line 687 "src/lib/uri/uri.c" +#line 687 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr176; case 35: goto tr177; @@ -703,14 +703,14 @@ case 154: goto tr176; goto st0; tr176: -#line 71 "src/lib/uri/uri.rl" +#line 71 "src/lib/uri/uri_parser.rl" { s = p; } goto st155; st155: if ( ++p == pe ) goto _test_eof155; case 155: -#line 714 "src/lib/uri/uri.c" +#line 714 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st155; case 35: goto tr179; @@ -730,14 +730,14 @@ case 155: goto st155; goto st0; tr178: -#line 71 "src/lib/uri/uri.rl" +#line 71 "src/lib/uri/uri_parser.rl" { s = p; } goto st16; st16: if ( ++p == pe ) goto _test_eof16; case 16: -#line 741 "src/lib/uri/uri.c" +#line 741 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st155; case 117: goto st17; @@ -804,25 +804,25 @@ case 20: goto st155; goto st0; tr169: -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st156; tr261: -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st156; st156: if ( ++p == pe ) goto _test_eof156; case 156: -#line 826 "src/lib/uri/uri.c" +#line 826 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr181; case 35: goto tr182; @@ -848,14 +848,14 @@ case 156: goto tr185; goto st0; tr181: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } goto st21; st21: if ( ++p == pe ) goto _test_eof21; case 21: -#line 859 "src/lib/uri/uri.c" +#line 859 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st21; case 37: goto st22; @@ -878,14 +878,14 @@ case 21: goto st21; goto st0; tr183: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } goto st22; st22: if ( ++p == pe ) goto _test_eof22; case 22: -#line 889 "src/lib/uri/uri.c" +#line 889 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st21; case 117: goto st23; @@ -952,30 +952,30 @@ case 26: goto st21; goto st0; tr23: -#line 149 "src/lib/uri/uri.rl" +#line 149 "src/lib/uri/uri_parser.rl" { uri->password = s; uri->password_len = p - s; } -#line 153 "src/lib/uri/uri.rl" +#line 153 "src/lib/uri/uri_parser.rl" { uri->login = login; uri->login_len = login_len; } goto st27; tr171: -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 153 "src/lib/uri/uri.rl" +#line 153 "src/lib/uri/uri_parser.rl" { uri->login = login; uri->login_len = login_len; } goto st27; tr187: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } -#line 149 "src/lib/uri/uri.rl" +#line 149 "src/lib/uri/uri_parser.rl" { uri->password = s; uri->password_len = p - s; } -#line 153 "src/lib/uri/uri.rl" +#line 153 "src/lib/uri/uri_parser.rl" { uri->login = login; uri->login_len = login_len; } goto st27; st27: if ( ++p == pe ) goto _test_eof27; case 27: -#line 979 "src/lib/uri/uri.c" +#line 979 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr28; case 37: goto tr29; @@ -1001,14 +1001,14 @@ case 27: goto tr32; goto st0; tr28: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st157; st157: if ( ++p == pe ) goto _test_eof157; case 157: -#line 1012 "src/lib/uri/uri.c" +#line 1012 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st157; case 35: goto tr166; @@ -1030,14 +1030,14 @@ case 157: goto st157; goto st0; tr29: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st28; st28: if ( ++p == pe ) goto _test_eof28; case 28: -#line 1041 "src/lib/uri/uri.c" +#line 1041 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st157; case 117: goto st29; @@ -1104,21 +1104,21 @@ case 32: goto st157; goto st0; tr190: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st158; tr223: -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st158; st158: if ( ++p == pe ) goto _test_eof158; case 158: -#line 1122 "src/lib/uri/uri.c" +#line 1122 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 35: goto tr182; case 47: goto tr184; @@ -1134,14 +1134,14 @@ case 158: goto tr192; goto st0; tr191: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st159; st159: if ( ++p == pe ) goto _test_eof159; case 159: -#line 1145 "src/lib/uri/uri.c" +#line 1145 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 35: goto tr193; case 47: goto tr194; @@ -1151,14 +1151,14 @@ case 159: goto st159; goto st0; tr192: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st160; st160: if ( ++p == pe ) goto _test_eof160; case 160: -#line 1162 "src/lib/uri/uri.c" +#line 1162 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 35: goto tr193; case 47: goto tr194; @@ -1171,16 +1171,16 @@ case 160: goto st160; goto st0; tr30: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} goto st161; st161: if ( ++p == pe ) goto _test_eof161; case 161: -#line 1184 "src/lib/uri/uri.c" +#line 1184 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st157; case 35: goto tr166; @@ -1202,20 +1202,20 @@ case 161: goto st157; goto st0; tr198: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st162; tr274: -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} goto st162; st162: if ( ++p == pe ) goto _test_eof162; case 162: -#line 1219 "src/lib/uri/uri.c" +#line 1219 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st163; case 35: goto tr157; @@ -1332,7 +1332,7 @@ case 37: goto st163; goto st0; tr201: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -1353,7 +1353,7 @@ case 37: if ( ++p == pe ) goto _test_eof164; case 164: -#line 1357 "src/lib/uri/uri.c" +#line 1357 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr202; @@ -1375,16 +1375,16 @@ case 164: goto st153; goto st0; tr31: -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} -#line 192 "src/lib/uri/uri.rl" +#line 192 "src/lib/uri/uri_parser.rl" { s = p; } goto st165; st165: if ( ++p == pe ) goto _test_eof165; case 165: -#line 1388 "src/lib/uri/uri.c" +#line 1388 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st166; case 37: goto st38; @@ -1612,7 +1612,7 @@ case 47: goto st168; goto st0; tr207: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -1633,7 +1633,7 @@ case 47: if ( ++p == pe ) goto _test_eof169; case 169: -#line 1637 "src/lib/uri/uri.c" +#line 1637 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st168; case 35: goto tr202; @@ -1655,14 +1655,14 @@ case 169: goto st168; goto st0; tr209: -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st170; st170: if ( ++p == pe ) goto _test_eof170; case 170: -#line 1666 "src/lib/uri/uri.c" +#line 1666 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st170; case 35: goto tr157; @@ -1752,16 +1752,16 @@ case 52: goto st170; goto st0; tr32: -#line 107 "src/lib/uri/uri.rl" +#line 107 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st171; st171: if ( ++p == pe ) goto _test_eof171; case 171: -#line 1765 "src/lib/uri/uri.c" +#line 1765 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st157; case 35: goto tr166; @@ -2184,14 +2184,14 @@ case 53: goto tr60; goto st0; tr60: -#line 114 "src/lib/uri/uri.rl" +#line 114 "src/lib/uri/uri_parser.rl" { s = p; } goto st54; st54: if ( ++p == pe ) goto _test_eof54; case 54: -#line 2195 "src/lib/uri/uri.c" +#line 2195 "src/lib/uri/uri_parser.c" if ( (*p) == 58 ) goto st58; if ( (*p) > 57 ) { @@ -2742,7 +2742,7 @@ case 97: goto tr68; goto st0; tr68: -#line 115 "src/lib/uri/uri.rl" +#line 115 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 2; } goto st186; @@ -2750,7 +2750,7 @@ case 97: if ( ++p == pe ) goto _test_eof186; case 186: -#line 2754 "src/lib/uri/uri.c" +#line 2754 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 35: goto tr202; case 47: goto tr203; @@ -2759,14 +2759,14 @@ case 186: } goto st0; tr61: -#line 114 "src/lib/uri/uri.rl" +#line 114 "src/lib/uri/uri_parser.rl" { s = p; } goto st98; st98: if ( ++p == pe ) goto _test_eof98; case 98: -#line 2770 "src/lib/uri/uri.c" +#line 2770 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 58: goto st99; case 93: goto tr68; @@ -2995,14 +2995,14 @@ case 118: goto st72; goto st0; tr34: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st187; st187: if ( ++p == pe ) goto _test_eof187; case 187: -#line 3006 "src/lib/uri/uri.c" +#line 3006 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st157; case 35: goto tr166; @@ -3099,16 +3099,16 @@ case 190: goto st157; goto st0; tr233: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st191; st191: if ( ++p == pe ) goto _test_eof191; case 191: -#line 3112 "src/lib/uri/uri.c" +#line 3112 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr157; @@ -3155,14 +3155,14 @@ case 192: goto st153; goto st0; tr235: -#line 135 "src/lib/uri/uri.rl" +#line 135 "src/lib/uri/uri_parser.rl" { s = p;} goto st193; st193: if ( ++p == pe ) goto _test_eof193; case 193: -#line 3166 "src/lib/uri/uri.c" +#line 3166 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr157; @@ -3184,14 +3184,14 @@ case 193: goto st153; goto st0; tr236: -#line 135 "src/lib/uri/uri.rl" +#line 135 "src/lib/uri/uri_parser.rl" { s = p;} goto st194; st194: if ( ++p == pe ) goto _test_eof194; case 194: -#line 3195 "src/lib/uri/uri.c" +#line 3195 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st195; case 35: goto tr157; @@ -3308,16 +3308,16 @@ case 123: goto st195; goto st0; tr185: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st196; st196: if ( ++p == pe ) goto _test_eof196; case 196: -#line 3321 "src/lib/uri/uri.c" +#line 3321 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st21; case 35: goto tr193; @@ -3343,16 +3343,16 @@ case 196: goto st196; goto st0; tr188: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st197; st197: if ( ++p == pe ) goto _test_eof197; case 197: -#line 3356 "src/lib/uri/uri.c" +#line 3356 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st21; case 35: goto tr193; @@ -3375,18 +3375,18 @@ case 197: goto st197; goto st0; tr159: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} goto st198; st198: if ( ++p == pe ) goto _test_eof198; case 198: -#line 3390 "src/lib/uri/uri.c" +#line 3390 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st150; case 35: goto tr166; @@ -3409,20 +3409,20 @@ case 198: goto st150; goto st0; tr243: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st199; tr339: -#line 135 "src/lib/uri/uri.rl" +#line 135 "src/lib/uri/uri_parser.rl" { s = p;} goto st199; st199: if ( ++p == pe ) goto _test_eof199; case 199: -#line 3426 "src/lib/uri/uri.c" +#line 3426 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st200; case 35: goto tr157; @@ -3539,16 +3539,16 @@ case 128: goto st200; goto st0; tr160: -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} -#line 192 "src/lib/uri/uri.rl" +#line 192 "src/lib/uri/uri_parser.rl" { s = p; } goto st201; st201: if ( ++p == pe ) goto _test_eof201; case 201: -#line 3552 "src/lib/uri/uri.c" +#line 3552 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st202; case 35: goto tr157; @@ -3692,7 +3692,7 @@ case 203: goto st202; goto st0; tr250: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -3713,7 +3713,7 @@ case 203: if ( ++p == pe ) goto _test_eof204; case 204: -#line 3717 "src/lib/uri/uri.c" +#line 3717 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st170; case 35: goto tr202; @@ -3735,20 +3735,20 @@ case 204: goto st170; goto st0; tr161: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 107 "src/lib/uri/uri.rl" +#line 107 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } -#line 188 "src/lib/uri/uri.rl" +#line 188 "src/lib/uri/uri_parser.rl" { uri->service = p; } goto st205; st205: if ( ++p == pe ) goto _test_eof205; case 205: -#line 3752 "src/lib/uri/uri.c" +#line 3752 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st150; case 35: goto tr166; @@ -4217,18 +4217,18 @@ case 221: } goto st0; tr164: -#line 160 "src/lib/uri/uri.rl" +#line 160 "src/lib/uri/uri_parser.rl" { s = p; } -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st222; st222: if ( ++p == pe ) goto _test_eof222; case 222: -#line 4232 "src/lib/uri/uri.c" +#line 4232 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st150; case 35: goto tr166; @@ -4256,18 +4256,18 @@ case 222: goto st222; goto st0; tr268: -#line 162 "src/lib/uri/uri.rl" +#line 162 "src/lib/uri/uri_parser.rl" {scheme = s; scheme_len = p - s; } -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st223; st223: if ( ++p == pe ) goto _test_eof223; case 223: -#line 4271 "src/lib/uri/uri.c" +#line 4271 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr181; case 35: goto tr182; @@ -4293,20 +4293,20 @@ case 223: goto tr185; goto st0; tr269: -#line 179 "src/lib/uri/uri.rl" +#line 179 "src/lib/uri/uri_parser.rl" { uri->scheme = scheme; uri->scheme_len = scheme_len;} -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st224; st224: if ( ++p == pe ) goto _test_eof224; case 224: -#line 4310 "src/lib/uri/uri.c" +#line 4310 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr157; @@ -4361,16 +4361,16 @@ case 225: goto tr275; goto st0; tr271: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st226; st226: if ( ++p == pe ) goto _test_eof226; case 226: -#line 4374 "src/lib/uri/uri.c" +#line 4374 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st226; case 35: goto tr166; @@ -4394,16 +4394,16 @@ case 226: goto st226; goto st0; tr272: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st134; st134: if ( ++p == pe ) goto _test_eof134; case 134: -#line 4407 "src/lib/uri/uri.c" +#line 4407 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st226; case 117: goto st135; @@ -4470,25 +4470,25 @@ case 138: goto st226; goto st0; tr278: -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st227; tr328: -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st227; st227: if ( ++p == pe ) goto _test_eof227; case 227: -#line 4492 "src/lib/uri/uri.c" +#line 4492 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr280; case 35: goto tr182; @@ -4516,14 +4516,14 @@ case 227: goto tr282; goto st0; tr280: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } goto st228; st228: if ( ++p == pe ) goto _test_eof228; case 228: -#line 4527 "src/lib/uri/uri.c" +#line 4527 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st228; case 35: goto tr157; @@ -4547,14 +4547,14 @@ case 228: goto st228; goto st0; tr281: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } goto st139; st139: if ( ++p == pe ) goto _test_eof139; case 139: -#line 4558 "src/lib/uri/uri.c" +#line 4558 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st228; case 117: goto st140; @@ -4621,30 +4621,30 @@ case 143: goto st228; goto st0; tr286: -#line 149 "src/lib/uri/uri.rl" +#line 149 "src/lib/uri/uri_parser.rl" { uri->password = s; uri->password_len = p - s; } -#line 153 "src/lib/uri/uri.rl" +#line 153 "src/lib/uri/uri_parser.rl" { uri->login = login; uri->login_len = login_len; } goto st229; tr279: -#line 145 "src/lib/uri/uri.rl" +#line 145 "src/lib/uri/uri_parser.rl" { login = s; login_len = p - s; } -#line 153 "src/lib/uri/uri.rl" +#line 153 "src/lib/uri/uri_parser.rl" { uri->login = login; uri->login_len = login_len; } goto st229; tr283: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } -#line 149 "src/lib/uri/uri.rl" +#line 149 "src/lib/uri/uri_parser.rl" { uri->password = s; uri->password_len = p - s; } -#line 153 "src/lib/uri/uri.rl" +#line 153 "src/lib/uri/uri_parser.rl" { uri->login = login; uri->login_len = login_len; } goto st229; st229: if ( ++p == pe ) goto _test_eof229; case 229: -#line 4648 "src/lib/uri/uri.c" +#line 4648 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto tr287; case 35: goto tr157; @@ -4675,14 +4675,14 @@ case 229: goto tr290; goto st0; tr287: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st230; st230: if ( ++p == pe ) goto _test_eof230; case 230: -#line 4686 "src/lib/uri/uri.c" +#line 4686 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st230; case 35: goto tr166; @@ -4706,14 +4706,14 @@ case 230: goto st230; goto st0; tr288: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st144; st144: if ( ++p == pe ) goto _test_eof144; case 144: -#line 4717 "src/lib/uri/uri.c" +#line 4717 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 37: goto st230; case 117: goto st145; @@ -4780,21 +4780,21 @@ case 148: goto st230; goto st0; tr293: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st231; tr308: -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} goto st231; st231: if ( ++p == pe ) goto _test_eof231; case 231: -#line 4798 "src/lib/uri/uri.c" +#line 4798 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr182; @@ -4823,14 +4823,14 @@ case 231: goto st153; goto st0; tr294: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st232; st232: if ( ++p == pe ) goto _test_eof232; case 232: -#line 4834 "src/lib/uri/uri.c" +#line 4834 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr193; @@ -4858,14 +4858,14 @@ case 232: goto st153; goto st0; tr295: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st233; st233: if ( ++p == pe ) goto _test_eof233; case 233: -#line 4869 "src/lib/uri/uri.c" +#line 4869 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr193; @@ -4888,16 +4888,16 @@ case 233: goto st233; goto st0; tr289: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} goto st234; st234: if ( ++p == pe ) goto _test_eof234; case 234: -#line 4901 "src/lib/uri/uri.c" +#line 4901 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st230; case 35: goto tr166; @@ -4921,16 +4921,16 @@ case 234: goto st230; goto st0; tr290: -#line 107 "src/lib/uri/uri.rl" +#line 107 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st235; st235: if ( ++p == pe ) goto _test_eof235; case 235: -#line 4934 "src/lib/uri/uri.c" +#line 4934 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st230; case 35: goto tr166; @@ -5371,14 +5371,14 @@ case 249: goto st230; goto st0; tr291: -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st250; st250: if ( ++p == pe ) goto _test_eof250; case 250: -#line 5382 "src/lib/uri/uri.c" +#line 5382 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st230; case 35: goto tr166; @@ -5483,16 +5483,16 @@ case 253: goto st230; goto st0; tr282: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st254; st254: if ( ++p == pe ) goto _test_eof254; case 254: -#line 5496 "src/lib/uri/uri.c" +#line 5496 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st228; case 35: goto tr193; @@ -5520,16 +5520,16 @@ case 254: goto st254; goto st0; tr284: -#line 148 "src/lib/uri/uri.rl" +#line 148 "src/lib/uri/uri_parser.rl" { s = p; } -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } goto st255; st255: if ( ++p == pe ) goto _test_eof255; case 255: -#line 5533 "src/lib/uri/uri.c" +#line 5533 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st228; case 35: goto tr193; @@ -5553,18 +5553,18 @@ case 255: goto st255; goto st0; tr273: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } -#line 158 "src/lib/uri/uri.rl" +#line 158 "src/lib/uri/uri_parser.rl" { s = p;} goto st256; st256: if ( ++p == pe ) goto _test_eof256; case 256: -#line 5568 "src/lib/uri/uri.c" +#line 5568 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st226; case 35: goto tr166; @@ -5588,18 +5588,18 @@ case 256: goto st226; goto st0; tr275: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 107 "src/lib/uri/uri.rl" +#line 107 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st257; st257: if ( ++p == pe ) goto _test_eof257; case 257: -#line 5603 "src/lib/uri/uri.c" +#line 5603 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st226; case 35: goto tr166; @@ -6040,16 +6040,16 @@ case 271: goto st226; goto st0; tr276: -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st272; st272: if ( ++p == pe ) goto _test_eof272; case 272: -#line 6053 "src/lib/uri/uri.c" +#line 6053 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st226; case 35: goto tr166; @@ -6154,16 +6154,16 @@ case 275: goto st226; goto st0; tr336: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } goto st276; st276: if ( ++p == pe ) goto _test_eof276; case 276: -#line 6167 "src/lib/uri/uri.c" +#line 6167 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr157; @@ -6210,14 +6210,14 @@ case 277: goto st153; goto st0; tr338: -#line 135 "src/lib/uri/uri.rl" +#line 135 "src/lib/uri/uri_parser.rl" { s = p;} goto st278; st278: if ( ++p == pe ) goto _test_eof278; case 278: -#line 6221 "src/lib/uri/uri.c" +#line 6221 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st153; case 35: goto tr157; @@ -6239,18 +6239,18 @@ case 278: goto st153; goto st0; tr165: -#line 160 "src/lib/uri/uri.rl" +#line 160 "src/lib/uri/uri_parser.rl" { s = p; } -#line 144 "src/lib/uri/uri.rl" +#line 144 "src/lib/uri/uri_parser.rl" { s = p; } -#line 100 "src/lib/uri/uri.rl" +#line 100 "src/lib/uri/uri_parser.rl" { s = p; } goto st279; st279: if ( ++p == pe ) goto _test_eof279; case 279: -#line 6254 "src/lib/uri/uri.c" +#line 6254 "src/lib/uri/uri_parser.c" switch( (*p) ) { case 33: goto st150; case 35: goto tr166; @@ -6658,18 +6658,18 @@ case 282: { switch ( cs ) { case 155: -#line 72 "src/lib/uri/uri.rl" +#line 72 "src/lib/uri/uri_parser.rl" { uri->query = s; uri->query_len = p - s; } break; case 152: -#line 76 "src/lib/uri/uri.rl" +#line 76 "src/lib/uri/uri_parser.rl" { uri->fragment = s; uri->fragment_len = p - s; } break; case 165: case 166: case 167: case 168: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -6703,26 +6703,26 @@ case 282: case 276: case 277: case 278: -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; case 154: -#line 71 "src/lib/uri/uri.rl" +#line 71 "src/lib/uri/uri_parser.rl" { s = p; } -#line 72 "src/lib/uri/uri.rl" +#line 72 "src/lib/uri/uri_parser.rl" { uri->query = s; uri->query_len = p - s; } break; case 151: -#line 75 "src/lib/uri/uri.rl" +#line 75 "src/lib/uri/uri_parser.rl" { s = p; } -#line 76 "src/lib/uri/uri.rl" +#line 76 "src/lib/uri/uri_parser.rl" { uri->fragment = s; uri->fragment_len = p - s; } break; case 164: case 186: -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; case 170: @@ -6730,9 +6730,9 @@ case 282: case 201: case 202: case 203: -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -6819,15 +6819,15 @@ case 282: case 280: case 281: case 282: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; case 195: -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -6843,9 +6843,9 @@ case 282: uri->path_len = 0; }; } -#line 170 "src/lib/uri/uri.rl" +#line 170 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; case 159: @@ -6856,20 +6856,20 @@ case 282: case 233: case 254: case 255: -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; case 169: case 204: -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 119 "src/lib/uri/uri.rl" +#line 119 "src/lib/uri/uri_parser.rl" { /* * This action is also called for path_* terms. @@ -6890,13 +6890,13 @@ case 282: case 218: case 219: case 220: -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } -#line 189 "src/lib/uri/uri.rl" +#line 189 "src/lib/uri/uri_parser.rl" { uri->service_len = p - uri->service; uri->host = NULL; uri->host_len = 0; } break; @@ -6912,14 +6912,14 @@ case 282: case 263: case 264: case 265: -#line 108 "src/lib/uri/uri.rl" +#line 108 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s; uri->host_hint = 1; } -#line 101 "src/lib/uri/uri.rl" +#line 101 "src/lib/uri/uri_parser.rl" { uri->host = s; uri->host_len = p - s;} -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; case 156: @@ -6927,23 +6927,23 @@ case 282: case 223: case 227: case 231: -#line 138 "src/lib/uri/uri.rl" +#line 138 "src/lib/uri/uri_parser.rl" { s = p; } -#line 139 "src/lib/uri/uri.rl" +#line 139 "src/lib/uri/uri_parser.rl" { uri->service = s; uri->service_len = p - s; } -#line 171 "src/lib/uri/uri.rl" +#line 171 "src/lib/uri/uri_parser.rl" { s = p; } -#line 175 "src/lib/uri/uri.rl" +#line 175 "src/lib/uri/uri_parser.rl" { uri->path = s; uri->path_len = p - s; } break; -#line 6940 "src/lib/uri/uri.c" +#line 6940 "src/lib/uri/uri_parser.c" } } _out: {} } -#line 202 "src/lib/uri/uri.rl" +#line 202 "src/lib/uri/uri_parser.rl" if (uri->path_len == 0) diff --git a/src/lib/uri/uri_parser.h b/src/lib/uri/uri_parser.h new file mode 100644 index 0000000000000000000000000000000000000000..8fce503bd485d2ae00b2e968fa976b76790f0540 --- /dev/null +++ b/src/lib/uri/uri_parser.h @@ -0,0 +1,49 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright 2010-2021, Tarantool AUTHORS, please see AUTHORS file. + */ +#pragma once + +#include <stddef.h> +#include <stdbool.h> +#include <netdb.h> /* NI_MAXHOST, NI_MAXSERV */ +#include <limits.h> /* _POSIX_PATH_MAX */ + +#if defined(__cplusplus) +extern "C" { +#endif /* defined(__cplusplus) */ + +struct uri { + const char *scheme; + size_t scheme_len; + const char *login; + size_t login_len; + const char *password; + size_t password_len; + const char *host; + size_t host_len; + const char *service; + size_t service_len; + const char *path; + size_t path_len; + const char *query; + size_t query_len; + const char *fragment; + size_t fragment_len; + int host_hint; +}; + +#define URI_HOST_UNIX "unix/" +#define URI_MAXHOST NI_MAXHOST +#define URI_MAXSERVICE _POSIX_PATH_MAX /* _POSIX_PATH_MAX always > NI_MAXSERV */ + +int +uri_parse(struct uri *uri, const char *str); + +int +uri_format(char *str, int len, const struct uri *uri, bool write_password); + +#if defined(__cplusplus) +} /* extern "C" */ +#endif /* defined(__cplusplus) */ diff --git a/src/lib/uri/uri.rl b/src/lib/uri/uri_parser.rl similarity index 100% rename from src/lib/uri/uri.rl rename to src/lib/uri/uri_parser.rl diff --git a/test/app-tap/uri.test.lua b/test/app-tap/uri.test.lua index 99484a39b32930d6b9c33c494622e74dfccf0713..03ff724de24916db8ad9275f257b3625222d371b 100755 --- a/test/app-tap/uri.test.lua +++ b/test/app-tap/uri.test.lua @@ -5,7 +5,7 @@ local uri = require('uri') local function test_parse(test) -- Tests for uri.parse() Lua bindings. - -- Parser itself is tested by test/unit/uri unit test. + -- Parser itself is tested by test/unit/uri_parser unit test. test:plan(54) local u diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index a1776cc76c54db6f7def7e85c640ca204df283da..fbba64bd2c056172661e48eea5aa405a0233c6d1 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -24,8 +24,8 @@ add_executable(heap_iterator.test heap_iterator.c) target_link_libraries(heap_iterator.test unit) add_executable(stailq.test stailq.c) target_link_libraries(stailq.test unit) -add_executable(uri.test uri.c unit.c) -target_link_libraries(uri.test uri unit) +add_executable(uri_parser.test uri_parser.c unit.c) +target_link_libraries(uri_parser.test uri unit) add_executable(queue.test queue.c) add_executable(mhash.test mhash.c) target_link_libraries(mhash.test unit) diff --git a/test/unit/uri.c b/test/unit/uri_parser.c similarity index 100% rename from test/unit/uri.c rename to test/unit/uri_parser.c diff --git a/test/unit/uri.result b/test/unit/uri_parser.result similarity index 100% rename from test/unit/uri.result rename to test/unit/uri_parser.result