ret->about_filter = ctx.cfg.about_filter;
ret->commit_filter = ctx.cfg.commit_filter;
ret->source_filter = ctx.cfg.source_filter;
+ ret->email_filter = ctx.cfg.email_filter;
+ ret->owner_filter = ctx.cfg.owner_filter;
ret->clone_url = ctx.cfg.clone_url;
ret->submodules.strdup_strings = 1;
+ ret->hide = ret->ignore = 0;
return ret;
}
for (i = 0; i < cgit_repolist.count; i++) {
repo = &cgit_repolist.repos[i];
+ if (repo->ignore)
+ continue;
if (!strcmp(repo->url, url))
return repo;
}
list->refs[list->count++] = ref;
}
-static struct refinfo *cgit_mk_refinfo(const char *refname, const unsigned char *sha1)
+static struct refinfo *cgit_mk_refinfo(const char *refname, const struct object_id *oid)
{
struct refinfo *ref;
ref = xmalloc(sizeof (struct refinfo));
ref->refname = xstrdup(refname);
- ref->object = parse_object(sha1);
+ ref->object = parse_object(oid->hash);
switch (ref->object->type) {
case OBJ_TAG:
ref->tag = cgit_parse_tag((struct tag *)ref->object);
free(list->refs);
}
-int cgit_refs_cb(const char *refname, const unsigned char *sha1, int flags,
+int cgit_refs_cb(const char *refname, const struct object_id *oid, int flags,
void *cb_data)
{
struct reflist *list = (struct reflist *)cb_data;
- struct refinfo *info = cgit_mk_refinfo(refname, sha1);
+ struct refinfo *info = cgit_mk_refinfo(refname, oid);
if (info)
cgit_add_ref(list, info);
* ripped from git and modified to use globals instead of
* a special callback-struct.
*/
-char *diffbuf = NULL;
-int buflen = 0;
+static char *diffbuf = NULL;
+static int buflen = 0;
static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf)
{
struct diff_options opt;
struct pathspec_item item;
+ memset(&item, 0, sizeof(item));
diff_setup(&opt);
opt.output_format = DIFF_FORMAT_CALLBACK;
opt.detect_rename = 1;
fprintf(stderr, warn, p->name, p->value);
}
-int cgit_open_filter(struct cgit_filter *filter)
-{
- filter->old_stdout = chk_positive(dup(STDOUT_FILENO),
- "Unable to duplicate STDOUT");
- chk_zero(pipe(filter->pipe_fh), "Unable to create pipe to subprocess");
- filter->pid = chk_non_negative(fork(), "Unable to create subprocess");
- if (filter->pid == 0) {
- close(filter->pipe_fh[1]);
- chk_non_negative(dup2(filter->pipe_fh[0], STDIN_FILENO),
- "Unable to use pipe as STDIN");
- execvp(filter->cmd, filter->argv);
- die_errno("Unable to exec subprocess %s", filter->cmd);
- }
- close(filter->pipe_fh[0]);
- chk_non_negative(dup2(filter->pipe_fh[1], STDOUT_FILENO),
- "Unable to use pipe as STDOUT");
- close(filter->pipe_fh[1]);
- return 0;
-}
-
-int cgit_close_filter(struct cgit_filter *filter)
-{
- int exit_status;
-
- chk_non_negative(dup2(filter->old_stdout, STDOUT_FILENO),
- "Unable to restore STDOUT");
- close(filter->old_stdout);
- if (filter->pid < 0)
- return 0;
- waitpid(filter->pid, &exit_status, 0);
- if (WIFEXITED(exit_status) && !WEXITSTATUS(exit_status))
- return 0;
- die("Subprocess %s exited abnormally", filter->cmd);
-}
-
/* Read the content of the specified file into a newly allocated buffer,
* zeroterminate the buffer and return 0 on success, errno otherwise.
*/