]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
timer: query: code refactoring to unify open function
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sat, 14 Nov 2020 08:28:09 +0000 (17:28 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Sun, 15 Nov 2020 00:19:56 +0000 (09:19 +0900)
Some global functions execute the same sequence of operation to open
timer character device.

This commit unifies the sequence into a helper function as code
refactoring.

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

index 5612703790a57006223fefa0c59509fc89c93ebd..502382170b46571d10a988f210fc5023dd4f1997 100644 (file)
@@ -130,6 +130,27 @@ void alsatimer_get_devnode(char **devnode, GError **error)
     udev_unref(ctx);
 }
 
+static int open_fd(GError **error)
+{
+    char *devnode;
+    int fd;
+
+    alsatimer_get_devnode(&devnode, error);
+    if (*error != NULL)
+        return -1;
+
+    fd = open(devnode, O_RDONLY);
+    if (fd < 0) {
+        generate_file_error_fmt(error, errno, "open(%s)", devnode);
+       g_free(devnode);
+        return -1;
+    }
+
+    g_free(devnode);
+
+    return fd;
+}
+
 /**
  * alsatimer_get_device_id_list:
  * @entries: (element-type ALSATimer.DeviceId)(out): The array with
@@ -146,24 +167,15 @@ void alsatimer_get_device_id_list(GList **entries, GError **error)
     struct snd_timer_id id = {
         .dev_class = -1,
     };
-    char *devnode;
     int fd;
 
     g_return_if_fail(entries != NULL);
     g_return_if_fail(error == NULL || *error == NULL);
 
-    alsatimer_get_devnode(&devnode, error);
+    fd = open_fd(error);
     if (*error != NULL)
         return;
 
-    fd = open(devnode, O_RDONLY);
-    if (fd < 0) {
-        generate_file_error_fmt(error, errno, "open(%s)", devnode);
-       g_free(devnode);
-        return;
-    }
-    g_free(devnode);
-
     while (true) {
         ALSATimerDeviceId *entry;
 
@@ -196,7 +208,6 @@ void alsatimer_get_device_info(ALSATimerDeviceId *device_id,
                                ALSATimerDeviceInfo **device_info,
                                GError **error)
 {
-    char *devnode;
     struct snd_timer_ginfo *info;
     int fd;
 
@@ -204,18 +215,10 @@ void alsatimer_get_device_info(ALSATimerDeviceId *device_id,
     g_return_if_fail(device_info != NULL);
     g_return_if_fail(error == NULL || *error == NULL);
 
-    alsatimer_get_devnode(&devnode, error);
+    fd = open_fd(error);
     if (*error != NULL)
         return;
 
-    fd = open(devnode, O_RDONLY);
-    if (fd < 0) {
-        generate_file_error_fmt(error, errno, "open(%s)", devnode);
-        return;
-       g_free(devnode);
-    }
-    g_free(devnode);
-
     *device_info = g_object_new(ALSATIMER_TYPE_DEVICE_INFO, NULL);
     timer_device_info_refer_private(*device_info, &info);
 
@@ -243,7 +246,6 @@ void alsatimer_get_device_status(ALSATimerDeviceId *device_id,
                                  ALSATimerDeviceStatus *const *device_status,
                                  GError **error)
 {
-    char *devnode;
     struct snd_timer_gstatus *status;
     int fd;
 
@@ -251,18 +253,10 @@ void alsatimer_get_device_status(ALSATimerDeviceId *device_id,
     g_return_if_fail(ALSATIMER_IS_DEVICE_STATUS(*device_status));
     g_return_if_fail(error == NULL || *error == NULL);
 
-    alsatimer_get_devnode(&devnode, error);
+    fd = open_fd(error);
     if (*error != NULL)
         return;
 
-    fd = open(devnode, O_RDONLY);
-    if (fd < 0) {
-        generate_file_error_fmt(error, errno, "open(%s)", devnode);
-       g_free(devnode);
-        return;
-    }
-    g_free(devnode);
-
     timer_device_status_refer_private(*device_status, &status);
 
     status->tid = *device_id;
@@ -289,7 +283,6 @@ void alsatimer_set_device_params(ALSATimerDeviceId *device_id,
                                  const ALSATimerDeviceParams *device_params,
                                  GError **error)
 {
-    char *devnode;
     struct snd_timer_gparams *params;
     int fd;
 
@@ -297,18 +290,10 @@ void alsatimer_set_device_params(ALSATimerDeviceId *device_id,
     g_return_if_fail(device_params != NULL);
     g_return_if_fail(error == NULL || *error == NULL);
 
-    alsatimer_get_devnode(&devnode, error);
+    fd = open_fd(error);
     if (*error != NULL)
         return;
 
-    fd = open(devnode, O_RDONLY);
-    if (fd < 0) {
-        generate_file_error_fmt(error, errno, "open(%s)", devnode);
-       g_free(devnode);
-        return;
-    }
-    g_free(devnode);
-
     timer_device_params_refer_private((ALSATimerDeviceParams *)device_params,
                                       &params);
     params->tid = *device_id;