From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: "Kyle J. McKay" <mackyle@gmail.com>
Subject: [PATCH 7/9] remote-curl: recognize text/plain with a charset parameter
Date: Wed, 21 May 2014 06:33:01 -0400 [thread overview]
Message-ID: <20140521103301.GG30464@sigill.intra.peff.net> (raw)
In-Reply-To: <20140521102524.GA30301@sigill.intra.peff.net>
Commit 426e70d (remote-curl: show server content on http
errors, 2013-04-05) tried to recognize text/plain content
types, but fails to do so if they have any parameters.
This patches makes our parsing more liberal, though we still
do not do anything useful with a charset parameter.
Signed-off-by: Jeff King <peff@peff.net>
---
remote-curl.c | 26 ++++++++++++++++++--------
t/lib-httpd/error.sh | 8 +++++++-
t/t5550-http-fetch-dumb.sh | 5 +++++
3 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/remote-curl.c b/remote-curl.c
index a5ab977..6d1b206 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -194,20 +194,30 @@ static void free_discovery(struct discovery *d)
}
}
+/*
+ * We only show text/plain parts, as other types are likely
+ * to be ugly to look at on the user's terminal.
+ */
+static int content_type_is_terminal_friendly(struct strbuf *type)
+{
+ const char *p;
+
+ p = skip_prefix(type->buf, "text/plain");
+ if (!p || (*p && *p != ';'))
+ return 0;
+
+ return 1;
+}
+
static int show_http_message(struct strbuf *type, struct strbuf *msg)
{
const char *p, *eol;
- /*
- * We only show text/plain parts, as other types are likely
- * to be ugly to look at on the user's terminal.
- *
- * TODO should handle "; charset=XXX", and re-encode into
- * logoutputencoding
- */
- if (strcmp(type->buf, "text/plain"))
+ if (!content_type_is_terminal_friendly(type))
return -1;
+ /* TODO should record charset and reencode msg to logOutputEncoding */
+
strbuf_trim(msg);
if (!msg->len)
return -1;
diff --git a/t/lib-httpd/error.sh b/t/lib-httpd/error.sh
index 786f281..02e80b3 100755
--- a/t/lib-httpd/error.sh
+++ b/t/lib-httpd/error.sh
@@ -3,6 +3,7 @@
printf "Status: 500 Intentional Breakage\n"
printf "Content-Type: "
+charset=iso8859-1
case "$PATH_INFO" in
*html*)
printf "text/html"
@@ -10,8 +11,13 @@ case "$PATH_INFO" in
*text*)
printf "text/plain"
;;
+*charset*)
+ printf "text/plain; charset=utf-8"
+ charset=utf-8
+ ;;
esac
printf "\n"
printf "\n"
-printf "this is the error message\n"
+printf "this is the error message\n" |
+iconv -f us-ascii -t $charset
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index 13defd3..b35b261 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -181,5 +181,10 @@ test_expect_success 'git client does not show html errors' '
! grep "this is the error message" stderr
'
+test_expect_success 'git client shows text/plain with a charset' '
+ test_must_fail git clone "$HTTPD_URL/error/charset" 2>stderr &&
+ grep "this is the error message" stderr
+'
+
stop_httpd
test_done
--
2.0.0.rc1.436.g03cb729
next prev parent reply other threads:[~2014-05-21 10:33 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-21 10:25 [PATCH 0/9] handle alternate charsets for remote http errors Jeff King
2014-05-21 10:27 ` [PATCH 1/9] test-lib: preserve GIT_CURL_VERBOSE from the environment Jeff King
2014-05-21 10:27 ` [PATCH 2/9] strbuf: add strbuf_tolower function Jeff King
2014-05-22 0:07 ` Kyle J. McKay
2014-05-22 5:58 ` Jeff King
2014-05-22 18:36 ` Junio C Hamano
2014-05-22 18:41 ` Jeff King
2014-05-22 21:04 ` Junio C Hamano
2014-05-23 20:03 ` Jeff King
2014-05-22 22:52 ` Kyle J. McKay
2014-05-23 20:05 ` Jeff King
2014-05-23 22:34 ` Kyle J. McKay
2014-05-21 10:28 ` [PATCH 3/9] daemon/config: factor out duplicate xstrdup_tolower Jeff King
2014-05-21 10:29 ` [PATCH 4/9] http: normalize case of returned content-type Jeff King
2014-05-21 10:29 ` [PATCH 5/9] t/lib-httpd: use write_script to copy CGI scripts Jeff King
2014-05-21 10:29 ` [PATCH 6/9] t5550: test display of remote http error messages Jeff King
2014-05-21 10:33 ` Jeff King [this message]
2014-05-22 0:07 ` [PATCH 7/9] remote-curl: recognize text/plain with a charset parameter Kyle J. McKay
2014-05-22 6:05 ` Jeff King
2014-05-22 7:27 ` Kyle J. McKay
2014-05-22 9:02 ` Jeff King
2014-05-22 7:12 ` Peter Krefting
2014-05-22 9:05 ` Jeff King
2014-05-22 10:19 ` Peter Krefting
2014-05-21 10:33 ` [PATCH 8/9] strbuf: add strbuf_reencode helper Jeff King
2014-05-21 10:33 ` [PATCH 9/9] remote-curl: reencode http error messages Jeff King
2014-05-22 0:07 ` Kyle J. McKay
2014-05-22 6:05 ` Jeff King
2014-05-22 7:26 ` Peter Krefting
2014-05-22 9:28 ` [PATCH v2 0/9] handle alternate charsets for remote http errors Jeff King
2014-05-22 9:28 ` [PATCH v2 1/8] test-lib: preserve GIT_CURL_VERBOSE from the environment Jeff King
2014-05-22 9:28 ` [PATCH v2 2/8] t/lib-httpd: use write_script to copy CGI scripts Jeff King
2014-05-22 9:29 ` [PATCH v2 3/8] t5550: test display of remote http error messages Jeff King
2014-05-22 9:29 ` [PATCH v2 4/8] http: extract type/subtype portion of content-type Jeff King
2014-05-22 22:52 ` Kyle J. McKay
2014-05-23 20:12 ` Jeff King
2014-05-23 22:00 ` Kyle J. McKay
2014-05-22 9:30 ` [PATCH v2 5/8] http: optionally extract charset parameter from content-type Jeff King
2014-05-22 9:30 ` [PATCH v2 6/8] strbuf: add strbuf_reencode helper Jeff King
2014-05-22 9:30 ` [PATCH v2 7/8] remote-curl: reencode http error messages Jeff King
2014-05-22 9:36 ` [PATCH v2 8/8] http: default text charset to iso-8859-1 Jeff King
2014-05-23 2:02 ` brian m. carlson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140521103301.GG30464@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=mackyle@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).