diff options
-rw-r--r-- | examples/log.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/examples/log.c b/examples/log.c index 471c5ff96..655b95d10 100644 --- a/examples/log.c +++ b/examples/log.c @@ -54,7 +54,7 @@ struct log_options { int min_parents, max_parents; git_time_t before; git_time_t after; - char *author; + const char *author; char *committer; }; @@ -75,6 +75,7 @@ int main(int argc, char *argv[]) git_oid oid; git_commit *commit = NULL; git_pathspec *ps = NULL; + const git_signature *sig; git_threads_init(); @@ -128,6 +129,12 @@ int main(int argc, char *argv[]) continue; } + if (opt.author != NULL) { + if ((sig = git_commit_author(commit)) == NULL || + strstr(sig->name, opt.author) == NULL) + continue; + } + if (count++ < opt.skip) continue; if (opt.limit != -1 && printed++ >= opt.limit) { @@ -401,6 +408,8 @@ static int parse_options( set_sorting(s, GIT_SORT_TOPOLOGICAL); else if (!strcmp(a, "--reverse")) set_sorting(s, GIT_SORT_REVERSE); + else if (match_str_arg(&opt->author, &args, "--author")) + /** Found valid --author */; else if (match_str_arg(&s->repodir, &args, "--git-dir")) /** Found git-dir. */; else if (match_int_arg(&opt->skip, &args, "--skip", 0)) |