create_default_files was getting a bit long and indented.  This
particular bit of code got long enough to be its own function.

Signed-off-by: Reuben Hawkins <reuben...@gmail.com>
---
 builtin/init-db.c |   97 +++++++++++++++++++++++++++++------------------------
 1 file changed, 53 insertions(+), 44 deletions(-)

diff --git a/builtin/init-db.c b/builtin/init-db.c
index 34f09d8..bcf7f4c 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -177,6 +177,58 @@ static int git_init_db_config(const char *k, const char 
*v, void *cb)
        return 0;
 }
 
+static void probe_case_sensitivity(char *path, size_t len)
+{
+       int completely_insensitive_fs = 1;
+       char const * const case_check_filename = ".CaseCheck";
+       struct dirent *dirent;
+       FILE *case_file;
+       DIR *dir;
+
+       /*
+        * If we can't access "config" by the name "CoNfIg", this fs is
+        * case sensitive...so do nothing and return.
+        */
+       path[len] = 0;
+       strcpy(path + len, "CoNfIg");
+       if (access(path, F_OK))
+               return;
+
+       /*
+        * This filesystem is at least partially case-insensitive.  Let's
+        * find out if this filesystem is completely case-insensitive.
+        *
+        * Create a CamelCase file here, make sure readdir reads a
+        * CamelCase file below.
+        */
+       path[len] = 0;
+       strcpy(path + len, case_check_filename);
+       case_file = fopen(path, "w");
+       if (!case_file)
+               die_errno(_("cannot open '%s'"), path);
+       fclose(case_file);
+
+       path[len] = 0;
+       dir = opendir(path);
+       if (!dir)
+               die_errno(_("cannot opendir '%s'"), path);
+
+       while ( (dirent = readdir(dir)) ) {
+               if (0 == strcmp(case_check_filename, dirent->d_name)) {
+                       completely_insensitive_fs = 0;
+                       break;
+               }
+       }
+
+       closedir(dir);
+       path[len] = 0;
+       strcpy(path + len, case_check_filename);
+       unlink(path);
+
+       if (completely_insensitive_fs)
+               git_config_set("core.ignorecase", "true");
+}
+
 static int create_default_files(const char *template_path)
 {
        const char *git_dir = get_git_dir();
@@ -285,50 +337,7 @@ static int create_default_files(const char *template_path)
                else
                        git_config_set("core.symlinks", "false");
 
-               /* Check if the filesystem is case-insensitive */
-               path[len] = 0;
-               strcpy(path + len, "CoNfIg");
-               if (!access(path, F_OK)) {
-                       /*
-                        * This filesystem is at least partially 
case-insensitive.  Let's
-                        * find out if this filesystem is completely 
case-insensitive.
-                        *
-                        * Create a CamelCase file here, make sure readdir 
reads a
-                        * CamelCase file below.
-                        */
-                       int completely_insensitive_fs = 1;
-                       char const * const case_check_filename = ".CaseCheck";
-                       struct dirent *dirent;
-                       FILE *case_file;
-                       DIR *dir;
-
-                       path[len] = 0;
-                       strcpy(path + len, case_check_filename);
-                       case_file = fopen(path, "w");
-                       if (!case_file)
-                               die_errno(_("cannot open '%s'"), path);
-                       fclose(case_file);
-
-                       path[len] = 0;
-                       dir = opendir(path);
-                       if (!dir)
-                               die_errno(_("cannot opendir '%s'"), path);
-
-                       while ( (dirent = readdir(dir)) ) {
-                               if (0 == strcmp(case_check_filename, 
dirent->d_name)) {
-                                       completely_insensitive_fs = 0;
-                                       break;
-                               }
-                       }
-
-                       closedir(dir);
-                       path[len] = 0;
-                       strcpy(path + len, case_check_filename);
-                       unlink(path);
-
-                       if (completely_insensitive_fs)
-                               git_config_set("core.ignorecase", "true");
-               }
+               probe_case_sensitivity(path, len);
                probe_utf8_pathname_composition(path, len);
        }
 
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to