Index: ossp-pkg/xds/regression-tests/Makefile.in RCS File: /v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/Makefile.in,v rcsdiff -q -kk '-r1.6' '-r1.7' -u '/v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/Makefile.in,v' 2>/dev/null --- Makefile.in 2001/07/23 13:05:24 1.6 +++ Makefile.in 2001/07/23 15:57:48 1.7 @@ -12,7 +12,7 @@ xds-getbuffer.exe xds-decode.exe xds-setbuffer.exe xds-engine-restart.exe \ xdr-uint32.exe xdr-int32.exe xdr-uint64.exe xdr-int64.exe \ xdr-octetstream.exe xdr-octetstream-empty.exe xdr-string.exe \ - xdr-string-empty.exe xds-mystruct.exe + xdr-string-empty.exe xds-mystruct.exe xml-int32.exe .SUFFIXES: .SUFFIXES: .c .exe Index: ossp-pkg/xds/regression-tests/xml-int32.c RCS File: /v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/xml-int32.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/xml-int32.c,v' | diff -u /dev/null - -L'ossp-pkg/xds/regression-tests/xml-int32.c' 2>/dev/null --- ossp-pkg/xds/regression-tests/xml-int32.c +++ - 2024-05-14 09:48:17.675925440 +0200 @@ -0,0 +1,116 @@ +/* + XDS - OSSP Extensible Data Serialization Library + Copyright (c) 2001 The OSSP Project (http://www.ossp.org/) + Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/) + + This file is part of OSSP XDS, an extensible data serialization + library which can be found at http://www.ossp.com/pkg/xds/. + + Permission to use, copy, modify, and distribute this software for + any purpose with or without fee is hereby granted, provided that + the above copyright notice and this permission notice appear in all + copies. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include "../internal.h" + +int main() + { + xds_t* xds; + char* buffer; + size_t buffer_size; + + xds_int32_t values[] = + { + 0x00000000, + 0x12345678, + -0x12345678, + 0xabcdef01, + -0xabcdef01, + 0x7fffffff + }; + + size_t i; + + /* Encode the values array, then decode it back and compare the + numbers. */ + + xds = xds_init(XDS_ENCODE); + if (xds == NULL) + { + printf("Failed to initialize XDS context.\n"); + return 1; + } + if (xds_register(xds, "int", &xml_encode_int32, NULL) != XDS_OK) + { + printf("Failed to register my encoding engines.\n"); + return 1; + } + for (i = 0; i < sizeof(values)/sizeof(xds_int32_t); ++i) + { + if (xds_encode(xds, "int", values[i]) != XDS_OK) + { + printf("xds_encode(values[%d]) failed!\n", i); + return 1; + } + } + if (xds_getbuffer(xds, XDS_GIFT, (void**)&buffer, &buffer_size) != XDS_OK) + { + printf("getbuffer() failed.\n"); + return 1; + } + xds_destroy(xds); + + xds = xds_init(XDS_DECODE); + if (xds == NULL) + { + printf("Failed to initialize XDS context.\n"); + return 1; + } + if (xds_register(xds, "int", &xml_decode_int32, NULL) != XDS_OK) + { + printf("Failed to register my decoding engines.\n"); + return 1; + } + if (xds_setbuffer(xds, XDS_GIFT, buffer, buffer_size) != XDS_OK) + { + printf("setbuffer() failed.\n"); + return 1; + } + for (i = 0; i < sizeof(values)/sizeof(xds_int32_t); ++i) + { + xds_int32_t val; + if (xds_decode(xds, "int", &val) != XDS_OK) + { + printf("xds_decode(values[%d]) failed!\n", i); + return 1; + } + if (val != values[i]) + { + printf("Decoded value (%d) does not match the original value (%d)!\n", val, values[i]); + return 1; + } + } + xds_destroy(xds); + + /* Everything went fine. */ + + return 0; + } Index: ossp-pkg/xds/xml-decode-int32.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-int32.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-int32.c,v' | diff -u /dev/null - -L'ossp-pkg/xds/xml-decode-int32.c' 2>/dev/null --- ossp-pkg/xds/xml-decode-int32.c +++ - 2024-05-14 09:48:17.678592274 +0200 @@ -0,0 +1,55 @@ +/* + XDS - OSSP Extensible Data Serialization Library + Copyright (c) 2001 The OSSP Project (http://www.ossp.org/) + Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/) + + This file is part of OSSP XDS, an extensible data serialization + library which can be found at http://www.ossp.com/pkg/xds/. + + Permission to use, copy, modify, and distribute this software for + any purpose with or without fee is hereby granted, provided that + the above copyright notice and this permission notice appear in all + copies. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +*/ + +#include +#include +#include "internal.h" + +int xml_decode_int32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) + { + int rc; + xds_int32_t* value; + int len; + + /* 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; + + /* Format value into buffer. */ + + value = va_arg(*args, xds_int32_t*); + rc = sscanf(buffer, "%d%n", value, &len); + if (rc <= 0) + return XDS_ERR_UNDERFLOW; + + return len; + } 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.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-int32.c,v' 2>/dev/null --- xml-encode-int32.c 2001/07/23 15:28:53 1.1 +++ xml-encode-int32.c 2001/07/23 15:57:47 1.2 @@ -25,10 +25,31 @@ SUCH DAMAGE. */ +#include #include #include "internal.h" int xml_encode_int32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args) { - return -1; + int rc; + xds_int32_t value; + + /* 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; + + /* Format value into buffer. */ + + value = va_arg(*args, xds_int32_t); + rc = snprintf(buffer, buffer_size, "%d", value); + if (rc < 0) + return buffer_size*2; + assert(rc >= 15); + + return rc; }