typedef void (*linediff_fn)(char *line, int len);
typedef enum {
- ABOUT, COMMIT, SOURCE
+ ABOUT, COMMIT, SOURCE, EMAIL
} filter_type;
struct cgit_filter {
int (*open)(struct cgit_filter *, va_list ap);
int (*close)(struct cgit_filter *);
void (*fprintf)(struct cgit_filter *, FILE *, const char *prefix);
+ void (*cleanup)(struct cgit_filter *);
+ int argument_count;
};
struct cgit_exec_filter {
struct cgit_filter base;
char *cmd;
char **argv;
- int extra_args;
int old_stdout;
int pipe_fh[2];
int pid;
struct cgit_filter *about_filter;
struct cgit_filter *commit_filter;
struct cgit_filter *source_filter;
+ struct cgit_filter *email_filter;
struct string_list submodules;
};
struct cgit_filter *about_filter;
struct cgit_filter *commit_filter;
struct cgit_filter *source_filter;
+ struct cgit_filter *email_filter;
};
struct cgit_page {
extern void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, const char *prefix);
extern void cgit_exec_filter_init(struct cgit_exec_filter *filter, char *cmd, char **argv);
extern struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype);
+extern void cgit_cleanup_filters(void);
+extern void cgit_init_filters(void);
extern void cgit_prepare_repo_env(struct cgit_repo * repo);