Commit 785990bead1a717698eb0c2603e3d0b2ee51262f

Tomas Paladin Volf 2015-05-02T12:16:22

Restructured to be nicer example Code restructured to better represent best practice when using libgit2.

diff --git a/examples/network/git2.c b/examples/network/git2.c
index 1daff62..448103c 100644
--- a/examples/network/git2.c
+++ b/examples/network/git2.c
@@ -23,10 +23,8 @@ static int run_command(git_cb fn, int argc, char **argv)
 	int error;
 	git_repository *repo;
 
-	git_libgit2_init();
-
-// Before running the actual command, create an instance of the local
-// repository and pass it to the function.
+	// Before running the actual command, create an instance of the local
+	// repository and pass it to the function.
 
 	error = git_repository_open(&repo, ".git");
 	if (error < 0)
@@ -44,25 +42,32 @@ static int run_command(git_cb fn, int argc, char **argv)
 	if(repo)
 		git_repository_free(repo);
 
-	git_libgit2_shutdown();
-
 	return !!error;
 }
 
 int main(int argc, char **argv)
 {
 	int i;
+	int return_code = 1;
 
 	if (argc < 2) {
 		fprintf(stderr, "usage: %s <cmd> [repo]\n", argv[0]);
 		exit(EXIT_FAILURE);
 	}
 
+	git_libgit2_init();
+
 	for (i = 0; commands[i].name != NULL; ++i) {
-		if (!strcmp(argv[1], commands[i].name))
-			return run_command(commands[i].fn, --argc, ++argv);
+		if (!strcmp(argv[1], commands[i].name)) {
+			return_code = run_command(commands[i].fn, --argc, ++argv);
+			goto shutdown;
+		}
 	}
 
 	fprintf(stderr, "Command not found: %s\n", argv[1]);
-	return 1;
+
+shutdown:
+	git_libgit2_shutdown();
+
+	return return_code;
 }