"alsaseq_specific_queue_id_get_type";
"alsaseq_port_subscribe_flag_get_type";
"alsaseq_query_subscribe_type_get_type";
+
+ "alsaseq_get_seq_sysname";
local:
*;
};
#include "query.h"
#include "privates.h"
+#include <errno.h>
+
+#include <libudev.h>
+
// For error handling.
G_DEFINE_QUARK("alsaseq-error", alsaseq_error)
+
+#define SEQ_SYSNAME "seq"
+
+/**
+ * alsaseq_get_seq_sysname:
+ * @sysname: (out): The sysname of ALSA Sequencer.
+ * @error: A #GError.
+ *
+ * Allocate sysname string for ALSA sequencer and return it when exists.
+ */
+void alsaseq_get_seq_sysname(gchar **sysname, GError **error)
+{
+ struct udev *ctx;
+ struct udev_device *dev;
+ const char *name;
+
+ ctx = udev_new();
+ if (ctx == NULL) {
+ generate_error(error, errno);
+ return;
+ }
+
+ dev = udev_device_new_from_subsystem_sysname(ctx, "sound", SEQ_SYSNAME);
+ if (dev == NULL) {
+ generate_error(error, ENODEV);
+ udev_unref(ctx);
+ return;
+ }
+
+ name = udev_device_get_sysname(dev);
+ if (name == NULL) {
+ generate_error(error, ENOENT);
+ udev_device_unref(dev);
+ udev_unref(ctx);
+ return;
+ }
+
+ *sysname = strdup(name);
+ if (*sysname == NULL)
+ generate_error(error, ENOMEM);
+
+ udev_device_unref(dev);
+ udev_unref(ctx);
+}