MovableTypeに記事を投稿するプログラムを書いてみた。一応動作してくれる。
#include <stdlib.h>
#include <stdio.h>
#include <xmlrpc-c/base.h>
#include <xmlrpc-c/client.h>
#define NAME "BLOGGER.NEWPOST CLINET"
#define VERSION "1.0"
static void exit_if_fault_occurred (xmlrpc_env *env){
if (env->fault_occurred) {
fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
env->fault_string, env->fault_code);
exit(1);
}
}
int main(int const argc, const char ** const argv){
xmlrpc_env env;
xmlrpc_value * resultP;
const char* postid;
if (argc-1 > 0) {
fprintf(stderr, "No arguments");
exit(0);
}
//
xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION);
xmlrpc_env_init(&env);
//
resultP = xmlrpc_client_call(
&env,
"http://xxx.xxx.com/xxx/mt-xmlrpc.cgi",
"blogger.newPost",
"(sssssb)",
"dummy", // appkey
"100", // blogid
"xxxxxxxx", // username
"xxxxxxxx", // password
"test post by xmlrpc clinet", // content
1
);
exit_if_fault_occurred(&env);
xmlrpc_read_string(&env, resultP, &postid);
exit_if_fault_occurred(&env);
//
printf("%s\n", postid);
free((char*)postid);
//
xmlrpc_DECREF(resultP);
xmlrpc_env_clean(&env);
xmlrpc_client_cleanup();
}これを以下のmakefileでmakeするとちゃんと動く。64bit Linuxを使っているので/usr/lib64となっている。libxmlrpc-c関連は全部つけたが不要なものも混ざっているかもしれない。
CFLAG=-I/usr/include/xmlrpc-c/xmlrpc-c/
-I/usr/include/xmlrpc-c/ -L/usr/lib64/
LIB=-lxmlrpc -lxmlrpc_client -lxmlrpc_server_abyss
-lxmlrpc_util -lxmlrpc_xmltok -lxmlrpc_abyss
-lxmlrpc_server -lxmlrpc_server_cgi -lxmlrpc_xmlparse
-lcurl -lpthread -lxml2
all: test
test: test.c
gcc $(CFLAG) -o test test.c $(LIB)

