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

[CGit] [PATCH 3/6] new_filter: determine extra_args from filter type

From
Ferry Huberts <mailings@hupie.com>
Date
Feb 17, 2011, 21:11 UTC
Message-ID
<1297977069-21884-4-git-send-email-mailings@hupie.com>
In-Reply-To
<1297977069-21884-1-git-send-email-mailings@hupie.com>
From: Ferry Huberts <ferry.huberts@pelagic.nl>
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
---
 cgit.c |   34 +++++++++++++++++++++++++++-------
 1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/cgit.c b/cgit.c
index 4440feb..6fa8f60 100644
--- a/cgit.c
+++ b/cgit.c
@@ -18,6 +18,10 @@
 
 const char *cgit_version = CGIT_VERSION;
 
+typedef enum {
+	about, commit, source
+} filter_type;
+
 void add_mimetype(const char *name, const char *value)
 {
 	struct string_list_item *item;
@@ -26,14 +30,30 @@ void add_mimetype(const char *name, const char *value)
 	item->util = xstrdup(value);
 }
 
-struct cgit_filter *new_filter(const char *cmd, int extra_args)
+struct cgit_filter *new_filter(const char *cmd, filter_type filtertype)
 {
 	int i = 0;
 	struct cgit_filter *f;
+	int extra_args;
 
 	if (!cmd || !cmd[0])
 		return NULL;
 
+	switch (filtertype) {
+		case about:
+		case commit:
+			extra_args = 0;
+			break;
+
+		case source:
+			extra_args = 1;
+			break;
+
+		default:
+			extra_args = 0;
+			break;
+	}
+
 	f = xmalloc(sizeof(struct cgit_filter));
 	f->cmd = xstrdup(cmd);
 	f->argv = xmalloc((2 + extra_args) * sizeof(char *));
@@ -78,11 +98,11 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)
 		repo->readme = xstrdup(value);
 	} else if (ctx.cfg.enable_filter_overrides) {
 		if (!strcmp(name, "about-filter"))
-			repo->about_filter = new_filter(value, 0);
+			repo->about_filter = new_filter(value, about);
 		else if (!strcmp(name, "commit-filter"))
-			repo->commit_filter = new_filter(value, 0);
+			repo->commit_filter = new_filter(value, commit);
 		else if (!strcmp(name, "source-filter"))
-			repo->source_filter = new_filter(value, 1);
+			repo->source_filter = new_filter(value, source);
 	}
 }
 
@@ -171,9 +191,9 @@ void config_cb(const char *name, const char *value)
 	else if (!strcmp(name, "cache-dynamic-ttl"))
 		ctx.cfg.cache_dynamic_ttl = atoi(value);
 	else if (!strcmp(name, "about-filter"))
-		ctx.cfg.about_filter = new_filter(value, 0);
+		ctx.cfg.about_filter = new_filter(value, about);
 	else if (!strcmp(name, "commit-filter"))
-		ctx.cfg.commit_filter = new_filter(value, 0);
+		ctx.cfg.commit_filter = new_filter(value, commit);
 	else if (!strcmp(name, "embedded"))
 		ctx.cfg.embedded = atoi(value);
 	else if (!strcmp(name, "max-atom-items"))
@@ -201,7 +221,7 @@ void config_cb(const char *name, const char *value)
 	else if (!strcmp(name, "section-from-path"))
 		ctx.cfg.section_from_path = atoi(value);
 	else if (!strcmp(name, "source-filter"))
-		ctx.cfg.source_filter = new_filter(value, 1);
+		ctx.cfg.source_filter = new_filter(value, source);
 	else if (!strcmp(name, "summary-log"))
 		ctx.cfg.summary_log = atoi(value);
 	else if (!strcmp(name, "summary-branches"))
-- 
1.7.4
Previous: Ferry HubertsNext: Ferry Huberts
Message 4 of 11 in “Communicate the repo name to the filter scripts”
  1. Ferry HubertsFeb 17, 2011
  2. [CGit] [PATCH 1/6] source_filter: fix a memory leakFerry Huberts, Feb 17, 2011
  3. [CGit] [PATCH 2/6] new_filter: correctly initialise all arguments for a new filterFerry Huberts, Feb 17, 2011
  4. [CGit] [PATCH 3/6] new_filter: determine extra_args from filter typeFerry Huberts, Feb 17, 2011
  5. [CGit] [PATCH 4/6] source_filter: also communicate the repo name to the filterFerry Huberts, Feb 17, 2011
  6. [CGit] [PATCH 5/6] commit_filter: also communicate the repo name to the filterFerry Huberts, Feb 17, 2011
  7. [CGit] [PATCH 6/6] about_filter: also communicate the repo name to the filterFerry Huberts, Feb 17, 2011
  8. Ferry HubertsFeb 17, 2011
  9. Lars HjemliFeb 19, 2011
  10. Ferry HubertsFeb 19, 2011
  11. Ferry HubertsFeb 24, 2011

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.