config fix
[oweals/gnunet.git] / src / sensor / gnunet-sensor.c
index ead7c5e0dcfdca4d01d4a53a11873e8f7f4b72f0..fa7930832bfe9e2181c1909a31aaa072950990fc 100644 (file)
 
 static int ret;
 
-/*
+/**
  * option '-a'
  */
 static int get_all;
 
+/**
+ * option '-g'
+ */
+static char *get_sensor;
+
 /*
  * Handle to sensor service
  */
-struct GNUNET_SENSOR_Handle *sensor_handle;
+static struct GNUNET_SENSOR_Handle *sensor_handle;
 
 /**
  * Run on shutdown
@@ -74,10 +79,7 @@ void print_sensor_info(void *cls,
     return;
   }
   if(NULL == sensor) /* no more sensors from service */
-  {
-    GNUNET_SCHEDULER_shutdown();
     return;
-  }
   printf("Name: %s\nVersion: %d.%d\n",
       sensor->name,
       sensor->version_major,
@@ -106,10 +108,10 @@ run (void *cls,
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                   &shutdown_task,
                                   NULL);
+  sensor_handle = GNUNET_SENSOR_connect(cfg);
+  GNUNET_assert(NULL != sensor_handle);
   if(GNUNET_YES == get_all)
   {
-    sensor_handle = GNUNET_SENSOR_connect(cfg);
-    GNUNET_assert(NULL != sensor_handle);
     GNUNET_SENSOR_iterate_sensors(sensor_handle,
         GNUNET_TIME_UNIT_FOREVER_REL,
         NULL,
@@ -117,7 +119,17 @@ run (void *cls,
         &print_sensor_info,
         NULL);
   }
+  else if(NULL != get_sensor)
+  {
+    GNUNET_SENSOR_iterate_sensors(sensor_handle,
+        GNUNET_TIME_UNIT_FOREVER_REL,
+        get_sensor,
+        strlen(get_sensor),
+        &print_sensor_info,
+        NULL);
+  }
 
+  GNUNET_SCHEDULER_shutdown();
   ret = 0;
 }
 
@@ -133,8 +145,11 @@ main (int argc, char *const *argv)
 {
   static const struct GNUNET_GETOPT_CommandLineOption options[] = {
       {'a', "all", NULL,
-          gettext_noop("Retrieve names of all defined sensors"),
+          gettext_noop("Retrieve information about all defined sensors"),
       0, &GNUNET_GETOPT_set_one, &get_all},
+      {'g', "get-sensor", NULL,
+          gettext_noop("Retrieve information about a single sensor"),
+      1, &GNUNET_GETOPT_set_string, &get_sensor},
     GNUNET_GETOPT_OPTION_END
   };
   return (GNUNET_OK ==