summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b11645b)
raw | patch | inline | side by side (parent: b11645b)
author | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Wed, 18 May 2005 20:10:17 +0000 (13:10 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Wed, 18 May 2005 20:10:17 +0000 (13:10 -0700) |
We use "--" to mark end of command line switches, not "-". Also,
allow more flexibility in the passed-in sha1 names, in that a
single sha1 uses the "commit-diff" logic that compares against
its parent(s).
allow more flexibility in the passed-in sha1 names, in that a
single sha1 uses the "commit-diff" logic that compares against
its parent(s).
diff-tree.c | patch | blob | history |
diff --git a/diff-tree.c b/diff-tree.c
index 24b24dcfd0551405587c7cf4238f5ccae1297cd7..8cfe990023bbae14ff36a23bed1923513a9b022e 100644 (file)
--- a/diff-tree.c
+++ b/diff-tree.c
int main(int argc, char **argv)
{
+ int nr_sha1;
char line[1000];
- unsigned char old[20], new[20];
+ unsigned char sha1[2][20];
+ nr_sha1 = 0;
for (;;) {
char *arg;
argv++;
argc--;
arg = *argv;
- if (!arg || *arg != '-')
+ if (!arg)
break;
- if (!strcmp(arg, "-")) {
+ if (*arg != '-') {
+ if (nr_sha1 < 2 && !get_sha1(arg, sha1[nr_sha1])) {
+ nr_sha1++;
+ continue;
+ }
+ break;
+ }
+
+ if (!strcmp(arg, "--")) {
argv++;
argc--;
break;
usage(diff_tree_usage);
}
- if (!read_stdin) {
- if (argc < 2 || get_sha1(argv[0], old) || get_sha1(argv[1], new))
- usage(diff_tree_usage);
- argv += 2;
- argc -= 2;
- }
-
if (argc > 0) {
int i;
pathlens[i] = strlen(paths[i]);
}
+ switch (nr_sha1) {
+ case 0:
+ if (!read_stdin)
+ usage(diff_tree_usage);
+ break;
+ case 1:
+ diff_tree_commit(sha1[0], sha1_to_hex(sha1[0]));
+ break;
+ case 2:
+ diff_tree_sha1(sha1[0], sha1[1], "");
+ break;
+ }
+
if (!read_stdin)
- return diff_tree_sha1(old, new, "");
+ return 0;
while (fgets(line, sizeof(line), stdin))
diff_tree_stdin(line);