net: introduce path formatting function Introduce a function to format the path and query string for a URL, suitable for creating an HTTP request.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
diff --git a/src/net.c b/src/net.c
index c707743..2e466b6 100644
--- a/src/net.c
+++ b/src/net.c
@@ -381,6 +381,18 @@ int git_net_url_fmt(git_buf *buf, git_net_url *url)
return git_buf_oom(buf) ? -1 : 0;
}
+int git_net_url_fmt_path(git_buf *buf, git_net_url *url)
+{
+ git_buf_puts(buf, url->path ? url->path : "/");
+
+ if (url->query) {
+ git_buf_putc(buf, '?');
+ git_buf_puts(buf, url->query);
+ }
+
+ return git_buf_oom(buf) ? -1 : 0;
+}
+
void git_net_url_dispose(git_net_url *url)
{
if (url->username)
diff --git a/src/net.h b/src/net.h
index c140f95..7e72db1 100644
--- a/src/net.h
+++ b/src/net.h
@@ -48,6 +48,9 @@ extern void git_net_url_swap(git_net_url *a, git_net_url *b);
/** Places the URL into the given buffer. */
extern int git_net_url_fmt(git_buf *out, git_net_url *url);
+/** Place the path and query string into the given buffer. */
+extern int git_net_url_fmt_path(git_buf *buf, git_net_url *url);
+
/** Disposes the contents of the structure. */
extern void git_net_url_dispose(git_net_url *url);