|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h> |
|
|
#include <stdio.h> |
|
|
|
|
|
#include <xmlrpc-c/base.h> |
|
|
#include <xmlrpc-c/server.h> |
|
|
#include <xmlrpc-c/server_cgi.h> |
|
|
|
|
|
#include "config.h" |
|
|
|
|
|
static xmlrpc_value * |
|
|
sample_add(xmlrpc_env * const envP, |
|
|
xmlrpc_value * const paramArrayP, |
|
|
void * const user_data) { |
|
|
|
|
|
xmlrpc_int32 x, y, z; |
|
|
|
|
|
|
|
|
xmlrpc_decompose_value(envP, paramArrayP, "(ii)", &x, &y); |
|
|
if (envP->fault_occurred) |
|
|
return NULL; |
|
|
|
|
|
|
|
|
z = x + y; |
|
|
|
|
|
|
|
|
return xmlrpc_build_value(envP, "i", z); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
main(int const argc, |
|
|
const char ** const argv) { |
|
|
|
|
|
xmlrpc_registry * registryP; |
|
|
xmlrpc_env env; |
|
|
|
|
|
if (argc-1 > 0 && argv==argv) { |
|
|
fprintf(stderr, "There are no arguments to a CGI script\n"); |
|
|
exit(1); |
|
|
} |
|
|
|
|
|
xmlrpc_env_init(&env); |
|
|
|
|
|
registryP = xmlrpc_registry_new(&env); |
|
|
|
|
|
xmlrpc_registry_add_method( |
|
|
&env, registryP, NULL, "sample.add", &sample_add, NULL); |
|
|
|
|
|
xmlrpc_server_cgi_process_call(registryP); |
|
|
|
|
|
xmlrpc_registry_free(registryP); |
|
|
|
|
|
return 0; |
|
|
} |
|
|
|