Commit 517341c5d8b316f5590d55a4913a65c78ab05973

Edward Lee 2014-05-23T22:41:35

Address style concerns in setting mkdir/copy flags.

diff --git a/src/repository.c b/src/repository.c
index 6953519..e8d50ae 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -1232,15 +1232,10 @@ static int repo_init_structure(
 		}
 
 		if (tdir) {
-			if (chmod) {
-				error = git_futils_cp_r(tdir, repo_dir,
-					GIT_CPDIR_COPY_SYMLINKS | GIT_CPDIR_CHMOD_DIRS |
-					GIT_CPDIR_SIMPLE_TO_MODE, dmode);
-			} else {
-				error = git_futils_cp_r(tdir, repo_dir,
-					GIT_CPDIR_COPY_SYMLINKS |
-					GIT_CPDIR_SIMPLE_TO_MODE, dmode);
-			}
+			uint32_t cpflags = GIT_CPDIR_COPY_SYMLINKS | GIT_CPDIR_SIMPLE_TO_MODE;
+			if (opts->mode != GIT_REPOSITORY_INIT_SHARED_UMASK)
+					cpflags |= GIT_CPDIR_CHMOD_DIRS;
+			error = git_futils_cp_r(tdir, repo_dir, cpflags, dmode);
 		}
 
 		git_buf_free(&template_buf);
@@ -1263,13 +1258,12 @@ static int repo_init_structure(
 	 */
 	for (tpl = repo_template; !error && tpl->path; ++tpl) {
 		if (!tpl->content) {
-			if (chmod) {
-				error = git_futils_mkdir(
-					tpl->path, repo_dir, dmode, GIT_MKDIR_PATH | GIT_MKDIR_CHMOD);
-			} else {
-				error = git_futils_mkdir(
-					tpl->path, repo_dir, dmode, GIT_MKDIR_PATH);
-			}
+			uint32_t mkdir_flags = GIT_MKDIR_PATH;
+			if (chmod)
+				mkdir_flags |= GIT_MKDIR_CHMOD;
+
+			error = git_futils_mkdir(
+				tpl->path, repo_dir, dmode, mkdir_flags);
 		}
 		else if (!external_tpl) {
 			const char *content = tpl->content;