Add support for --author flag in example log implementation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
diff --git a/examples/log.c b/examples/log.c
index 471c5ff..655b95d 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))