Add plugin (user) version information
[babeltrace.git] / lib / plugin / plugin.c
index e79db448e2296e0ebce278e4c15ffa67294deb55..707fe4e74595646702aa7f6f4ed7c6f703973d2c 100644 (file)
@@ -335,6 +335,9 @@ enum bt_plugin_status bt_plugin_init(
                case BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_DESCRIPTION:
                        plugin->description = cur_attr->value.description;
                        break;
+               case BT_PLUGIN_DESCRIPTOR_ATTRIBUTE_TYPE_VERSION:
+                       plugin->version = &cur_attr->value.version;
+                       break;
                default:
                        printf_verbose("WARNING: Unknown attribute \"%s\" (type %d) for plugin %s\n",
                                cur_attr->type_name, cur_attr->type,
@@ -973,6 +976,37 @@ const char *bt_plugin_get_description(struct bt_plugin *plugin)
        return plugin ? plugin->description : NULL;
 }
 
+enum bt_plugin_status bt_plugin_get_version(struct bt_plugin *plugin,
+               unsigned int *major, unsigned int *minor, unsigned int *patch,
+               const char **extra)
+{
+       enum bt_plugin_status status = BT_PLUGIN_STATUS_OK;
+
+       if (!plugin || !plugin->version) {
+               status = BT_PLUGIN_STATUS_ERROR;
+               goto end;
+       }
+
+       if (major) {
+               *major = (unsigned int) plugin->version->major;
+       }
+
+       if (minor) {
+               *minor = (unsigned int) plugin->version->minor;
+       }
+
+       if (patch) {
+               *patch = (unsigned int) plugin->version->patch;
+       }
+
+       if (extra) {
+               *extra = plugin->version->extra;
+       }
+
+end:
+       return status;
+}
+
 int bt_plugin_get_component_class_count(struct bt_plugin *plugin)
 {
        return plugin ? plugin->comp_classes->len : -1;
This page took 0.024481 seconds and 4 git commands to generate.