summaryrefslogtreecommitdiff
path: root/strbuf.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-06-16 12:18:35 -0700
committerJunio C Hamano <gitster@pobox.com>2014-06-16 12:18:36 -0700
commit2075a0c27fa5cf4f9f03964d407dc015c1749a7e (patch)
tree361c26f8579dcd888a9f4e5b54f79534a9c3b608 /strbuf.c
parentc37d3269d92eedbdf405a6f196253d120e8e2721 (diff)
parentc553fd1c1ef76688b6200e66a825b530b0b02140 (diff)
downloadgit-2075a0c27fa5cf4f9f03964d407dc015c1749a7e.tar.gz
Merge branch 'jk/http-errors'
Propagate the error messages from the webserver better to the client coming over the HTTP transport. * jk/http-errors: http: default text charset to iso-8859-1 remote-curl: reencode http error messages strbuf: add strbuf_reencode helper http: optionally extract charset parameter from content-type http: extract type/subtype portion of content-type t5550: test display of remote http error messages t/lib-httpd: use write_script to copy CGI scripts test-lib: preserve GIT_CURL_VERBOSE from the environment
Diffstat (limited to 'strbuf.c')
-rw-r--r--strbuf.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/strbuf.c b/strbuf.c
index c8217755e5..ac62982e67 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -1,5 +1,6 @@
#include "cache.h"
#include "refs.h"
+#include "utf8.h"
int starts_with(const char *str, const char *prefix)
{
@@ -99,6 +100,22 @@ void strbuf_ltrim(struct strbuf *sb)
sb->buf[sb->len] = '\0';
}
+int strbuf_reencode(struct strbuf *sb, const char *from, const char *to)
+{
+ char *out;
+ int len;
+
+ if (same_encoding(from, to))
+ return 0;
+
+ out = reencode_string_len(sb->buf, sb->len, to, from, &len);
+ if (!out)
+ return -1;
+
+ strbuf_attach(sb, out, len, len);
+ return 0;
+}
+
void strbuf_tolower(struct strbuf *sb)
{
char *p = sb->buf, *end = sb->buf + sb->len;