filter: add interface layer

Change the existing cgit_{open,close,fprintf}_filter functions to
delegate to filter-specific implementations accessed via function
pointers on the cgit_filter object.

We treat the "exec" filter type slightly specially here by putting its
structure definition in the header file and providing an "init" function
to set up the function pointers.  This is required so that the
ui-snapshot.c code that applies a compression filter can continue to use
the filter interface to do so.

Signed-off-by: John Keeping <john@keeping.me.uk>
This commit is contained in:
John Keeping
2014-01-12 17:13:52 +00:00
committed by Jason A. Donenfeld
szülő 632efb25c0
commit 7bd90b8048
3 fájl változott, egészen pontosan 63 új sor hozzáadva és 22 régi sor törölve

Fájl megtekintése

@ -58,13 +58,12 @@ static int write_compressed_tar_archive(const char *hex,
char *filter_argv[])
{
int rv;
struct cgit_filter f = {
.cmd = filter_argv[0],
.argv = filter_argv,
};
cgit_open_filter(&f);
struct cgit_exec_filter f;
cgit_exec_filter_init(&f, filter_argv[0], filter_argv);
cgit_open_filter(&f.base);
rv = write_tar_archive(hex, prefix);
cgit_close_filter(&f);
cgit_close_filter(&f.base);
return rv;
}