This patch factors the init-db directory creation into a new function,
which is then reused in the next patch.  

This patch applies on top of:
        [PATCH 0/8] init-db.c cleanup, add INDEX_FILE_DIRECTORY support
        [PATCH 1/8] init-db.c: [RESEND] remove redundant getenv call
        [PATCH 2/8] init-db.c: [RESEND] make init-db work with common objects
 init-db.c |   61 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 34 insertions(+), 27 deletions(-)
Signed-Off-By: Zach Welch <[EMAIL PROTECTED]>


--- a/init-db.c
+++ b/init-db.c
@@ -4,43 +4,50 @@
  * Copyright (C) Linus Torvalds, 2005
  */
 #include "cache.h"
+/*
+ * If you want to, you can share the DB area with any number of branches.
+ * That has advantages: you can save space by sharing all the SHA1 objects.
+ * On the other hand, it might just make lookup slower and messier. You
+ * be the judge.  The default case is to have a DB per managed directory.
+ */
+
+static char* init_dir(char *env, char *std, char *label, int *len)
+{
+       char *dir;
+       dir = getenv(env);
+       if (dir) {
+               struct stat st;
+               if (stat(dir, &st) < 0 || !S_ISDIR(st.st_mode)) {
+                       fprintf(stderr, "%s set to bad directory %s: ", env, 
dir);
+                       exit(1);
+               }
+       } 
+       else {
+               dir = std;
+               fprintf(stderr, "defaulting to private %s area\n", label);
+       }
+       if (mkdir(dir, 0755) < 0) {
+               if (errno != EEXIST) {
+                       perror(dir);
+                       exit(1);
+               }
+       }
+       if (len)
+               *len = strlen(dir);
+       return dir;
+}
 
 int main(int argc, char **argv)
 {
        char *sha1_dir, *path;
        int len, i;
 
        if (mkdir(".git", 0755) < 0) {
                perror("unable to create .git directory");
                exit(1);
        }
-
-       /*
-        * If you want to, you can share the DB area with any number of 
branches.
-        * That has advantages: you can save space by sharing all the SHA1 
objects.
-        * On the other hand, it might just make lookup slower and messier. You
-        * be the judge.
-        */
-       sha1_dir = getenv(DB_ENVIRONMENT);
-       if (sha1_dir) {
-               struct stat st;
-               if (!stat(sha1_dir, &st) && S_ISDIR(st.st_mode))
-                       return 0;
-               fprintf(stderr, "DB_ENVIRONMENT set to bad directory %s: ", 
sha1_dir);
-       }
-
-       /*
-        * The default case is to have a DB per managed directory.
-        */
-       sha1_dir = DEFAULT_DB_ENVIRONMENT;
-       fprintf(stderr, "defaulting to private storage area\n");
-       len = strlen(sha1_dir);
-       if (mkdir(sha1_dir, 0755) < 0) {
-               if (errno != EEXIST) {
-                       perror(sha1_dir);
-                       exit(1);
-               }
-       }
+       sha1_dir = init_dir(DB_ENVIRONMENT, DEFAULT_DB_ENVIRONMENT, "storage", 
&len);
+       
        path = malloc(len + 40);
        memcpy(path, sha1_dir, len);
        for (i = 0; i < 256; i++) {
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to