]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
ctl: query: use GFileError to report error
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Fri, 13 Nov 2020 07:26:26 +0000 (16:26 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Fri, 13 Nov 2020 23:30:49 +0000 (08:30 +0900)
This commit uses GFileError to report errors in library global functions.

It's better to add new GLib enumerations and GQuark for the reporting,
however it's cumbersome to add them just for the global functions.
Thus this commit just uses the existent error in GLib.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/ctl/query.c

index cc8935bed5c9134794f11b71180ad2bd08769cef..998d77a0bbc0e5750deadf69c36e295d196923c3 100644 (file)
@@ -9,9 +9,6 @@
 
 #include <libudev.h>
 
-#define CARD_SYSNAME_TEMPLATE       "card%u"
-#define CONTROL_SYSNAME_TEMPLATE    "controlC%u"
-
 /**
  * SECTION: query
  * @Title: Global functions in ALSACtl
 // For error handling.
 G_DEFINE_QUARK("alsactl-error", alsactl_error)
 
+#define CARD_SYSNAME_TEMPLATE       "card%u"
+#define CONTROL_SYSNAME_TEMPLATE    "controlC%u"
+
+#define generate_file_error(exception, errno, msg) \
+        g_set_error_literal(exception, G_FILE_ERROR, g_file_error_from_errno(errno), msg)
+
 static void prepare_udev_enum(struct udev_enumerate **enumerator,
                               GError **error)
 {
@@ -30,20 +33,20 @@ static void prepare_udev_enum(struct udev_enumerate **enumerator,
 
     ctx = udev_new();
     if (ctx == NULL) {
-        generate_error(error, errno);
+        generate_file_error(error, errno, "udev_new()");
         return;
     }
 
     *enumerator = udev_enumerate_new(ctx);
     if (*enumerator == NULL) {
-        generate_error(error, errno);
+        generate_file_error(error, errno, "udev_enumerate_new()");
         udev_unref(ctx);
         return;
     }
 
     err = udev_enumerate_add_match_subsystem(*enumerator, "sound");
     if (err < 0) {
-        generate_error(error, -err);
+        generate_file_error(error, -err, "udev_enumerate_add_match_subsystem()");
         udev_enumerate_unref(*enumerator);
         udev_unref(ctx);
         return;
@@ -51,7 +54,7 @@ static void prepare_udev_enum(struct udev_enumerate **enumerator,
 
     err = udev_enumerate_scan_devices(*enumerator);
     if (err < 0) {
-        generate_error(error, -err);
+        generate_file_error(error, -err, "udev_enumerate_scan_devices()");
         udev_enumerate_unref(*enumerator);
         udev_unref(ctx);
     }
@@ -206,13 +209,13 @@ static bool check_existence(char *sysname, GError **error)
 
     ctx = udev_new();
     if (ctx == NULL) {
-        generate_error(error, errno);
+        generate_file_error(error, errno, "udev_new()");
         return false;
     }
 
     dev = udev_device_new_from_subsystem_sysname(ctx, "sound", sysname);
     if (dev == NULL) {
-        generate_error(error, errno);
+        generate_file_error(error, errno, "udev_device_new_from_subsystem_sysname()");
         result = false;
     } else {
         result = true;
@@ -310,14 +313,14 @@ void alsactl_get_control_devnode(guint card_id, char **devnode, GError **error)
 
     ctx = udev_new();
     if (ctx == NULL) {
-        generate_error(error, errno);
+        generate_file_error(error, errno, "udev_new()");
         g_free(sysname);
         return;
     }
 
     dev = udev_device_new_from_subsystem_sysname(ctx, "sound", sysname);
     if (dev == NULL) {
-        generate_error(error, ENODEV);
+        generate_file_error(error, ENODEV, "udev_device_new_from_subsystem_sysname()");
         g_free(sysname);
         udev_unref(ctx);
         return;
@@ -328,7 +331,7 @@ void alsactl_get_control_devnode(guint card_id, char **devnode, GError **error)
     if (node != NULL)
         *devnode = g_strdup(node);
     else
-        generate_error(error, ENODEV);
+        generate_file_error(error, ENODEV, "udev_device_get_devnode()");
 
     udev_device_unref(dev);
     udev_unref(ctx);