From: Takashi Sakamoto Date: Sat, 14 Nov 2020 08:28:09 +0000 (+0900) Subject: timer: query: code refactoring to unify open function X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=b3b28f91bcf1d73d99a9deb8377b84e253104270;p=alsa-gobject.git timer: query: code refactoring to unify open function 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 --- diff --git a/src/timer/query.c b/src/timer/query.c index 5612703..5023821 100644 --- a/src/timer/query.c +++ b/src/timer/query.c @@ -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, ¶ms); params->tid = *device_id;