remove some duplication
[project/ubus.git] / ubus-example.c
index d2e2288..bac7bdd 100644 (file)
@@ -1,3 +1,5 @@
+#include <unistd.h>
+
 #include "libubus.h"
 
 static struct ubus_context *ctx;
@@ -68,36 +70,43 @@ static struct ubus_object test_object2 = {
 
 int main(int argc, char **argv)
 {
-       int ret;
+       const char *progname, *ubus_socket = NULL;
+       int ret = 0;
+       int ch;
+
+       progname = argv[0];
+
+       while ((ch = getopt(argc, argv, "s:")) != -1) {
+               switch (ch) {
+               case 's':
+                       ubus_socket = optarg;
+                       break;
+               default:
+                       break;
+               }
+       }
 
-       ctx = ubus_connect(NULL);
+       argc -= optind;
+       argv += optind;
+
+       ctx = ubus_connect(ubus_socket);
        if (!ctx) {
                fprintf(stderr, "Failed to connect to ubus\n");
                return -1;
        }
 
-       fprintf(stderr, "Connected as ID 0x%08x\n", ctx->local_id);
-
-       fprintf(stderr, "Publishing object\n");
-       ret = ubus_publish(ctx, &test_object);
+       ret = ubus_add_object(ctx, &test_object);
        if (ret)
-               fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret));
-       else {
-               fprintf(stderr, "Object ID: %08x\n", test_object.id);
-               fprintf(stderr, "Object Type ID: %08x\n", test_object.type->id);
-       }
+               fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret));
 
-       fprintf(stderr, "Publishing object\n");
-       ret = ubus_publish(ctx, &test_object2);
+       ret = ubus_add_object(ctx, &test_object2);
        if (ret)
-               fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret));
-       else {
-               fprintf(stderr, "Object ID: %08x\n", test_object2.id);
-               fprintf(stderr, "Object Type ID: %08x\n", test_object2.type->id);
-       }
+               fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret));
+
        uloop_init();
        ubus_add_uloop(ctx);
        uloop_run();
+       uloop_done();
 
        ubus_free(ctx);
        return 0;