Separate object name errors from usage errors

Separate object name errors from usage errors.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
diff --git a/cat-file.c b/cat-file.c
index 628f6ca..7413fee 100644
--- a/cat-file.c
+++ b/cat-file.c
@@ -103,8 +103,10 @@
 
 	setup_git_directory();
 	git_config(git_default_config);
-	if (argc != 3 || get_sha1(argv[2], sha1))
+	if (argc != 3)
 		usage("git-cat-file [-t|-s|-e|-p|<type>] <sha1>");
+	if (get_sha1(argv[2], sha1))
+		die("Not a valid object name %s", argv[2]);
 
 	opt = 0;
 	if ( argv[1][0] == '-' ) {
@@ -133,8 +135,7 @@
 		return !has_sha1_file(sha1);
 
 	case 'p':
-		if (get_sha1(argv[2], sha1) ||
-		    sha1_object_info(sha1, type, NULL))
+		if (sha1_object_info(sha1, type, NULL))
 			die("Not a valid object name %s", argv[2]);
 
 		/* custom pretty-print here */
diff --git a/commit-tree.c b/commit-tree.c
index 2595850..0320036 100644
--- a/commit-tree.c
+++ b/commit-tree.c
@@ -91,15 +91,19 @@
 
 	git_config(git_default_config);
 
-	if (argc < 2 || get_sha1_hex(argv[1], tree_sha1) < 0)
+	if (argc < 2)
 		usage(commit_tree_usage);
+	if (get_sha1(argv[1], tree_sha1))
+		die("Not a valid object name %s", argv[1]);
 
 	check_valid(tree_sha1, tree_type);
 	for (i = 2; i < argc; i += 2) {
 		char *a, *b;
 		a = argv[i]; b = argv[i+1];
-		if (!b || strcmp(a, "-p") || get_sha1(b, parent_sha1[parents]))
+		if (!b || strcmp(a, "-p"))
 			usage(commit_tree_usage);
+		if (get_sha1(b, parent_sha1[parents]))
+			die("Not a valid object name %s", b);
 		check_valid(parent_sha1[parents], commit_type);
 		if (new_parent(parents))
 			parents++;
diff --git a/convert-objects.c b/convert-objects.c
index 12aacef..a67d6b4 100644
--- a/convert-objects.c
+++ b/convert-objects.c
@@ -321,8 +321,10 @@
 
 	setup_git_directory();
 
-	if (argc != 2 || get_sha1(argv[1], sha1))
+	if (argc != 2)
 		usage("git-convert-objects <sha1>");
+	if (get_sha1(argv[1], sha1))
+		die("Not a valid object name %s", argv[1]);
 
 	entry = convert_entry(sha1);
 	printf("new sha1: %s\n", sha1_to_hex(entry->new_sha1));
diff --git a/describe.c b/describe.c
index ff65742..8a9cd5d 100644
--- a/describe.c
+++ b/describe.c
@@ -105,11 +105,11 @@
 	static int initialized = 0;
 	struct commit_name *n;
 
-	if (get_sha1(arg, sha1) < 0)
-		usage(describe_usage);
+	if (get_sha1(arg, sha1))
+		die("Not a valid object name %s", arg);
 	cmit = lookup_commit_reference(sha1);
 	if (!cmit)
-		usage(describe_usage);
+		die("%s is not a valid '%s' object", arg, commit_type);
 
 	if (!initialized) {
 		initialized = 1;
diff --git a/ls-tree.c b/ls-tree.c
index e4ef200..f2b3bc1 100644
--- a/ls-tree.c
+++ b/ls-tree.c
@@ -142,8 +142,8 @@
 
 	if (argc < 2)
 		usage(ls_tree_usage);
-	if (get_sha1(argv[1], sha1) < 0)
-		usage(ls_tree_usage);
+	if (get_sha1(argv[1], sha1))
+		die("Not a valid object name %s", argv[1]);
 
 	pathspec = get_pathspec(prefix, argv + 2);
 	tree = parse_tree_indirect(sha1);
diff --git a/merge-base.c b/merge-base.c
index 07f5ab4..f0dc06e 100644
--- a/merge-base.c
+++ b/merge-base.c
@@ -247,10 +247,12 @@
 			usage(merge_base_usage);
 		argc--; argv++;
 	}
-	if (argc != 3 ||
-	    get_sha1(argv[1], rev1key) ||
-	    get_sha1(argv[2], rev2key))
+	if (argc != 3)
 		usage(merge_base_usage);
+	if (get_sha1(argv[1], rev1key))
+		die("Not a valid object name %s", argv[1]);
+	if (get_sha1(argv[2], rev2key))
+		die("Not a valid object name %s", argv[2]);
 	rev1 = lookup_commit_reference(rev1key);
 	rev2 = lookup_commit_reference(rev2key);
 	if (!rev1 || !rev2)
diff --git a/merge-tree.c b/merge-tree.c
index 50528d5..47181d4 100644
--- a/merge-tree.c
+++ b/merge-tree.c
@@ -151,7 +151,7 @@
 	unsigned char sha1[20];
 	void *buf;
 
-	if (get_sha1(rev, sha1) < 0)
+	if (get_sha1(rev, sha1))
 		die("unknown rev %s", rev);
 	buf = fill_tree_descriptor(desc, sha1);
 	if (!buf)
diff --git a/read-tree.c b/read-tree.c
index 26f4f7e..e926e4c 100644
--- a/read-tree.c
+++ b/read-tree.c
@@ -794,8 +794,8 @@
 		if (1 < index_only + update)
 			usage(read_tree_usage);
 
-		if (get_sha1(arg, sha1) < 0)
-			usage(read_tree_usage);
+		if (get_sha1(arg, sha1))
+			die("Not a valid object name %s", arg);
 		if (list_tree(sha1) < 0)
 			die("failed to unpack tree object %s", arg);
 		stage++;
diff --git a/revision.c b/revision.c
index 5f2f0be..d41e59b 100644
--- a/revision.c
+++ b/revision.c
@@ -674,7 +674,7 @@
 			local_flags = UNINTERESTING;
 			arg++;
 		}
-		if (get_sha1(arg, sha1) < 0) {
+		if (get_sha1(arg, sha1)) {
 			int j;
 
 			if (seen_dashdash || local_flags)
@@ -693,7 +693,7 @@
 	if (def && !revs->commits) {
 		unsigned char sha1[20];
 		struct commit *commit;
-		if (get_sha1(def, sha1) < 0)
+		if (get_sha1(def, sha1))
 			die("bad default revision '%s'", def);
 		commit = get_commit_reference(revs, def, sha1, 0);
 		add_one_commit(commit, revs);
diff --git a/ssh-upload.c b/ssh-upload.c
index b675a0b..2da6661 100644
--- a/ssh-upload.c
+++ b/ssh-upload.c
@@ -134,7 +134,7 @@
 	commit_id = argv[arg];
 	url = argv[arg + 1];
 	if (get_sha1(commit_id, sha1))
-		usage(ssh_push_usage);
+		die("Not a valid object name %s", commit_id);
 	memcpy(hex, sha1_to_hex(sha1), sizeof(hex));
 	argv[arg] = hex;
 
diff --git a/tar-tree.c b/tar-tree.c
index fc60a90..3308736 100644
--- a/tar-tree.c
+++ b/tar-tree.c
@@ -321,8 +321,8 @@
 		strbuf_append_string(&current_path, "/");
 		/* FALLTHROUGH */
 	case 2:
-		if (get_sha1(argv[1], sha1) < 0)
-			usage(tar_tree_usage);
+		if (get_sha1(argv[1], sha1))
+			die("Not a valid object name %s", argv[1]);
 		break;
 	default:
 		usage(tar_tree_usage);
diff --git a/unpack-file.c b/unpack-file.c
index 23a8562..ccddf1d 100644
--- a/unpack-file.c
+++ b/unpack-file.c
@@ -27,8 +27,10 @@
 {
 	unsigned char sha1[20];
 
-	if (argc != 2 || get_sha1(argv[1], sha1))
+	if (argc != 2)
 		usage("git-unpack-file <sha1>");
+	if (get_sha1(argv[1], sha1))
+		die("Not a valid object name %s", argv[1]);
 
 	setup_git_directory();
 	git_config(git_default_config);
diff --git a/update-ref.c b/update-ref.c
index ba4bf51..fd48742 100644
--- a/update-ref.c
+++ b/update-ref.c
@@ -32,10 +32,10 @@
 	refname = argv[1];
 	value = argv[2];
 	oldval = argv[3];
-	if (get_sha1(value, sha1) < 0)
+	if (get_sha1(value, sha1))
 		die("%s: not a valid SHA1", value);
 	memset(oldsha1, 0, 20);
-	if (oldval && get_sha1(oldval, oldsha1) < 0)
+	if (oldval && get_sha1(oldval, oldsha1))
 		die("%s: not a valid old SHA1", oldval);
 
 	path = resolve_ref(git_path("%s", refname), currsha1, !!oldval);