mirror of
https://github.com/git/git.git
synced 2024-12-01 05:54:16 +08:00
0e18bcd5e9
Callers of reencode_string() that re-encodes a string from one encoding to another all used ad-hoc way to bypass the case where the input and the output encodings are the same. Some did strcmp(), some did strcasecmp(), yet some others when converting to UTF-8 used is_encoding_utf8(). Introduce same_encoding() helper function to make these callers use the same logic. Notably, is_encoding_utf8() has a work-around for common misconfiguration to use "utf8" to name UTF-8 encoding, which does not match "UTF-8" hence strcasecmp() would not consider the same. Make use of it in this helper function. Signed-off-by: Junio C Hamano <gitster@pobox.com>
25 lines
777 B
C
25 lines
777 B
C
#ifndef GIT_UTF8_H
|
|
#define GIT_UTF8_H
|
|
|
|
typedef unsigned int ucs_char_t; /* assuming 32bit int */
|
|
|
|
int utf8_width(const char **start, size_t *remainder_p);
|
|
int utf8_strwidth(const char *string);
|
|
int is_utf8(const char *text);
|
|
int is_encoding_utf8(const char *name);
|
|
int same_encoding(const char *, const char *);
|
|
|
|
int strbuf_add_wrapped_text(struct strbuf *buf,
|
|
const char *text, int indent, int indent2, int width);
|
|
int strbuf_add_wrapped_bytes(struct strbuf *buf, const char *data, int len,
|
|
int indent, int indent2, int width);
|
|
|
|
#ifndef NO_ICONV
|
|
char *reencode_string_iconv(const char *in, size_t insz, iconv_t conv);
|
|
char *reencode_string(const char *in, const char *out_encoding, const char *in_encoding);
|
|
#else
|
|
#define reencode_string(a,b,c) NULL
|
|
#endif
|
|
|
|
#endif
|