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

[PATCH 3/4] string-list: add for_each_string_list()

From
Jay Soffian <jaysoffian@gmail.com>
Date
Feb 19, 2009, 05:14 UTC
Message-ID
<1235020471-59982-4-git-send-email-jaysoffian@gmail.com>
In-Reply-To
<1235020471-59982-3-git-send-email-jaysoffian@gmail.com>

Give string-list a convenience function for iterating over each of the items in a string_list.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
 string-list.c |   10 ++++++++++
 string-list.h |    5 +++++
 2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/string-list.c b/string-list.c
index 15e14cf..1ac536e 100644
--- a/string-list.c
+++ b/string-list.c
@@ -92,6 +92,16 @@ struct string_list_item *string_list_lookup(const char *string, struct string_li
 	return list->items + i;
 }
 
+int for_each_string_list(string_list_each_func_t fn,
+			 struct string_list *list, void *cb_data)
+{
+	int i, ret = 0;
+	for (i = 0; i < list->nr; i++)
+		if ((ret = fn(&list->items[i], cb_data)))
+			break;
+	return ret;
+}
+
 void string_list_clear(struct string_list *list, int free_util)
 {
 	if (list->items) {
diff --git a/string-list.h b/string-list.h
index d32ba05..14bbc47 100644
--- a/string-list.h
+++ b/string-list.h
@@ -20,6 +20,11 @@ void string_list_clear(struct string_list *list, int free_util);
 typedef void (*string_list_clear_func_t)(void *p, const char *str);
 void string_list_clear_func(struct string_list *list, string_list_clear_func_t clearfunc);
 
+/* Use this function to iterate over each item */
+typedef int (*string_list_each_func_t)(struct string_list_item *, void *);
+int for_each_string_list(string_list_each_func_t,
+			 struct string_list *list, void *cb_data);
+
 /* Use these functions only on sorted lists: */
 int string_list_has_string(const struct string_list *list, const char *string);
 int string_list_find_insert_index(const struct string_list *list, const char *string,
-- 
1.6.2.rc1.218.g1b4fab
Previous: Jay SoffianNext: Jay Soffian
Message 4 of 19 in “Improve "remote show" output”
  1. 0/4 Improve "remote show" outputJay Soffian, Feb 19, 2009
  2. 1/4 remote: minor code cleanups in preparation for changing "show" outputJay Soffian, Feb 19, 2009
  3. 2/4 remote: move append_ref_to_tracked_list to get rid of prototypeJay Soffian, Feb 19, 2009
  4. 3/4 string-list: add for_each_string_list()Jay Soffian, Feb 19, 2009
  5. 4/4 remote: new show output styleJay Soffian, Feb 19, 2009
  6. Marc BranchaudFeb 19, 2009
  7. Sverre RabbelierFeb 19, 2009
  8. Marc BranchaudFeb 19, 2009
  9. Sverre RabbelierFeb 19, 2009
  10. Rostislav SvobodaFeb 19, 2009
  11. Jay SoffianFeb 19, 2009
  12. Jay SoffianFeb 19, 2009
  13. Julian PhillipsFeb 19, 2009
  14. Marc BranchaudFeb 20, 2009
  15. Jay SoffianFeb 20, 2009
  16. Johannes SixtFeb 19, 2009
  17. Jay SoffianFeb 19, 2009
  18. Junio C HamanoFeb 20, 2009
  19. Jay SoffianFeb 20, 2009

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.