[libxml2] Fix return values and documentation in encoding.c
- From: Nick Wellnhofer <nwellnhof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Fix return values and documentation in encoding.c
- Date: Mon, 6 Jul 2020 13:32:35 +0000 (UTC)
commit 1e41e4fa8e2ea64a449c0416f085e9a2b8fef662
Author: Nick Wellnhofer <wellnhofer aevum de>
Date: Tue Jun 30 02:43:57 2020 +0200
Fix return values and documentation in encoding.c
Make xmlEncInputChunk and xmlEncOutputChunk return 0 on success and
never a positive value.
Make xmlCharEncFirstLineInt, xmlCharEncFirstLineInt and
xmlCharEncOutFunc return the number of bytes written.
encoding.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 53 insertions(+), 12 deletions(-)
---
diff --git a/encoding.c b/encoding.c
index 1a6386a4..c34aca44 100644
--- a/encoding.c
+++ b/encoding.c
@@ -170,7 +170,7 @@ closeIcuConverter(uconv_t *conv)
* Returns 0 if success, or -1 otherwise
* The value of @inlen after return is the number of octets consumed
* if the return value is positive, else unpredictable.
- * The value of @outlen after return is the number of octets consumed.
+ * The value of @outlen after return is the number of octets produced.
*/
static int
asciiToUTF8(unsigned char* out, int *outlen,
@@ -217,7 +217,7 @@ asciiToUTF8(unsigned char* out, int *outlen,
* Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
* The value of @inlen after return is the number of octets consumed
* if the return value is positive, else unpredictable.
- * The value of @outlen after return is the number of octets consumed.
+ * The value of @outlen after return is the number of octets produced.
*/
static int
UTF8Toascii(unsigned char* out, int *outlen,
@@ -301,7 +301,7 @@ UTF8Toascii(unsigned char* out, int *outlen,
* Returns the number of bytes written if success, or -1 otherwise
* The value of @inlen after return is the number of octets consumed
* if the return value is positive, else unpredictable.
- * The value of @outlen after return is the number of octets consumed.
+ * The value of @outlen after return is the number of octets produced.
*/
int
isolat1ToUTF8(unsigned char* out, int *outlen,
@@ -396,7 +396,7 @@ UTF8ToUTF8(unsigned char* out, int *outlen,
or -1 otherwise
* The value of @inlen after return is the number of octets consumed
* if the return value is positive, else unpredictable.
- * The value of @outlen after return is the number of octets consumed.
+ * The value of @outlen after return is the number of octets produced.
*/
int
UTF8Toisolat1(unsigned char* out, int *outlen,
@@ -1789,7 +1789,7 @@ xmlFindCharEncodingHandler(const char *name) {
* @cd: iconv converter data structure
* @out: a pointer to an array of bytes to store the result
* @outlen: the length of @out
- * @in: a pointer to an array of ISO Latin 1 chars
+ * @in: a pointer to an array of input bytes
* @inlen: the length of @in
*
* Returns 0 if success, or
@@ -1800,7 +1800,7 @@ xmlFindCharEncodingHandler(const char *name) {
*
* The value of @inlen after return is the number of octets consumed
* as the return value is positive, else unpredictable.
- * The value of @outlen after return is the number of octets consumed.
+ * The value of @outlen after return is the number of octets produced.
*/
static int
xmlIconvWrapper(iconv_t cd, unsigned char *out, int *outlen,
@@ -1856,7 +1856,7 @@ xmlIconvWrapper(iconv_t cd, unsigned char *out, int *outlen,
* @toUnicode : non-zero if toUnicode. 0 otherwise.
* @out: a pointer to an array of bytes to store the result
* @outlen: the length of @out
- * @in: a pointer to an array of ISO Latin 1 chars
+ * @in: a pointer to an array of input bytes
* @inlen: the length of @in
* @flush: if true, indicates end of input
*
@@ -1868,7 +1868,7 @@ xmlIconvWrapper(iconv_t cd, unsigned char *out, int *outlen,
*
* The value of @inlen after return is the number of octets consumed
* as the return value is positive, else unpredictable.
- * The value of @outlen after return is the number of octets consumed.
+ * The value of @outlen after return is the number of octets produced.
*/
static int
xmlUconvWrapper(uconv_t *cd, int toUnicode, unsigned char *out, int *outlen,
@@ -1917,6 +1917,25 @@ xmlUconvWrapper(uconv_t *cd, int toUnicode, unsigned char *out, int *outlen,
* *
************************************************************************/
+/**
+ * xmlEncInputChunk:
+ * @handler: encoding handler
+ * @out: a pointer to an array of bytes to store the result
+ * @outlen: the length of @out
+ * @in: a pointer to an array of input bytes
+ * @inlen: the length of @in
+ * @flush: flush (ICU-related)
+ *
+ * Returns 0 if success, or
+ * -1 by lack of space, or
+ * -2 if the transcoding fails (for *in is not valid utf8 string or
+ * the result of transformation can't fit into the encoding we want), or
+ * -3 if there the last byte can't form a single output char.
+ *
+ * The value of @inlen after return is the number of octets consumed
+ * as the return value is 0, else unpredictable.
+ * The value of @outlen after return is the number of octets produced.
+ */
static int
xmlEncInputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
int *outlen, const unsigned char *in, int *inlen, int flush) {
@@ -1925,6 +1944,8 @@ xmlEncInputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
if (handler->input != NULL) {
ret = handler->input(out, outlen, in, inlen);
+ if (ret > 0)
+ ret = 0;
}
#ifdef LIBXML_ICONV_ENABLED
else if (handler->iconv_in != NULL) {
@@ -1946,7 +1967,25 @@ xmlEncInputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
return(ret);
}
-/* Returns -4 if no output function was found. */
+/**
+ * xmlEncOutputChunk:
+ * @handler: encoding handler
+ * @out: a pointer to an array of bytes to store the result
+ * @outlen: the length of @out
+ * @in: a pointer to an array of input bytes
+ * @inlen: the length of @in
+ *
+ * Returns 0 if success, or
+ * -1 by lack of space, or
+ * -2 if the transcoding fails (for *in is not valid utf8 string or
+ * the result of transformation can't fit into the encoding we want), or
+ * -3 if there the last byte can't form a single output char.
+ * -4 if no output function was found.
+ *
+ * The value of @inlen after return is the number of octets consumed
+ * as the return value is 0, else unpredictable.
+ * The value of @outlen after return is the number of octets produced.
+ */
static int
xmlEncOutputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
int *outlen, const unsigned char *in, int *inlen) {
@@ -1954,6 +1993,8 @@ xmlEncOutputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
if (handler->output != NULL) {
ret = handler->output(out, outlen, in, inlen);
+ if (ret > 0)
+ ret = 0;
}
#ifdef LIBXML_ICONV_ENABLED
else if (handler->iconv_out != NULL) {
@@ -2059,7 +2100,7 @@ xmlCharEncFirstLineInt(xmlCharEncodingHandler *handler, xmlBufferPtr out,
*/
if (ret == -3) ret = 0;
if (ret == -1) ret = 0;
- return(ret);
+ return(written ? written : ret);
}
/**
@@ -2189,7 +2230,7 @@ xmlCharEncFirstLineInput(xmlParserInputBufferPtr input, int len)
*/
if (ret == -3) ret = 0;
if (ret == -1) ret = 0;
- return(ret);
+ return(c_out ? c_out : ret);
}
/**
@@ -2710,7 +2751,7 @@ retry:
goto retry;
}
}
- return(ret);
+ return(writtentot ? writtentot : ret);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]