Commit 97fc71ab3b935df5f32faae13035e40eeb03c07f

Eoin Coffey 2014-05-22T16:01:45

Add support for --author flag in example log implementation

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))