Index: ossp-pkg/xds/xml-decode-begin.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-begin.c,v rcsdiff -q -kk '-r1.1.2.1' '-r1.1.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-begin.c,v' 2>/dev/null --- xml-decode-begin.c 2001/08/01 13:26:29 1.1.2.1 +++ xml-decode-begin.c 2001/08/01 15:08:02 1.1.2.2 @@ -28,22 +28,12 @@ #include #include "internal.h" -int xml_decode_begin(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_begin(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - if (buffer_size < strlen(xds_xml_begin_text)) - return XDS_ERR_UNDERFLOW; - + xds_init_encoding_engine(strlen(xds_xml_begin_text)); if (strncasecmp(buffer, xds_xml_begin_text, strlen(xds_xml_begin_text)) != 0) return XDS_ERR_TYPE_MISMATCH; - - return strlen(xds_xml_begin_text); + return XDS_OK; } Index: ossp-pkg/xds/xml-decode-double.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-double.c,v rcsdiff -q -kk '-r1.3' '-r1.3.2.1' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-double.c,v' 2>/dev/null --- xml-decode-double.c 2001/07/24 13:52:41 1.3 +++ xml-decode-double.c 2001/08/01 15:08:02 1.3.2.1 @@ -27,7 +27,9 @@ #include "internal.h" -int xml_decode_double(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_double(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { return -1; } Index: ossp-pkg/xds/xml-decode-end.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-end.c,v rcsdiff -q -kk '-r1.1.2.1' '-r1.1.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-end.c,v' 2>/dev/null --- xml-decode-end.c 2001/08/01 13:26:29 1.1.2.1 +++ xml-decode-end.c 2001/08/01 15:08:02 1.1.2.2 @@ -28,22 +28,12 @@ #include #include "internal.h" -int xml_decode_end(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_end(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - if (buffer_size < strlen(xds_xml_end_text)) - return XDS_ERR_UNDERFLOW; - + xds_init_decoding_engine(strlen(xds_xml_end_text)); if (strncasecmp(buffer, xds_xml_end_text, strlen(xds_xml_end_text)) != 0) return XDS_ERR_TYPE_MISMATCH; - - return strlen(xds_xml_end_text); + return XDS_OK; } Index: ossp-pkg/xds/xml-decode-int32.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-int32.c,v rcsdiff -q -kk '-r1.2.2.1' '-r1.2.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-int32.c,v' 2>/dev/null --- xml-decode-int32.c 2001/08/01 13:26:29 1.2.2.1 +++ xml-decode-int32.c 2001/08/01 15:08:02 1.2.2.2 @@ -29,30 +29,19 @@ #include #include "internal.h" -int xml_decode_int32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_int32(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_int32_t* value; char* p; int negative; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - /* The buffer must contain at least opening tag, closing tag and - one digit. Check whether it is large enough. */ - - if (buffer_size < 7 + 8 + 1) - return XDS_ERR_UNDERFLOW; + xds_init_decoding_engine(7 + 8 + 1); /* Does the opening XML tag match? */ - if (strncmp(buffer, "", 7) != 0) + if (strncasecmp(buffer, "", 7) != 0) return XDS_ERR_TYPE_MISMATCH; /* Decode the representation of the value. */ @@ -81,8 +70,9 @@ if (p+8 > (char*)buffer + buffer_size) return XDS_ERR_UNDERFLOW; - else if (strncmp(p, "", 8) != 0) + else if (strncasecmp(p, "", 8) != 0) return XDS_ERR_TYPE_MISMATCH; - return p + 8 - (char*)buffer; + *used_buffer_size = p + 8 - (char*)buffer; + return XDS_OK; } Index: ossp-pkg/xds/xml-decode-int64.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-int64.c,v rcsdiff -q -kk '-r1.3.2.1' '-r1.3.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-int64.c,v' 2>/dev/null --- xml-decode-int64.c 2001/08/01 13:26:29 1.3.2.1 +++ xml-decode-int64.c 2001/08/01 15:08:02 1.3.2.2 @@ -29,30 +29,19 @@ #include #include "internal.h" -int xml_decode_int64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_int64(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_int64_t* value; char* p; int negative; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - /* The buffer must contain at least opening tag, closing tag and - one digit. Check whether it is large enough. */ - - if (buffer_size < 7 + 8 + 1) - return XDS_ERR_UNDERFLOW; + xds_init_decoding_engine(7 + 8 + 1); /* Does the opening XML tag match? */ - if (strncmp(buffer, "", 7) != 0) + if (strncasecmp(buffer, "", 7) != 0) return XDS_ERR_TYPE_MISMATCH; /* Decode the representation of the value. */ @@ -81,8 +70,9 @@ if (p+8 > (char*)buffer + buffer_size) return XDS_ERR_UNDERFLOW; - else if (strncmp(p, "", 8) != 0) + else if (strncasecmp(p, "", 8) != 0) return XDS_ERR_TYPE_MISMATCH; - return p + 8 - (char*)buffer; + *used_buffer_size = p + 8 - (char*)buffer; + return XDS_OK; } Index: ossp-pkg/xds/xml-decode-uint32.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-uint32.c,v rcsdiff -q -kk '-r1.2.2.1' '-r1.2.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-uint32.c,v' 2>/dev/null --- xml-decode-uint32.c 2001/08/01 13:26:29 1.2.2.1 +++ xml-decode-uint32.c 2001/08/01 15:08:02 1.2.2.2 @@ -29,29 +29,18 @@ #include #include "internal.h" -int xml_decode_uint32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_uint32(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_uint32_t* value; char* p; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - /* The buffer must contain at least opening tag, closing tag and - one digit. Check whether it is large enough. */ - - if (buffer_size < 8 + 9 + 1) - return XDS_ERR_UNDERFLOW; + xds_init_decoding_engine(8 + 9 + 1); /* Does the opening XML tag match? */ - if (strncmp(buffer, "", 8) != 0) + if (strncasecmp(buffer, "", 8) != 0) return XDS_ERR_TYPE_MISMATCH; /* Decode the representation of the value. */ @@ -71,8 +60,9 @@ if (p+9 > (char*)buffer + buffer_size) return XDS_ERR_UNDERFLOW; - else if (strncmp(p, "", 9) != 0) + else if (strncasecmp(p, "", 9) != 0) return XDS_ERR_TYPE_MISMATCH; - return p + 9 - (char*)buffer; + *used_buffer_size = p + 9 - (char*)buffer; + return XDS_OK; } Index: ossp-pkg/xds/xml-decode-uint64.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-uint64.c,v rcsdiff -q -kk '-r1.3.2.1' '-r1.3.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-uint64.c,v' 2>/dev/null --- xml-decode-uint64.c 2001/08/01 13:26:29 1.3.2.1 +++ xml-decode-uint64.c 2001/08/01 15:08:02 1.3.2.2 @@ -29,29 +29,18 @@ #include #include "internal.h" -int xml_decode_uint64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_decode_uint64(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_uint64_t* value; char* p; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - /* The buffer must contain at least opening tag, closing tag and - one digit. Check whether it is large enough. */ - - if (buffer_size < 8 + 9 + 1) - return XDS_ERR_UNDERFLOW; + xds_init_decoding_engine(8 + 9 + 1); /* Does the opening XML tag match? */ - if (strncmp(buffer, "", 8) != 0) + if (strncasecmp(buffer, "", 8) != 0) return XDS_ERR_TYPE_MISMATCH; /* Decode the representation of the value. */ @@ -71,8 +60,9 @@ if (p+9 > (char*)buffer + buffer_size) return XDS_ERR_UNDERFLOW; - else if (strncmp(p, "", 9) != 0) + else if (strncasecmp(p, "", 9) != 0) return XDS_ERR_TYPE_MISMATCH; - return p + 9 - (char*)buffer; + *used_buffer_size = p + 9 - (char*)buffer; + return XDS_OK; } Index: ossp-pkg/xds/xml-encode-begin.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-begin.c,v rcsdiff -q -kk '-r1.1.2.1' '-r1.1.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-begin.c,v' 2>/dev/null --- xml-encode-begin.c 2001/08/01 13:26:29 1.1.2.1 +++ xml-encode-begin.c 2001/08/01 15:08:02 1.1.2.2 @@ -33,19 +33,11 @@ "\n" \ "\n"; -int xml_encode_begin(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_begin(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - if (buffer_size >= strlen(xds_xml_begin_text)) - memmove(buffer, xds_xml_begin_text, strlen(xds_xml_begin_text)); - - return strlen(xds_xml_begin_text); + xds_init_encoding_engine(strlen(xds_xml_begin_text)); + memmove(buffer, xds_xml_begin_text, strlen(xds_xml_begin_text)); + return XDS_OK; } Index: ossp-pkg/xds/xml-encode-double.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-double.c,v rcsdiff -q -kk '-r1.3' '-r1.3.2.1' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-double.c,v' 2>/dev/null --- xml-encode-double.c 2001/07/24 13:52:41 1.3 +++ xml-encode-double.c 2001/08/01 15:08:02 1.3.2.1 @@ -27,7 +27,9 @@ #include "internal.h" -int xml_encode_double(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_double(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { return -1; } Index: ossp-pkg/xds/xml-encode-end.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-end.c,v rcsdiff -q -kk '-r1.1.2.1' '-r1.1.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-end.c,v' 2>/dev/null --- xml-encode-end.c 2001/08/01 13:26:29 1.1.2.1 +++ xml-encode-end.c 2001/08/01 15:08:02 1.1.2.2 @@ -30,19 +30,11 @@ const char xds_xml_end_text[] = "\n"; -int xml_encode_end(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_end(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - if (buffer_size >= strlen(xds_xml_end_text)) - memmove(buffer, xds_xml_end_text, strlen(xds_xml_end_text)); - - return strlen(xds_xml_end_text); + xds_init_encoding_engine(strlen(xds_xml_end_text)); + memmove(buffer, xds_xml_end_text, strlen(xds_xml_end_text)); + return XDS_OK; } Index: ossp-pkg/xds/xml-encode-int32.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-int32.c,v rcsdiff -q -kk '-r1.3.2.1' '-r1.3.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-int32.c,v' 2>/dev/null --- xml-encode-int32.c 2001/08/01 13:26:30 1.3.2.1 +++ xml-encode-int32.c 2001/08/01 15:08:02 1.3.2.2 @@ -28,7 +28,9 @@ #include #include "internal.h" -int xml_encode_int32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_int32(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_int32_t value; char buf[32]; @@ -36,16 +38,10 @@ char* p; int negative; - /* Consistency checks. */ + xds_init_encoding_engine(7 + 8 + 11); - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; - - /* Format value into our buffer. */ + /* Get the value and format it into our buffer. Keep track of the + length of the formatted result. */ value = va_arg(*args, xds_int32_t); if (value < 0) @@ -66,21 +62,18 @@ if (negative) buf[i++] = '-'; - /* Check the buffer size. */ - - if (buffer_size < 7 + 8 + i) - return 7 + 8 + i; - - /* Write result into the buffer. */ + /* Now that we know the correct size of our data's representation, + write it into the buffer. */ + *used_buffer_size = 7 + 8 + i; p = buffer; - strcpy(p, ""); + memmove(p, "", 7); p += 7; for (j = i; j > 0; ) { *p++ = buf[--j]; } - strcpy(p, ""); + memmove(p, "", 8); - return 7 + 8 + i; + return XDS_OK; } Index: ossp-pkg/xds/xml-encode-int64.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-int64.c,v rcsdiff -q -kk '-r1.3.2.1' '-r1.3.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-int64.c,v' 2>/dev/null --- xml-encode-int64.c 2001/08/01 13:26:30 1.3.2.1 +++ xml-encode-int64.c 2001/08/01 15:08:02 1.3.2.2 @@ -28,7 +28,9 @@ #include #include "internal.h" -int xml_encode_int64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_int64(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_int64_t value; char buf[64]; @@ -36,14 +38,7 @@ char* p; int negative; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; + xds_init_encoding_engine(7 + 8 + 21); /* Format value into our buffer. */ @@ -66,21 +61,20 @@ if (negative) buf[i++] = '-'; - /* Check the buffer size. */ + /* Store the correct buffer size. */ - if (buffer_size < 7 + 8 + i) - return 7 + 8 + i; + *used_buffer_size = 7 + 8 + i; /* Write result into the buffer. */ p = buffer; - strcpy(p, ""); + memmove(p, "", 7); p += 7; for (j = i; j > 0; ) { *p++ = buf[--j]; } - strcpy(p, ""); + memmove(p, "", 8); - return 7 + 8 + i; + return XDS_OK; } Index: ossp-pkg/xds/xml-encode-uint32.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-uint32.c,v rcsdiff -q -kk '-r1.2.2.1' '-r1.2.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-uint32.c,v' 2>/dev/null --- xml-encode-uint32.c 2001/08/01 13:26:30 1.2.2.1 +++ xml-encode-uint32.c 2001/08/01 15:08:02 1.2.2.2 @@ -28,21 +28,16 @@ #include #include "internal.h" -int xml_encode_uint32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_uint32(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_uint32_t value; char buf[32]; size_t i, j; char* p; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; + xds_init_encoding_engine(8 + 9 + 10); /* Format value into our buffer. */ @@ -56,21 +51,20 @@ } while (value != 0); - /* Check the buffer size. */ + /* Store the correct buffer size. */ - if (buffer_size < 8 + 9 + i) - return 8 + 9 + i; + *used_buffer_size = 8 + 9 + i; /* Write result into the buffer. */ p = buffer; - strcpy(p, ""); + memmove(p, "", 8); p += 8; for (j = i; j > 0; ) { *p++ = buf[--j]; } - strcpy(p, ""); + memmove(p, "", 9); - return 8 + 9 + i; + return XDS_OK; } Index: ossp-pkg/xds/xml-encode-uint64.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-uint64.c,v rcsdiff -q -kk '-r1.3.2.1' '-r1.3.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-uint64.c,v' 2>/dev/null --- xml-encode-uint64.c 2001/08/01 13:26:30 1.3.2.1 +++ xml-encode-uint64.c 2001/08/01 15:08:02 1.3.2.2 @@ -28,21 +28,16 @@ #include #include "internal.h" -int xml_encode_uint64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) +int xml_encode_uint64(xds_t* xds, void* engine_context, + void* buffer, size_t buffer_size, size_t* used_buffer_size, + va_list* args) { xds_uint64_t value; char buf[64]; size_t i, j; char* p; - /* Consistency checks. */ - - assert(xds != NULL); - assert(buffer != NULL); - assert(buffer_size != 0); - assert(args != NULL); - if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL) - return XDS_ERR_INVALID_ARG; + xds_init_encoding_engine(8 + 9 + 20); /* Format value into our buffer. */ @@ -56,21 +51,20 @@ } while (value != 0); - /* Check the buffer size. */ + /* Store the correct buffer size. */ - if (buffer_size < 8 + 9 + i) - return 8 + 9 + i; + *used_buffer_size = 8 + 9 + i; /* Write result into the buffer. */ p = buffer; - strcpy(p, ""); + memmove(p, "", 8); p += 8; for (j = i; j > 0; ) { *p++ = buf[--j]; } - strcpy(p, ""); + memmove(p, "", 9); - return 8 + 9 + i; + return XDS_OK; }