aboutsummaryrefslogtreecommitdiffstats
path: root/cgit.h
diff options
context:
space:
mode:
authorGravatar John Keeping <john@keeping.me.uk>2014-01-13 02:13:52 (JST)
committerGravatar Jason A. Donenfeld <Jason@zx2c4.com>2014-01-14 10:00:07 (JST)
commit7bd90b8048fd6937766dff7474947dd80205ea7e (patch)
tree63f9ba4eac9892a843338400042194b3bf115216 /cgit.h
parent632efb25c07c1b014a4e8cfbbea759f517c2aaf6 (diff)
downloadcgit-7bd90b8048fd6937766dff7474947dd80205ea7e.zip
cgit-7bd90b8048fd6937766dff7474947dd80205ea7e.tar.gz
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>
Diffstat (limited to 'cgit.h')
-rw-r--r--cgit.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/cgit.h b/cgit.h
index 9b4be26..92e8c55 100644
--- a/cgit.h
+++ b/cgit.h
@@ -57,6 +57,13 @@ typedef enum {
57} filter_type; 57} filter_type;
58 58
59struct cgit_filter { 59struct cgit_filter {
60 int (*open)(struct cgit_filter *, va_list ap);
61 int (*close)(struct cgit_filter *);
62 void (*fprintf)(struct cgit_filter *, FILE *, const char *prefix);
63};
64
65struct cgit_exec_filter {
66 struct cgit_filter base;
60 char *cmd; 67 char *cmd;
61 char **argv; 68 char **argv;
62 int extra_args; 69 int extra_args;
@@ -346,6 +353,7 @@ extern int cgit_parse_snapshots_mask(const char *str);
346extern int cgit_open_filter(struct cgit_filter *filter, ...); 353extern int cgit_open_filter(struct cgit_filter *filter, ...);
347extern int cgit_close_filter(struct cgit_filter *filter); 354extern int cgit_close_filter(struct cgit_filter *filter);
348extern void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, const char *prefix); 355extern void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, const char *prefix);
356extern void cgit_exec_filter_init(struct cgit_exec_filter *filter, char *cmd, char **argv);
349extern struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype); 357extern struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype);
350 358
351extern void cgit_prepare_repo_env(struct cgit_repo * repo); 359extern void cgit_prepare_repo_env(struct cgit_repo * repo);