summaryrefslogtreecommitdiffstats
path: root/strvec.h
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-05-27 13:47:04 +0200
committerJunio C Hamano <gitster@pobox.com>2024-05-27 20:20:02 +0200
commit11ce77b5cc04e2a42b98f0f9f42d367f50f3b1fc (patch)
treede3d223621a5afca4f2d9a24b9d8b280adee2d7c /strvec.h
parentsubmodule: fix leaking memory for submodule entries (diff)
downloadgit-11ce77b5cc04e2a42b98f0f9f42d367f50f3b1fc.tar.xz
git-11ce77b5cc04e2a42b98f0f9f42d367f50f3b1fc.zip
strvec: add functions to replace and remove strings
Add two functions that allow to replace and remove strings contained in the strvec. This will be used by a subsequent commit that refactors git-mv(1). While at it, add a bunch of unit tests that cover both old and new functionality. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'strvec.h')
-rw-r--r--strvec.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/strvec.h b/strvec.h
index 4715d3e51f..6c7e8b7d50 100644
--- a/strvec.h
+++ b/strvec.h
@@ -65,6 +65,19 @@ void strvec_pushl(struct strvec *, ...);
void strvec_pushv(struct strvec *, const char **);
/**
+ * Replace the value at the given index with a new value. The index must be
+ * valid. Returns a pointer to the inserted value.
+ */
+const char *strvec_replace(struct strvec *array, size_t idx, const char *replacement);
+
+/*
+ * Remove the value at the given index. The remainder of the array will be
+ * moved to fill the resulting gap. The provided index must point into the
+ * array.
+ */
+void strvec_remove(struct strvec *array, size_t idx);
+
+/**
* Remove the final element from the array. If there are no
* elements in the array, do nothing.
*/