X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ftest%2Fcgitest1.c;fp=src%2Ftest%2Fcgitest1.c;h=7ce6909bcd2788ffdcbd602c8bb673fc9ebfd4d7;hb=ce67d0cdeaa37c3e856e23ae4010480887165630;hp=0000000000000000000000000000000000000000;hpb=e355d4e7962400470f467b88f5568de9c8324475;p=xmlrpc-c diff --git a/src/test/cgitest1.c b/src/test/cgitest1.c new file mode 100644 index 0000000..7ce6909 --- /dev/null +++ b/src/test/cgitest1.c @@ -0,0 +1,79 @@ +/*============================================================================ + Act like a CGI script -- read POST data from Standard Input, interpret + it as an XML-RPC call, and write an XML-RPC response to Standard Output. + + This is for use by a test program. +============================================================================*/ + +#include +#include +#include +#include + +#include "xmlrpc_config.h" + +#include "xmlrpc-c/base.h" +#include "xmlrpc-c/server.h" +#include "xmlrpc-c/server_cgi.h" + +#include "test.h" + + +int total_tests; +int total_failures; + + + +static xmlrpc_value * +sample_add(xmlrpc_env * const env, + xmlrpc_value * const param_array, + void * const user_data ATTR_UNUSED) { + + xmlrpc_int32 x, y, z; + + /* Parse our argument array. */ + xmlrpc_decompose_value(env, param_array, "(ii)", &x, &y); + if (env->fault_occurred) + return NULL; + + /* Add our two numbers. */ + z = x + y; + + /* Return our result. */ + return xmlrpc_build_value(env, "i", z); +} + + + +int +main(int argc ATTR_UNUSED, + char ** argv ATTR_UNUSED) { + + xmlrpc_env env; + xmlrpc_registry * registryP; + xmlrpc_value * argArrayP; + + xmlrpc_env_init(&env); + + registryP = xmlrpc_registry_new(&env); + TEST(registryP != NULL); + TEST_NO_FAULT(&env); + + xmlrpc_registry_add_method(&env, registryP, NULL, "sample.add", + sample_add, NULL); + TEST_NO_FAULT(&env); + + argArrayP = xmlrpc_build_value(&env, "(ii)", + (xmlrpc_int32) 25, (xmlrpc_int32) 17); + TEST_NO_FAULT(&env); + + /* The following reads from Standard Input and writes to Standard + Output + */ + xmlrpc_server_cgi_process_call(registryP); + + xmlrpc_DECREF(argArrayP); + xmlrpc_registry_free(registryP); + + return 0; +}