Add config variable core.symrefsonly
[gitweb.git] / config.c
index 510456ceb59d5608d13164fe976631b3ba874fd6..bd35138daec12366193bf6e2b95399ef8287d205 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1,4 +1,3 @@
-#include <ctype.h>
 
 #include "cache.h"
 
@@ -14,6 +13,14 @@ static int get_next_char(void)
        c = '\n';
        if ((f = config_file) != NULL) {
                c = fgetc(f);
+               if (c == '\r') {
+                       /* DOS like systems */
+                       c = fgetc(f);
+                       if (c != '\n') {
+                               ungetc(c, f);
+                               c = '\r';
+                       }
+               }
                if (c == '\n')
                        config_linenr++;
                if (c == EOF) {
@@ -168,7 +175,7 @@ static int git_parse_file(config_fn_t fn)
                }
                if (!isalpha(c))
                        break;
-               var[baselen] = c;
+               var[baselen] = tolower(c);
                if (get_value(fn, var, baselen+1) < 0)
                        break;
        }
@@ -207,6 +214,21 @@ int git_default_config(const char *var, const char *value)
                return 0;
        }
 
+       if (!strcmp(var, "core.symrefsonly")) {
+               only_use_symrefs = git_config_bool(var, value);
+               return 0;
+       }
+
+       if (!strcmp(var, "user.name")) {
+               strncpy(git_default_name, value, sizeof(git_default_name));
+               return 0;
+       }
+
+       if (!strcmp(var, "user.email")) {
+               strncpy(git_default_email, value, sizeof(git_default_email));
+               return 0;
+       }
+
        /* Add other config variables here.. */
        return 0;
 }