dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
gedcom-parse.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New function for handling age values.
[gedcom-parse.git]
/
utf8
/
utf8-convert.c
diff --git
a/utf8/utf8-convert.c
b/utf8/utf8-convert.c
index 097f199a35a6c4448d03dfe7892899f4ad13bcb3..926e14c41305d7e4741caf3fc3eb27331c06544b 100644
(file)
--- a/
utf8/utf8-convert.c
+++ b/
utf8/utf8-convert.c
@@
-187,7
+187,8
@@
void cleanup_utf8_conversion(convert_t conv)
}
}
}
}
-char* convert_from_utf8(convert_t conv, const char* input, int* conv_fails)
+char* convert_from_utf8(convert_t conv, const char* input, int* conv_fails,
+ size_t* output_len)
{
size_t insize = strlen(input);
size_t outsize;
{
size_t insize = strlen(input);
size_t outsize;
@@
-246,12
+247,12
@@
char* convert_from_utf8(convert_t conv, const char* input, int* conv_fails)
}
nconv = iconv(conv->from_utf8, &inptr, &insize, &outptr, &outsize);
}
}
nconv = iconv(conv->from_utf8, &inptr, &insize, &outptr, &outsize);
}
+ if (output_len) *output_len = outptr - outbuf->buffer;
return outbuf->buffer;
}
return outbuf->buffer;
}
-char* convert_to_utf8(convert_t conv, const char* input)
+char* convert_to_utf8(convert_t conv, const char* input
, size_t input_len
)
{
{
- size_t insize = strlen(input);
size_t outsize;
ICONV_CONST char *inptr = (ICONV_CONST char*) input;
char *outptr;
size_t outsize;
ICONV_CONST char *inptr = (ICONV_CONST char*) input;
char *outptr;
@@
-267,7
+268,7
@@
char* convert_to_utf8(convert_t conv, const char* input)
outptr = outbuf->buffer;
outsize = outbuf->size;
reset_conv_buffer(conv->outbuf);
outptr = outbuf->buffer;
outsize = outbuf->size;
reset_conv_buffer(conv->outbuf);
- nconv = iconv(conv->to_utf8, &inptr, &in
size
, &outptr, &outsize);
+ nconv = iconv(conv->to_utf8, &inptr, &in
put_len
, &outptr, &outsize);
while (nconv == (size_t)-1) {
if (errno == E2BIG) {
/* grow the output buffer */
while (nconv == (size_t)-1) {
if (errno == E2BIG) {
/* grow the output buffer */
@@
-286,7
+287,7
@@
char* convert_to_utf8(convert_t conv, const char* input)
/* EBADF is an error which should be captured by the first if above */
return NULL;
}
/* EBADF is an error which should be captured by the first if above */
return NULL;
}
- nconv = iconv(conv->to_utf8, &inptr, &in
size
, &outptr, &outsize);
+ nconv = iconv(conv->to_utf8, &inptr, &in
put_len
, &outptr, &outsize);
}
return outbuf->buffer;
}
}
return outbuf->buffer;
}