Index: ossp-pkg/xds/regression-tests/xds-register.c RCS File: /v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/xds-register.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/xds-register.c,v' | diff -u /dev/null - -L'ossp-pkg/xds/regression-tests/xds-register.c' 2>/dev/null --- ossp-pkg/xds/regression-tests/xds-register.c +++ - 2025-04-10 01:28:12.179093487 +0200 @@ -0,0 +1,110 @@ +/* + 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" + +static int dummy_engine(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list args) + { + if (xds == NULL) + { + printf("XDS context isn't passed through to registered engine.\n"); + exit(1); + } + if (engine_context != (void*)42) + { + printf("Engine context isn't passed through to registered engine.\n"); + exit(1); + } + if (buffer == NULL) + { + printf("Buffer passed to engine is NULL.\n"); + exit(1); + } + if (buffer_size == 0) + { + printf("Buffer size passed to engine is NULL.\n"); + exit(1); + } + return 0; + } + +int main() + { + xds_t* xds; + + /* Create contexts for encoding and decoding. */ + + xds = xds_init(XDS_ENCODE); + if (xds == NULL) + { + printf("Failed to initialize XDS context.\n"); + return 1; + } + + /* Register the dummy callback under multiple names. */ + + if (xds_register(xds, "foo", &dummy_engine, (void*)42) != XDS_OK) + { + printf("Failed to register engine for 'foo'.\n"); + return 1; + } + if (xds_register(xds, "bar", &dummy_engine, (void*)42) != XDS_OK) + { + printf("Failed to register engine for 'bar'.\n"); + return 1; + } + if (xds_register(xds, "zarah", &dummy_engine, (void*)42) != XDS_OK) + { + printf("Failed to register engine for 'zarah'.\n"); + return 1; + } + if (xds_register(xds, "caesar", &dummy_engine, (void*)42) != XDS_OK) + { + printf("Failed to register engine for 'caesar'.\n"); + return 1; + } + if (xds_register(xds, "claus", &dummy_engine, (void*)42) != XDS_OK) + { + printf("Failed to register engine for 'claus'.\n"); + return 1; + } + if (xds_register(xds, "heinz", &dummy_engine, (void*)42) != XDS_OK) + { + printf("Failed to register engine for 'heinz'.\n"); + return 1; + } + + /* Clean up. */ + + xds_destroy(xds); + + /* Everything went fine. */ + + return 0; + }