summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-02 16:19:53 (GMT)
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-02 16:19:53 (GMT)
commit81f2bb1f54b20abefa9d102ea98c4ac73d81a66d (patch)
treedd4cbd18dc52e767dd57e7e402edc3008d28e260
parentcc29f7328551eca7bb6a8f37653c3fe3b7a973a5 (diff)
downloadgit-81f2bb1f54b20abefa9d102ea98c4ac73d81a66d.zip
git-81f2bb1f54b20abefa9d102ea98c4ac73d81a66d.tar.gz
git-81f2bb1f54b20abefa9d102ea98c4ac73d81a66d.tar.bz2
git-rev-list: factor out the commit printing from "main()"
Functions that do many things are bad. We should basically just parse the arguments in main(). We're not quite there yet, but it's a step in the right direction.
-rw-r--r--rev-list.c86
1 files changed, 50 insertions, 36 deletions
diff --git a/rev-list.c b/rev-list.c
index 73b3e97..8775b65 100644
--- a/rev-list.c
+++ b/rev-list.c
@@ -13,6 +13,54 @@ static const char rev_list_usage[] =
" --header\n"
" --pretty";
+static int verbose_header = 0;
+static int show_parents = 0;
+static int pretty_print = 0;
+static int hdr_termination = 0;
+static const char *prefix = "";
+static unsigned long max_age = -1;
+static unsigned long min_age = -1;
+static int max_count = -1;
+
+static void show_commit(struct commit *commit)
+{
+ printf("%s%s", prefix, sha1_to_hex(commit->object.sha1));
+ if (show_parents) {
+ struct commit_list *parents = commit->parents;
+ while (parents) {
+ printf(" %s", sha1_to_hex(parents->item->object.sha1));
+ parents = parents->next;
+ }
+ }
+ putchar('\n');
+ if (verbose_header) {
+ const char *buf = commit->buffer;
+ if (pretty_print) {
+ static char pretty_header[16384];
+ pretty_print_commit(commit->buffer, ~0, pretty_header, sizeof(pretty_header));
+ buf = pretty_header;
+ }
+ printf("%s%c", buf, hdr_termination);
+ }
+}
+
+static void show_commit_list(struct commit_list *list)
+{
+ while (list) {
+ struct commit *commit = pop_most_recent_commit(&list, SEEN);
+
+ if (commit->object.flags & UNINTERESTING)
+ continue;
+ if (min_age != -1 && (commit->date > min_age))
+ continue;
+ if (max_age != -1 && (commit->date < max_age))
+ break;
+ if (max_count != -1 && !max_count--)
+ break;
+ show_commit(commit);
+ }
+}
+
static void mark_parents_uninteresting(struct commit *commit)
{
struct commit_list *parents = commit->parents;
@@ -42,12 +90,7 @@ int main(int argc, char **argv)
unsigned char sha1[2][20];
struct commit_list *list = NULL;
struct commit *commit, *end;
- int i, verbose_header = 0, show_parents = 0, pretty_print = 0;
- int hdr_termination = 0;
- const char *prefix = "";
- unsigned long max_age = -1;
- unsigned long min_age = -1;
- int max_count = -1;
+ int i;
nr_sha = 0;
for (i = 1 ; i < argc; i++) {
@@ -119,35 +162,6 @@ int main(int argc, char **argv)
list = newlist;
}
- while (list) {
- struct commit *commit = pop_most_recent_commit(&list, SEEN);
-
- if (commit->object.flags & UNINTERESTING)
- continue;
- if (min_age != -1 && (commit->date > min_age))
- continue;
- if (max_age != -1 && (commit->date < max_age))
- break;
- if (max_count != -1 && !max_count--)
- break;
- printf("%s%s", prefix, sha1_to_hex(commit->object.sha1));
- if (show_parents) {
- struct commit_list *parents = commit->parents;
- while (parents) {
- printf(" %s", sha1_to_hex(parents->item->object.sha1));
- parents = parents->next;
- }
- }
- putchar('\n');
- if (verbose_header) {
- const char *buf = commit->buffer;
- if (pretty_print) {
- static char pretty_header[16384];
- pretty_print_commit(commit->buffer, ~0, pretty_header, sizeof(pretty_header));
- buf = pretty_header;
- }
- printf("%s%c", buf, hdr_termination);
- }
- }
+ show_commit_list(list);
return 0;
}