diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2007-11-05 22:27:43 +0100 | 
|---|---|---|
| committer | Jonathan Bastien-Filiatrault <joe@x2a.org> | 2007-11-05 18:13:31 -0500 | 
| commit | a2ebbd6948da96172108db5e9c02c141923ad05c (patch) | |
| tree | 9c40233ffcd35f1b20bb07a04bdb8c23d649e1ee | |
| parent | 7858a309d7671109950ec940f893c2d112d36b99 (diff) | |
| download | cgit-a2ebbd6948da96172108db5e9c02c141923ad05c.tar.gz cgit-a2ebbd6948da96172108db5e9c02c141923ad05c.tar.bz2 | |
Use utf8::reencode_string from git
This replaces the iconv-support in cgit with similar functions already
existing in git.
Signed-off-by: Lars Hjemli <hjemli@gmai.com>
| -rw-r--r-- | cgit.h | 1 | ||||
| -rw-r--r-- | parsing.c | 64 | 
2 files changed, 5 insertions, 60 deletions
| @@ -16,6 +16,7 @@  #include <log-tree.h>  #include <archive.h>  #include <xdiff/xdiff.h> +#include <utf8.h>  /* @@ -6,8 +6,6 @@   *   (see COPYING for full license text)   */ -#include <iconv.h> -  #include "cgit.h"  int next_char(FILE *f) @@ -178,62 +176,6 @@ void cgit_parse_url(const char *url)  	}  } -static char *iconv_msg(char *msg, const char *encoding) -{ -	iconv_t msg_conv = iconv_open(PAGE_ENCODING, encoding); -	size_t inlen = strlen(msg); -	char *in; -	char *out; -	size_t inleft; -	size_t outleft; -	char *buf; -	char *ret; -	size_t buf_sz; -	int again, fail; - -	if(msg_conv == (iconv_t)-1) -		return NULL; - -	buf_sz = inlen * 2; -	buf = xmalloc(buf_sz+1); -	do { -		in = msg; -		inleft = inlen; - -		out = buf; -		outleft = buf_sz; -		iconv(msg_conv, &in, &inleft, &out, &outleft); - -		if(inleft == 0) { -			fail = 0; -			again = 0; -		} else if(inleft != 0 && errno == E2BIG) { -			fail = 0; -			again = 1; - -			buf_sz *= 2; -			free(buf); -			buf = xmalloc(buf_sz+1); -		} else { -			fail = 1; -			again = 0; -		} -	} while(again && !fail); - -	if(fail) { -		free(buf); -		ret = NULL; -	} else { -		buf = xrealloc(buf, out - buf); -		*out = 0; -		ret = buf; -	} - -	iconv_close(msg_conv); - -	return ret; -} -  char *substr(const char *head, const char *tail)  {  	char *buf; @@ -321,13 +263,15 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)  		ret->subject = substr(p, p+strlen(p));  	if(strcmp(ret->msg_encoding, PAGE_ENCODING)) { -		t = iconv_msg(ret->subject, ret->msg_encoding); +		t = reencode_string(ret->subject, PAGE_ENCODING, +				    ret->msg_encoding);  		if(t) {  			free(ret->subject);  			ret->subject = t;  		} -		t = iconv_msg(ret->msg, ret->msg_encoding); +		t = reencode_string(ret->msg, PAGE_ENCODING, +				    ret->msg_encoding);  		if(t) {  			free(ret->msg);  			ret->msg = t; | 
