{"thread":{"id":"54738","subject":"[PATCHv3] imap-send: parse default git config","startedAt":"2020-12-01T07:39:32Z","lastAt":"2020-12-01T19:13:07Z","messageCount":2,"participants":["Nicolas Morey-Chaisemartin","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"411039","messageId":"51989467-7bac-5e90-5b42-6503c8370988@suse.com","threadId":"54738","inReplyTo":null,"subject":"[PATCHv3] imap-send: parse default git config","fromName":"Nicolas Morey-Chaisemartin","fromEmail":"nmoreychaisemartin@suse.com","sentAt":"2020-12-01T07:38:16Z","receivedAt":"2020-12-01T07:39:32Z","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---\nSince v2:\n- Hopefully fixed format-flowed issue in my mail client\n- Fix style if issues\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..d0b94f911eeb 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":"411083","messageId":"xmqqtut5pchl.fsf@gitster.c.googlers.com","threadId":"54738","inReplyTo":"51989467-7bac-5e90-5b42-6503c8370988@suse.com","subject":"Re: [PATCHv3] imap-send: parse default git config","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-12-01T19:12:06Z","receivedAt":"2020-12-01T19:13:07Z","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> Since v2:\n> - Hopefully fixed format-flowed issue in my mail client\n> - Fix style if issues\n\nThanks.  Will queue.\n"}]}