{"thread":{"id":"54719","subject":"[PATCHv2] imap-send: parse default git config","startedAt":"2020-11-26T08:38:23Z","lastAt":"2020-11-30T23:34:45Z","messageCount":2,"participants":["Nicolas Morey-Chaisemartin","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"410875","messageId":"1c3954a4-a8c7-d134-1a4a-aee8c3b4ef24@suse.com","threadId":"54719","inReplyTo":null,"subject":"[PATCHv2] imap-send: parse default git config","fromName":"Nicolas Morey-Chaisemartin","fromEmail":"nmoreychaisemartin@suse.com","sentAt":"2020-11-26T08:37:57Z","receivedAt":"2020-11-26T08:38:23Z","isPatch":false,"sender":{"key":"devel-git@morey-chaisemartin.com","avatar":"https://avatars.githubusercontent.com/u/108326?v=4"},"body":"git imap-send does not parse the default git config settings and thus ignore\ncore.askpass value.\nRewrite config parsing to support core settings.\n\nReported-by: Philippe Blain <levraiphilippeblain@gmail.com>\nSigned-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>\n---\n  imap-send.c | 52 ++++++++++++++++++++++++++++++----------------------\n  1 file changed, 30 insertions(+), 22 deletions(-)\n\ndiff --git a/imap-send.c b/imap-send.c\nindex 5764dd812ca7..fa1921734671 100644\n--- a/imap-send.c\n+++ b/imap-send.c\n@@ -84,17 +84,17 @@ static int nfvasprintf(char **strp, const char *fmt, va_list ap)\n  }\n  \n  struct imap_server_conf {\n-\tchar *name;\n-\tchar *tunnel;\n-\tchar *host;\n+\tconst char *name;\n+\tconst char *tunnel;\n+\tconst char *host;\n  \tint port;\n-\tchar *folder;\n-\tchar *user;\n-\tchar *pass;\n+\tconst char *folder;\n+\tconst char *user;\n+\tconst char *pass;\n  \tint use_ssl;\n  \tint ssl_verify;\n  \tint use_html;\n-\tchar *auth_method;\n+\tconst char *auth_method;\n  };\n  \n  static struct imap_server_conf server = {\n@@ -955,7 +955,7 @@ static void server_fill_credential(struct imap_server_conf *srvc, struct credent\n  \t\tsrvc->pass = xstrdup(cred->password);\n  }\n  \n-static struct imap_store *imap_open_store(struct imap_server_conf *srvc, char *folder)\n+static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const char *folder)\n  {\n  \tstruct credential cred = CREDENTIAL_INIT;\n  \tstruct imap_store *ctx;\n@@ -1338,15 +1338,26 @@ static int split_msg(struct strbuf *all_msgs, struct strbuf *msg, int *ofs)\n  \treturn 1;\n  }\n  \n-static void git_imap_config(void)\n+static int git_imap_config(const char *var, const char *val, void *cb)\n  {\n-\tconst char *val = NULL;\n  \n-\tgit_config_get_bool(\"imap.sslverify\", &server.ssl_verify);\n-\tgit_config_get_bool(\"imap.preformattedhtml\", &server.use_html);\n-\tgit_config_get_string(\"imap.folder\", &server.folder);\n-\n-\tif (!git_config_get_value(\"imap.host\", &val)) {\n+\tif(!strcmp(\"imap.sslverify\", var))\n+\t\tserver.ssl_verify = git_config_bool(var, val);\n+\telse if(!strcmp(\"imap.preformattedhtml\", var))\n+\t\tserver.use_html = git_config_bool(var, val);\n+\telse if(!strcmp(\"imap.folder\", var))\n+\t\treturn git_config_string(&server.folder, var, val);\n+\telse if(!strcmp(\"imap.user\", var))\n+\t\treturn git_config_string(&server.user, var, val);\n+\telse if(!strcmp(\"imap.pass\", var))\n+\t\treturn git_config_string(&server.pass, var, val);\n+\telse if(!strcmp(\"imap.tunnel\", var))\n+\t\treturn git_config_string(&server.tunnel, var, val);\n+\telse if(!strcmp(\"imap.authmethod\", var))\n+\t\treturn git_config_string(&server.auth_method, var, val);\n+\telse if(!strcmp(\"imap.port\", var))\n+\t\tserver.port = git_config_int(var, val);\n+\telse if(!strcmp(\"imap.host\", var)) {\n  \t\tif (!val) {\n  \t\t\tgit_die_config(\"imap.host\", \"Missing value for 'imap.host'\");\n  \t\t} else {\n@@ -1360,13 +1371,10 @@ static void git_imap_config(void)\n  \t\t\t\tval += 2;\n  \t\t\tserver.host = xstrdup(val);\n  \t\t}\n-\t}\n+\t} else\n+\t\treturn git_default_config(var, val, cb);\n  \n-\tgit_config_get_string(\"imap.user\", &server.user);\n-\tgit_config_get_string(\"imap.pass\", &server.pass);\n-\tgit_config_get_int(\"imap.port\", &server.port);\n-\tgit_config_get_string(\"imap.tunnel\", &server.tunnel);\n-\tgit_config_get_string(\"imap.authmethod\", &server.auth_method);\n+\treturn 0;\n  }\n  \n  static int append_msgs_to_imap(struct imap_server_conf *server,\n@@ -1539,7 +1547,7 @@ int cmd_main(int argc, const char **argv)\n  \tint nongit_ok;\n  \n  \tsetup_git_directory_gently(&nongit_ok);\n-\tgit_imap_config();\n+\tgit_config(git_imap_config, NULL);\n  \n  \targc = parse_options(argc, (const char **)argv, \"\", imap_send_options, imap_send_usage, 0);\n  \n-- \n2.29.2.405.gfdfcad78fd04\n\n"},{"id":"411019","messageId":"xmqqk0u2to79.fsf@gitster.c.googlers.com","threadId":"54719","inReplyTo":"1c3954a4-a8c7-d134-1a4a-aee8c3b4ef24@suse.com","subject":"Re: [PATCHv2] imap-send: parse default git config","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-11-30T23:33:14Z","receivedAt":"2020-11-30T23:34:45Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com> writes:\n\n> git imap-send does not parse the default git config settings and thus ignore\n> core.askpass value.\n> Rewrite config parsing to support core settings.\n>\n> Reported-by: Philippe Blain <levraiphilippeblain@gmail.com>\n> Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>\n> ---\n>  imap-send.c | 52 ++++++++++++++++++++++++++++++----------------------\n>  1 file changed, 30 insertions(+), 22 deletions(-)\n>\n> diff --git a/imap-send.c b/imap-send.c\n> index 5764dd812ca7..fa1921734671 100644\n> --- a/imap-send.c\n> +++ b/imap-send.c\n> @@ -84,17 +84,17 @@ static int nfvasprintf(char **strp, const char *fmt, va_list ap)\n>  }\n>    struct imap_server_conf {\n> -\tchar *name;\n> -\tchar *tunnel;\n> -\tchar *host;\n> +\tconst char *name;\n> +\tconst char *tunnel;\n> +\tconst char *host;\n>  \tint port;\n> -\tchar *folder;\n> -\tchar *user;\n> -\tchar *pass;\n> +\tconst char *folder;\n> +\tconst char *user;\n> +\tconst char *pass;\n>  \tint use_ssl;\n>  \tint ssl_verify;\n>  \tint use_html;\n> -\tchar *auth_method;\n> +\tconst char *auth_method;\n\nNice to see these tightened up, I guess.\n\n> @@ -955,7 +955,7 @@ static void server_fill_credential(struct imap_server_conf *srvc, struct credent\n>  \t\tsrvc->pass = xstrdup(cred->password);\n>  }\n>  -static struct imap_store *imap_open_store(struct imap_server_conf\n>  *srvc, char *folder)\n> +static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const char *folder)\n\nSorry but it appears that\n\n    Content-Type: text/plain; charset=windows-1252; format=flowed\n\nmunged the message into an unusable shape (the \"flowed\" part is what\nmakes it unusable), so it cannot be applied X-<.\n\n>  {\n>  \tstruct credential cred = CREDENTIAL_INIT;\n>  \tstruct imap_store *ctx;\n> @@ -1338,15 +1338,26 @@ static int split_msg(struct strbuf *all_msgs, struct strbuf *msg, int *ofs)\n>  \treturn 1;\n>  }\n>  -static void git_imap_config(void)\n> +static int git_imap_config(const char *var, const char *val, void *cb)\n>  {\n> -\tconst char *val = NULL;\n>  -\tgit_config_get_bool(\"imap.sslverify\", &server.ssl_verify);\n> -\tgit_config_get_bool(\"imap.preformattedhtml\", &server.use_html);\n> -\tgit_config_get_string(\"imap.folder\", &server.folder);\n> -\n> -\tif (!git_config_get_value(\"imap.host\", &val)) {\n> +\tif(!strcmp(\"imap.sslverify\", var))\n> +\t\tserver.ssl_verify = git_config_bool(var, val);\n> +\telse if(!strcmp(\"imap.preformattedhtml\", var))\n> +\t\tserver.use_html = git_config_bool(var, val);\n\nStyle: a SP between \"if\" and \"(\".\n\n> +\telse if(!strcmp(\"imap.folder\", var))\n> +\t\treturn git_config_string(&server.folder, var, val);\n\nOther than that, the patch looks quite straight-forward.\n\nThanks.\n"}]}