{"thread":{"id":"37726","subject":"[PATCH] pass config slots as pointers instead of offsets","startedAt":"2014-10-14T17:43:41Z","lastAt":"2014-10-14T17:46:30Z","messageCount":2,"participants":["Junio C Hamano","Jonathan Nieder"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"250617","messageId":"xmqqk342zgvm.fsf@gitster.dls.corp.google.com","threadId":"37726","inReplyTo":null,"subject":"[PATCH] pass config slots as pointers instead of offsets","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-10-14T17:43:41Z","receivedAt":"2014-10-14T17:43:41Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"From: Jonathan Nieder <jrnieder@gmail.com>\nDate: Tue, 7 Oct 2014 15:16:57 -0400\n\nMany config-parsing helpers, like parse_branch_color_slot,\ntake the name of a config variable and an offset to the\n\"slot\" name (e.g., \"color.branch.plain\" is passed along with\n\"13\" to effectively pass \"plain\"). This is leftover from the\ntime that these functions would die() on error, and would\nwant the full variable name for error reporting.\n\nThese days they do not use the full variable name at all.\nPassing a single pointer to the slot name is more natural,\nand lets us more easily adjust the callers to use skip_prefix\nto avoid manually writing offset numbers.\n\nThis is effectively a continuation of 9e1a5eb, which did the\nsame for parse_diff_color_slot. This patch covers all of the\nremaining similar constructs.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n\n * Can we have your Sign-off (and a quick eyeballing again), please?\n\n builtin/branch.c | 16 ++++++++--------\n builtin/commit.c | 19 +++++++++----------\n builtin/log.c    |  2 +-\n log-tree.c       |  4 ++--\n log-tree.h       |  2 +-\n 5 files changed, 21 insertions(+), 22 deletions(-)\n\ndiff --git a/builtin/branch.c b/builtin/branch.c\nindex 0591b22..b2e1895c 100644\n--- a/builtin/branch.c\n+++ b/builtin/branch.c\n@@ -62,19 +62,19 @@ static unsigned char merge_filter_ref[20];\n static struct string_list output = STRING_LIST_INIT_DUP;\n static unsigned int colopts;\n \n-static int parse_branch_color_slot(const char *var, int ofs)\n+static int parse_branch_color_slot(const char *slot)\n {\n-\tif (!strcasecmp(var+ofs, \"plain\"))\n+\tif (!strcasecmp(slot, \"plain\"))\n \t\treturn BRANCH_COLOR_PLAIN;\n-\tif (!strcasecmp(var+ofs, \"reset\"))\n+\tif (!strcasecmp(slot, \"reset\"))\n \t\treturn BRANCH_COLOR_RESET;\n-\tif (!strcasecmp(var+ofs, \"remote\"))\n+\tif (!strcasecmp(slot, \"remote\"))\n \t\treturn BRANCH_COLOR_REMOTE;\n-\tif (!strcasecmp(var+ofs, \"local\"))\n+\tif (!strcasecmp(slot, \"local\"))\n \t\treturn BRANCH_COLOR_LOCAL;\n-\tif (!strcasecmp(var+ofs, \"current\"))\n+\tif (!strcasecmp(slot, \"current\"))\n \t\treturn BRANCH_COLOR_CURRENT;\n-\tif (!strcasecmp(var+ofs, \"upstream\"))\n+\tif (!strcasecmp(slot, \"upstream\"))\n \t\treturn BRANCH_COLOR_UPSTREAM;\n \treturn -1;\n }\n@@ -88,7 +88,7 @@ static int git_branch_config(const char *var, const char *value, void *cb)\n \t\treturn 0;\n \t}\n \tif (starts_with(var, \"color.branch.\")) {\n-\t\tint slot = parse_branch_color_slot(var, 13);\n+\t\tint slot = parse_branch_color_slot(var + 13);\n \t\tif (slot < 0)\n \t\t\treturn 0;\n \t\tif (!value)\ndiff --git a/builtin/commit.c b/builtin/commit.c\nindex 5ed6036..5a8a29e 100644\n--- a/builtin/commit.c\n+++ b/builtin/commit.c\n@@ -1238,22 +1238,21 @@ static int dry_run_commit(int argc, const char **argv, const char *prefix,\n \treturn commitable ? 0 : 1;\n }\n \n-static int parse_status_slot(const char *var, int offset)\n+static int parse_status_slot(const char *slot)\n {\n-\tif (!strcasecmp(var+offset, \"header\"))\n+\tif (!strcasecmp(slot, \"header\"))\n \t\treturn WT_STATUS_HEADER;\n-\tif (!strcasecmp(var+offset, \"branch\"))\n+\tif (!strcasecmp(slot, \"branch\"))\n \t\treturn WT_STATUS_ONBRANCH;\n-\tif (!strcasecmp(var+offset, \"updated\")\n-\t\t|| !strcasecmp(var+offset, \"added\"))\n+\tif (!strcasecmp(slot, \"updated\") || !strcasecmp(slot, \"added\"))\n \t\treturn WT_STATUS_UPDATED;\n-\tif (!strcasecmp(var+offset, \"changed\"))\n+\tif (!strcasecmp(slot, \"changed\"))\n \t\treturn WT_STATUS_CHANGED;\n-\tif (!strcasecmp(var+offset, \"untracked\"))\n+\tif (!strcasecmp(slot, \"untracked\"))\n \t\treturn WT_STATUS_UNTRACKED;\n-\tif (!strcasecmp(var+offset, \"nobranch\"))\n+\tif (!strcasecmp(slot, \"nobranch\"))\n \t\treturn WT_STATUS_NOBRANCH;\n-\tif (!strcasecmp(var+offset, \"unmerged\"))\n+\tif (!strcasecmp(slot, \"unmerged\"))\n \t\treturn WT_STATUS_UNMERGED;\n \treturn -1;\n }\n@@ -1291,7 +1290,7 @@ static int git_status_config(const char *k, const char *v, void *cb)\n \t\treturn 0;\n \t}\n \tif (starts_with(k, \"status.color.\") || starts_with(k, \"color.status.\")) {\n-\t\tint slot = parse_status_slot(k, 13);\n+\t\tint slot = parse_status_slot(k + 13);\n \t\tif (slot < 0)\n \t\t\treturn 0;\n \t\tif (!v)\ndiff --git a/builtin/log.c b/builtin/log.c\nindex 4389722..4c5fc4b 100644\n--- a/builtin/log.c\n+++ b/builtin/log.c\n@@ -389,7 +389,7 @@ static int git_log_config(const char *var, const char *value, void *cb)\n \t\treturn 0;\n \t}\n \tif (starts_with(var, \"color.decorate.\"))\n-\t\treturn parse_decorate_color_config(var, 15, value);\n+\t\treturn parse_decorate_color_config(var, var + 15, value);\n \tif (!strcmp(var, \"log.mailmap\")) {\n \t\tuse_mailmap_config = git_config_bool(var, value);\n \t\treturn 0;\ndiff --git a/log-tree.c b/log-tree.c\nindex 95e9b1d..479b1d2 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -66,9 +66,9 @@ static int parse_decorate_color_slot(const char *slot)\n \treturn -1;\n }\n \n-int parse_decorate_color_config(const char *var, const int ofs, const char *value)\n+int parse_decorate_color_config(const char *var, const char *slot_name, const char *value)\n {\n-\tint slot = parse_decorate_color_slot(var + ofs);\n+\tint slot = parse_decorate_color_slot(slot_name);\n \tif (slot < 0)\n \t\treturn 0;\n \tif (!value)\ndiff --git a/log-tree.h b/log-tree.h\nindex d6ecd4d..8cbefac 100644\n--- a/log-tree.h\n+++ b/log-tree.h\n@@ -7,7 +7,7 @@ struct log_info {\n \tstruct commit *commit, *parent;\n };\n \n-int parse_decorate_color_config(const char *var, const int ofs, const char *value);\n+int parse_decorate_color_config(const char *var, const char *slot_name, const char *value);\n void init_log_tree_opt(struct rev_info *);\n int log_tree_diff_flush(struct rev_info *);\n int log_tree_commit(struct rev_info *, struct commit *);\n-- \n2.1.2-487-ga3682c8\n"},{"id":"250618","messageId":"20141014174630.GC32245@google.com","threadId":"37726","inReplyTo":"xmqqk342zgvm.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH] pass config slots as pointers instead of offsets","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2014-10-14T17:46:30Z","receivedAt":"2014-10-14T17:46:30Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n\n>  builtin/branch.c | 16 ++++++++--------\n>  builtin/commit.c | 19 +++++++++----------\n>  builtin/log.c    |  2 +-\n>  log-tree.c       |  4 ++--\n>  log-tree.h       |  2 +-\n>  5 files changed, 21 insertions(+), 22 deletions(-)\n\nSigned-off-by: Jonathan Nieder <jrnieder@gmail.com>\n"}]}