💾 Archived View for gemini.thededem.de › lc19 › src › include › url.h captured on 2021-12-03 at 14:04:38.
-=-=-=-=-=-=-
/* Copyright 2020, 2021 Lukas Wedeking * * This file is part of LC19. * * LC19 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * LC19 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with LC19. If not, see <https://www.gnu.org/licenses/>. */ #ifndef GEMINI_SERVER_URL_H #define GEMINI_SERVER_URL_H #include<stdbool.h> #include<stddef.h> struct Url { char *scheme; char *userinfo; char *host; char *port; char *path; /* The decoded normalized path. */ char *path_orig; /* The unprocessed path from the URL string. */ char *query; char *fragment; char *junk; }; size_t url_char_is_gen_delim(const char *url, size_t offset, size_t max_length); size_t url_char_is_sub_delim(const char *url, size_t offset, size_t max_length); size_t url_char_is_reserved(const char *url, size_t offset, size_t max_length); size_t url_char_is_ucschar(const char *url, size_t offset, size_t max_length); size_t url_char_is_unreserved(const char *url, size_t offset, size_t max_length); size_t url_char_is_iprivate(const char *url, size_t offset, size_t max_length); size_t url_char_is_hex(char c); size_t url_char_is_pct_enc(const char *url, size_t offset, size_t max_length); size_t url_find_scheme_end(const char *url, const size_t max_length); size_t url_find_userinfo_end(const char *url, const size_t offset, const size_t max_length); size_t url_find_host_end(const char *url, const size_t offset, const size_t max_length); size_t url_find_port_end(const char *url, const size_t offset, const size_t max_length); size_t url_find_path_end(const char *url, const size_t offset, const size_t max_length, int schemeless, int absolute); size_t url_find_query_end(const char *url, const size_t offset, const size_t max_length); size_t url_find_fragment_end(const char *url, const size_t offset, const size_t max_length); char* url_part_alloc(const char *url, size_t start, size_t end); void url_decode_pct(char *s); void url_normalize_path(char *path); void url_destroy(struct Url *url); struct Url *url_create(const char *url, size_t max_length); char *url_pct_encode_path(const char *s, int schemeless); void url_normalize_pct_encoding(char *s); #endif