diff options
| author | Bryce Kwon <bryce@brycekwon.com> | |
|---|---|---|
| committer | Bryce Kwon <bryce@brycekwon.com> | |
| commit | ||
| parent | ||
| tree | ||
| download | ||
Clean up the whole tree
Diffstat (limited to 'source/filter.c')
| -rw-r--r-- | source/filter.c | 48 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 file changed, 16 insertions, 32 deletions
diff --git a/source/filter.c b/source/filter.c index a7efe56..2731d58 100644 --- a/source/filter.c +++ b/source/filter.c @@ -27,22 +27,17 @@ static int open_exec_filter(struct cgit_filter *base, va_list ap) for (i = 0; i < filter->base.argument_count; i++) filter->argv[i + 1] = va_arg(ap, char *); - filter->old_stdout = cgit_die_unless_positive(dup(STDOUT_FILENO), - "Unable to duplicate STDOUT"); - cgit_die_unless_zero(pipe(pipefd), - "Unable to create pipe to subprocess"); - filter->pid = cgit_die_unless_non_negative(fork(), - "Unable to create subprocess"); + filter->old_stdout = cgit_die_unless_positive(dup(STDOUT_FILENO), "Unable to duplicate STDOUT"); + cgit_die_unless_zero(pipe(pipefd), "Unable to create pipe to subprocess"); + filter->pid = cgit_die_unless_non_negative(fork(), "Unable to create subprocess"); if (filter->pid == 0) { close(pipefd[1]); - cgit_die_unless_non_negative(dup2(pipefd[0], STDIN_FILENO), - "Unable to use pipe as STDIN"); + cgit_die_unless_non_negative(dup2(pipefd[0], STDIN_FILENO), "Unable to use pipe as STDIN"); execvp(filter->cmd, filter->argv); die_errno("Unable to exec subprocess %s", filter->cmd); } close(pipefd[0]); - cgit_die_unless_non_negative(dup2(pipefd[1], STDOUT_FILENO), - "Unable to use pipe as STDOUT"); + cgit_die_unless_non_negative(dup2(pipefd[1], STDOUT_FILENO), "Unable to use pipe as STDOUT"); close(pipefd[1]); return 0; } @@ -52,8 +47,7 @@ static int close_exec_filter(struct cgit_filter *base) struct cgit_exec_filter *filter = (struct cgit_exec_filter *)base; int i, exit_status = 0; - cgit_die_unless_non_negative(dup2(filter->old_stdout, STDOUT_FILENO), - "Unable to restore STDOUT"); + cgit_die_unless_non_negative(dup2(filter->old_stdout, STDOUT_FILENO), "Unable to restore STDOUT"); close(filter->old_stdout); if (filter->pid < 0) goto done; @@ -68,8 +62,7 @@ done: return WEXITSTATUS(exit_status); } -static void fprintf_exec_filter(struct cgit_filter *base, FILE *f, - const char *prefix) +static void fprintf_exec_filter(struct cgit_filter *base, FILE *f, const char *prefix) { struct cgit_exec_filter *filter = (struct cgit_exec_filter *)base; fprintf(f, "%sexec:%s\n", prefix, filter->cmd); @@ -101,8 +94,7 @@ static struct cgit_filter *new_exec_filter(const char *cmd, int argument_count) return &filter->base; } -void cgit_exec_filter_init(struct cgit_exec_filter *filter, char *cmd, - char **argv) +void cgit_exec_filter_init(struct cgit_exec_filter *filter, char *cmd, char **argv) { memset(filter, 0, sizeof(*filter)); filter->base.open = open_exec_filter; @@ -127,8 +119,7 @@ struct lua_filter { lua_State *lua_state; }; -typedef ssize_t (*filter_write_fn)(struct cgit_filter *base, const void *buf, - size_t count); +typedef ssize_t (*filter_write_fn)(struct cgit_filter *base, const void *buf, size_t count); static ssize_t (*libc_write)(int fd, const void *buf, size_t count); static filter_write_fn filter_write = NULL; @@ -152,8 +143,7 @@ ssize_t write(int fd, const void *buf, size_t count) return filter_write(current_write_filter, buf, count); } -static inline void hook_write(struct cgit_filter *filter, - filter_write_fn write_fn) +static inline void hook_write(struct cgit_filter *filter, filter_write_fn write_fn) { // Filters cannot nest, because there is one stdout and one hook, so a // second one would strand the first. @@ -178,12 +168,10 @@ static NORETURN void die_lua_error(struct lua_filter *filter) // page would be fed back into the broken filter. if (filter_write) unhook_write(); - die("Lua error in %s: %s", filter->script_file, - lua_tostring(filter->lua_state, -1)); + die("Lua error in %s: %s", filter->script_file, lua_tostring(filter->lua_state, -1)); } -static ssize_t write_lua_filter(struct cgit_filter *base, const void *buf, - size_t count) +static ssize_t write_lua_filter(struct cgit_filter *base, const void *buf, size_t count) { struct lua_filter *filter = (struct lua_filter *)base; @@ -199,8 +187,7 @@ static ssize_t write_lua_filter(struct cgit_filter *base, const void *buf, * so the hook comes off around the call. The zero returned is Lua's count * of values pushed, not a success code. */ -static inline int emit_unfiltered(lua_State *lua_state, - void (*emit)(const char *text)) +static inline int emit_unfiltered(lua_State *lua_state, void (*emit)(const char *text)) { const char *text; filter_write_fn saved_write; @@ -330,8 +317,7 @@ static int close_lua_filter(struct cgit_filter *base) return ret; } -static void fprintf_lua_filter(struct cgit_filter *base, FILE *f, - const char *prefix) +static void fprintf_lua_filter(struct cgit_filter *base, FILE *f, const char *prefix) { struct lua_filter *filter = (struct lua_filter *)base; fprintf(f, "%slua:%s\n", prefix, filter->script_file); @@ -391,8 +377,7 @@ int cgit_close_filter(struct cgit_filter *filter) return filter->close(filter); } -void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, - const char *prefix) +void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, const char *prefix) { filter->fprintfp(filter, f, prefix); } @@ -469,8 +454,7 @@ struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype) return new_exec_filter(cmd, argument_count); for (i = 0; i < ARRAY_SIZE(filter_specs); i++) { - if (len == strlen(filter_specs[i].prefix) && - !strncmp(filter_specs[i].prefix, cmd, len)) + if (len == strlen(filter_specs[i].prefix) && !strncmp(filter_specs[i].prefix, cmd, len)) return filter_specs[i].create(colon + 1, argument_count); } |
