Builtin git-cat-file

Signed-off-by: Timo Hirvonen <tihirvon@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
diff --git a/Makefile b/Makefile
index 7e6517f..dbf19c6 100644
--- a/Makefile
+++ b/Makefile
@@ -149,7 +149,6 @@
 
 # ... and all the rest that could be moved out of bindir to gitexecdir
 PROGRAMS = \
-	git-cat-file$X \
 	git-checkout-index$X git-clone-pack$X \
 	git-convert-objects$X git-fetch-pack$X git-fsck-objects$X \
 	git-hash-object$X git-index-pack$X git-local-fetch$X \
@@ -174,7 +173,7 @@
 	git-ls-files$X git-ls-tree$X \
 	git-read-tree$X git-commit-tree$X \
 	git-apply$X git-show-branch$X git-diff-files$X \
-	git-diff-index$X git-diff-stages$X git-diff-tree$X
+	git-diff-index$X git-diff-stages$X git-diff-tree$X git-cat-file$X
 
 # what 'all' will build and 'install' will install, in gitexecdir
 ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS)
@@ -228,7 +227,8 @@
 	builtin-ls-files.o builtin-ls-tree.o \
 	builtin-read-tree.o builtin-commit-tree.o \
 	builtin-apply.o builtin-show-branch.o builtin-diff-files.o \
-	builtin-diff-index.o builtin-diff-stages.o builtin-diff-tree.o
+	builtin-diff-index.o builtin-diff-stages.o builtin-diff-tree.o \
+	builtin-cat-file.o
 
 GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
 LIBS = $(GITLIBS) -lz
diff --git a/cat-file.c b/builtin-cat-file.c
similarity index 97%
rename from cat-file.c
rename to builtin-cat-file.c
index 7413fee..8ab136e 100644
--- a/cat-file.c
+++ b/builtin-cat-file.c
@@ -7,6 +7,7 @@
 #include "exec_cmd.h"
 #include "tag.h"
 #include "tree.h"
+#include "builtin.h"
 
 static void flush_buffer(const char *buf, unsigned long size)
 {
@@ -93,7 +94,7 @@
 	return 0;
 }
 
-int main(int argc, char **argv)
+int cmd_cat_file(int argc, const char **argv, char **envp)
 {
 	unsigned char sha1[20];
 	char type[20];
diff --git a/builtin.h b/builtin.h
index 714b975..738ec3d 100644
--- a/builtin.h
+++ b/builtin.h
@@ -42,5 +42,6 @@
 extern int cmd_diff_index(int argc, const char **argv, char **envp);
 extern int cmd_diff_stages(int argc, const char **argv, char **envp);
 extern int cmd_diff_tree(int argc, const char **argv, char **envp);
+extern int cmd_cat_file(int argc, const char **argv, char **envp);
 
 #endif
diff --git a/git.c b/git.c
index 5a884bb..10ea934 100644
--- a/git.c
+++ b/git.c
@@ -68,7 +68,8 @@
 		{ "diff-files", cmd_diff_files },
 		{ "diff-index", cmd_diff_index },
 		{ "diff-stages", cmd_diff_stages },
-		{ "diff-tree", cmd_diff_tree }
+		{ "diff-tree", cmd_diff_tree },
+		{ "cat-file", cmd_cat_file }
 	};
 	int i;