git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2/GSoC 1/4] path.c: implement strbuf_mkpath()

From
Hui Yiqun <huiyiqun@gmail.com>
Date
Mar 17, 2016, 16:48 UTC
Message-ID
<1458233326-7735-1-git-send-email-huiyiqun@gmail.com>

Common logic of mkpath() and mkpathdup() are collected into a new do_mkpath(). Then, based on do_mkpath(), strbuf_mkpath() is implemented.

Signed-off-by: Hui Yiqun <huiyiqun@gmail.com>
---
 cache.h |  2 ++
 path.c  | 21 +++++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/cache.h b/cache.h
index b829410..ef843c1 100644
--- a/cache.h
+++ b/cache.h
@@ -781,6 +781,8 @@ extern char *git_pathdup(const char *fmt, ...)
 	__attribute__((format (printf, 1, 2)));
 extern char *mkpathdup(const char *fmt, ...)
 	__attribute__((format (printf, 1, 2)));
+extern void strbuf_mkpath(struct strbuf *sb, const char *fmt, ...)
+	__attribute__((format (printf, 2, 3)));
 extern char *git_pathdup_submodule(const char *path, const char *fmt, ...)
 	__attribute__((format (printf, 2, 3)));
 
diff --git a/path.c b/path.c
index 8b7e168..699af68 100644
--- a/path.c
+++ b/path.c
@@ -433,14 +433,19 @@ char *git_pathdup(const char *fmt, ...)
 	return strbuf_detach(&path, NULL);
 }
 
+static void do_mkpath(struct strbuf *buf, const char *fmt, va_list args)
+{
+	strbuf_vaddf(buf, fmt, args);
+	strbuf_cleanup_path(buf);
+}
+
 char *mkpathdup(const char *fmt, ...)
 {
 	struct strbuf sb = STRBUF_INIT;
 	va_list args;
 	va_start(args, fmt);
-	strbuf_vaddf(&sb, fmt, args);
+	do_mkpath(&sb, fmt, args);
 	va_end(args);
-	strbuf_cleanup_path(&sb);
 	return strbuf_detach(&sb, NULL);
 }
 
@@ -449,9 +454,17 @@ const char *mkpath(const char *fmt, ...)
 	va_list args;
 	struct strbuf *pathname = get_pathname();
 	va_start(args, fmt);
-	strbuf_vaddf(pathname, fmt, args);
+	do_mkpath(pathname, fmt, args);
+	va_end(args);
+	return pathname->buf;
+}
+
+void strbuf_mkpath(struct strbuf *buf, const char *fmt, ...)
+{
+	va_list args;
+	va_start(args, fmt);
+	do_mkpath(buf, fmt, args);
 	va_end(args);
-	return cleanup_path(pathname->buf);
 }
 
 static void do_submodule_path(struct strbuf *buf, const char *path,
-- 
2.7.3
Next: Hui Yiqun
Message 1 of 9 in “path.c: implement strbuf_mkpath()”
  1. 1/4 path.c: implement strbuf_mkpath()Hui Yiqun, Mar 17, 2016
  2. 2/4 path.c: implement xdg_runtime_dir()Hui Yiqun, Mar 17, 2016
  3. Jeff KingMar 17, 2016
  4. 3/4 git-credential-cache: put socket to xdg-compatible pathHui Yiqun, Mar 17, 2016
  5. 4/4 t0301: test credential-cache support of XDG_RUNTIME_DIRHui Yiqun, Mar 17, 2016
  6. Jeff KingMar 17, 2016
  7. 惠轶群Mar 18, 2016
  8. Jeff KingMar 18, 2016
  9. 惠轶群Mar 18, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.