2
0
mirror of https://git.zx2c4.com/cgit synced 2025-08-31 06:15:08 +00:00

filter: pass extra arguments via cgit_open_filter

This avoids poking into the filter data structure at various points in
the code.  We rely on the fact that the number of arguments is fixed
based on the filter type (set in cgit_new_filter) and that the call
sites all know which filter type they're using.

Signed-off-by: John Keeping <john@keeping.me.uk>
This commit is contained in:
John Keeping
2014-01-12 17:13:50 +00:00
committed by Jason A. Donenfeld
parent da218fcd9e
commit 3d8a6507ca
5 changed files with 38 additions and 30 deletions

View File

@@ -45,13 +45,12 @@ static void print_text_buffer(const char *name, char *buf, unsigned long size)
}
if (ctx.repo->source_filter) {
char *filter_arg = xstrdup(name);
html("<td class='lines'><pre><code>");
ctx.repo->source_filter->argv[1] = xstrdup(name);
cgit_open_filter(ctx.repo->source_filter);
cgit_open_filter(ctx.repo->source_filter, filter_arg);
html_raw(buf, size);
cgit_close_filter(ctx.repo->source_filter);
free(ctx.repo->source_filter->argv[1]);
ctx.repo->source_filter->argv[1] = NULL;
free(filter_arg);
html("</code></pre></td></tr></table>\n");
return;
}