[PATCH 06/13] url-parse: define component extraction helper fn
- From
Matheus Afonso Martins Moreira via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Apr 28, 2024, 22:30 UTC
- Message-ID
- <149c476b1ed74897ffbdf711754b9804fa679467.1714343461.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1715.git.git.1714343461.gitgitgadget@gmail.com>
From: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
The extract function returns a newly allocated string whose contents are the specified git URL component. The string must be freed later.
Signed-off-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com> --- builtin/url-parse.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+)
diff --git a/builtin/url-parse.c b/builtin/url-parse.c index d250338422e..b8ac46dcdeb 100644 --- a/builtin/url-parse.c +++ b/builtin/url-parse.c @@ -32,6 +32,42 @@ static void parse_or_die(const char *url, struct url_info *info) } } +static char *extract(enum url_component component, struct url_info *info) +{ + size_t offset, length; + + switch (component) { + case URL_PROTOCOL: + offset = 0; + length = info->scheme_len; + break; + case URL_USER: + offset = info->user_off; + length = info->user_len; + break; + case URL_PASSWORD: + offset = info->passwd_off; + length = info->passwd_len; + break; + case URL_HOST: + offset = info->host_off; + length = info->host_len; + break; + case URL_PORT: + offset = info->port_off; + length = info->port_len; + break; + case URL_PATH: + offset = info->path_off; + length = info->path_len; + break; + case URL_NONE: + return NULL; + } + + return xstrndup(info->url + offset, length); +} + int cmd_url_parse(int argc, const char **argv, const char *prefix) { return 0;
-- gitgitgadget