Let mbus_str_xml_encode return a resultcode

This commit is contained in:
Stefan Wahren
2016-01-31 17:55:09 +00:00
parent 3699d25b10
commit 0927f23ee7
2 changed files with 46 additions and 40 deletions

View File

@ -3654,7 +3654,7 @@ mbus_data_error_print(int error)
/// Encode string to XML
///
//------------------------------------------------------------------------------
void
int
mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len)
{
size_t i, len;
@ -3663,49 +3663,55 @@ mbus_str_xml_encode(unsigned char *dst, const unsigned char *src, size_t max_len
len = 0;
if (dst == NULL)
return;
if (src != NULL)
{
while((len+6) < max_len)
return -1;
}
if (src == NULL)
{
dst[len] = '\0';
return -2;
}
while((len+6) < max_len)
{
if (src[i] == '\0')
{
if (src[i] == '\0')
{
break;
}
if (iscntrl(src[i]))
{
// convert all control chars into spaces
dst[len++] = ' ';
}
else
{
switch (src[i])
{
case '&':
len += snprintf(&dst[len], max_len - len, "&amp;");
break;
case '<':
len += snprintf(&dst[len], max_len - len, "&lt;");
break;
case '>':
len += snprintf(&dst[len], max_len - len, "&gt;");
break;
case '"':
len += snprintf(&dst[len], max_len - len, "&quot;");
break;
default:
dst[len++] = src[i];
break;
}
}
i++;
break;
}
if (iscntrl(src[i]))
{
// convert all control chars into spaces
dst[len++] = ' ';
}
else
{
switch (src[i])
{
case '&':
len += snprintf(&dst[len], max_len - len, "&amp;");
break;
case '<':
len += snprintf(&dst[len], max_len - len, "&lt;");
break;
case '>':
len += snprintf(&dst[len], max_len - len, "&gt;");
break;
case '"':
len += snprintf(&dst[len], max_len - len, "&quot;");
break;
default:
dst[len++] = src[i];
break;
}
}
i++;
}
dst[len] = '\0';
return 0;
}
//------------------------------------------------------------------------------