aboutsummaryrefslogtreecommitdiff
path: root/strbuf.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-10-17 13:25:19 -0700
committerJunio C Hamano <gitster@pobox.com>2016-10-17 13:25:20 -0700
commitdec040192fde87fb3249a3d53f802decd84fa7b7 (patch)
tree7c73c3807033b62c98368ff2d3ca8ecbf20177b9 /strbuf.c
parentaf9a70c8de7b1d45ecd0bbb1379c5c3e911a9dcd (diff)
parentea0fc3b4176a424a2b20eb76a6a503dc4d59cebb (diff)
downloadgit-dec040192fde87fb3249a3d53f802decd84fa7b7.tar.gz
git-dec040192fde87fb3249a3d53f802decd84fa7b7.tar.xz
Merge branch 'jk/alt-odb-cleanup'
Codepaths involved in interacting alternate object store have been cleaned up. * jk/alt-odb-cleanup: alternates: use fspathcmp to detect duplicates sha1_file: always allow relative paths to alternates count-objects: report alternates via verbose mode fill_sha1_file: write into a strbuf alternates: store scratch buffer as strbuf fill_sha1_file: write "boring" characters alternates: use a separate scratch space alternates: encapsulate alt->base munging alternates: provide helper for allocating alternate alternates: provide helper for adding to alternates list link_alt_odb_entry: refactor string handling link_alt_odb_entry: handle normalize_path errors t5613: clarify "too deep" recursion tests t5613: do not chdir in main process t5613: whitespace/style cleanups t5613: use test_must_fail t5613: drop test_valid_repo function t5613: drop reachable_via function
Diffstat (limited to 'strbuf.c')
-rw-r--r--strbuf.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/strbuf.c b/strbuf.c
index b839be491..8fec6579f 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -870,3 +870,23 @@ void strbuf_stripspace(struct strbuf *sb, int skip_comments)
strbuf_setlen(sb, j);
}
+
+int strbuf_normalize_path(struct strbuf *src)
+{
+ struct strbuf dst = STRBUF_INIT;
+
+ strbuf_grow(&dst, src->len);
+ if (normalize_path_copy(dst.buf, src->buf) < 0) {
+ strbuf_release(&dst);
+ return -1;
+ }
+
+ /*
+ * normalize_path does not tell us the new length, so we have to
+ * compute it by looking for the new NUL it placed
+ */
+ strbuf_setlen(&dst, strlen(dst.buf));
+ strbuf_swap(src, &dst);
+ strbuf_release(&dst);
+ return 0;
+}