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

[PATCH 1/5] string_list: add a function string_list_remove_empty_items()

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Nov 4, 2012, 07:07 UTC
Message-ID
<1352012830-13591-2-git-send-email-mhagger@alum.mit.edu>
In-Reply-To
<1352012830-13591-1-git-send-email-mhagger@alum.mit.edu>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
 Documentation/technical/api-string-list.txt | 9 ++++++++-
 string-list.c                               | 9 +++++++++
 string-list.h                               | 7 +++++++
 3 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/Documentation/technical/api-string-list.txt b/Documentation/technical/api-string-list.txt
index 94d7a2b..7386bca 100644
--- a/Documentation/technical/api-string-list.txt
+++ b/Documentation/technical/api-string-list.txt
@@ -38,7 +38,8 @@ member (you need this if you add things later) and you should set the
   `unsorted_string_list_delete_item`.
 
 . Can remove items not matching a criterion from a sorted or unsorted
-  list using `filter_string_list`.
+  list using `filter_string_list`, or remove empty strings using
+  `string_list_remove_empty_items`.
 
 . Finally it should free the list using `string_list_clear`.
 
@@ -75,6 +76,12 @@ Functions
 	to be deleted.  Preserve the order of the items that are
 	retained.
 
+`string_list_remove_empty_items`::
+
+	Remove any empty strings from the list.  If free_util is true,
+	call free() on the util members of any items that have to be
+	deleted.  Preserve the order of the items that are retained.
+
 `string_list_longest_prefix`::
 
 	Return the longest string within a string_list that is a
diff --git a/string-list.c b/string-list.c
index c54b816..397e6cf 100644
--- a/string-list.c
+++ b/string-list.c
@@ -136,6 +136,15 @@ void filter_string_list(struct string_list *list, int free_util,
 	list->nr = dst;
 }
 
+static int item_is_not_empty(struct string_list_item *item, void *unused)
+{
+	return *item->string != '\0';
+}
+
+void string_list_remove_empty_items(struct string_list *list, int free_util) {
+	filter_string_list(list, free_util, item_is_not_empty, NULL);
+}
+
 char *string_list_longest_prefix(const struct string_list *prefixes,
 				 const char *string)
 {
diff --git a/string-list.h b/string-list.h
index 5efd07b..c50b0d0 100644
--- a/string-list.h
+++ b/string-list.h
@@ -39,6 +39,13 @@ void filter_string_list(struct string_list *list, int free_util,
 			string_list_each_func_t want, void *cb_data);
 
 /*
+ * Remove any empty strings from the list.  If free_util is true, call
+ * free() on the util members of any items that have to be deleted.
+ * Preserve the order of the items that are retained.
+ */
+void string_list_remove_empty_items(struct string_list *list, int free_util);
+
+/*
  * Return the longest string in prefixes that is a prefix (in the
  * sense of prefixcmp()) of string, or NULL if no such prefix exists.
  * This function does not require the string_list to be sorted (it
-- 
1.8.0
Previous: Michael HaggertyNext: Michael Haggerty
Message 2 of 8 in “Use string_lists when processing notes”
  1. 0/5 Use string_lists when processing notesMichael Haggerty, Nov 4, 2012
  2. 1/5 string_list: add a function string_list_remove_empty_items()Michael Haggerty, Nov 4, 2012
  3. 2/5 Initialize sort_uniq_list using named constantMichael Haggerty, Nov 4, 2012
  4. 3/5 combine_notes_cat_sort_uniq(): sort and dedup lines all at onceMichael Haggerty, Nov 4, 2012
  5. 4/5 notes: fix handling of colon-separated valuesMichael Haggerty, Nov 4, 2012
  6. 5/5 string_list_add_refs_from_colon_sep(): use string_list_split()Michael Haggerty, Nov 4, 2012
  7. Jeff KingNov 4, 2012
  8. Johan HerlandNov 6, 2012

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.