g_return_if_fail(ALSACTL_IS_CARD(self));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(proto_ver_triplet != NULL);
g_return_if_fail(error == NULL || *error == NULL);
if (priv->fd < 0) {
g_return_if_fail(ALSACTL_IS_CARD(self));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(card_info != NULL);
g_return_if_fail(error == NULL || *error == NULL);
*card_info = g_object_new(ALSACTL_TYPE_CARD_INFO, NULL);
g_return_if_fail(ALSACTL_IS_CARD(self));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(entries != NULL);
g_return_if_fail(error == NULL || *error == NULL);
allocate_elem_ids(priv->fd, &list, error);
g_return_if_fail(ALSACTL_IS_CARD(self));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
g_return_if_fail(error == NULL || *error == NULL);
if (lock)
struct snd_ctl_elem_info *info;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ g_return_if_fail(elem_info != NULL);
g_return_if_fail(error == NULL || *error == NULL);
*elem_info = g_object_new(ALSACTL_TYPE_ELEM_INFO, NULL);
break;
}
default:
- generate_error(error, ENXIO);
+ g_return_if_reached();
return;
}
}
size_t container_size;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ // At least two quadlets should be included for type and length.
+ g_return_if_fail(container != NULL);
+ g_return_if_fail(container_count >= 2);
g_return_if_fail(error == NULL || *error == NULL);
- // At least two quadlets should be included for type and length.
- if (container == NULL || container_count < 2) {
- generate_error(error, EINVAL);
- return;
- }
container_size = container_count * sizeof(*container);
packet = g_malloc0(sizeof(*packet) + container_size);
size_t container_size;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ // At least two quadlets should be included for type and length.
+ g_return_if_fail(container != NULL);
+ g_return_if_fail(container_count != NULL && *container_count >= 2);
g_return_if_fail(error == NULL || *error == NULL);
- // At least two quadlets should be included for type and length.
- if (*container == NULL || *container_count < 2) {
- generate_error(error, EINVAL);
- return;
- }
container_size = *container_count * sizeof(**container);
packet = g_malloc0(sizeof(*packet) + container_size);
size_t container_size;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ // At least two quadlets should be included for type and length.
+ g_return_if_fail(container != NULL);
+ g_return_if_fail(container_count != NULL && *container_count >= 2);
g_return_if_fail(error == NULL || *error == NULL);
- // At least two quadlets should be included for type and length.
- if (*container == NULL || *container_count < 2) {
- generate_error(error, EINVAL);
- return;
- }
container_size = *container_count * sizeof(**container);
packet = g_malloc0(sizeof(*packet) + container_size);
g_free(packet);
}
-static int prepare_enum_names(struct snd_ctl_elem_info *info, const gchar **labels)
+static void prepare_enum_names(struct snd_ctl_elem_info *info, const gchar **labels)
{
unsigned int count;
unsigned int length;
for (count = 0; labels[count] != NULL; ++count) {
const gchar *label = labels[count];
- if (strlen(label) >= 64)
- return -EINVAL;
+ g_return_if_fail(strlen(label) < 64);
length += strlen(label) + 1;
}
- if (length > 64 * 1024)
- return -EINVAL;
+ g_return_if_fail(length <= 64 * 1024);
pos = g_malloc0(length);
pos += strlen(label) + 1;
}
info->value.enumerated.items = count;
-
- return 0;
}
static void add_or_replace_elems(int fd, const ALSACtlElemId *elem_id,
case SNDRV_CTL_ELEM_TYPE_ENUMERATED:
{
const gchar **labels;
- int err;
alsactl_elem_info_get_enum_data(elem_info, &labels, error);
if (*error != NULL)
return;
- err = prepare_enum_names(info, labels);
- if (err < 0) {
- generate_error(error, -err);
- return;
- }
+ prepare_enum_names(info, labels);
break;
}
ALSACtlCardPrivate *priv;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
- g_return_if_fail(ALSACTL_IS_ELEM_INFO(elem_info));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ g_return_if_fail(elem_count > 0);
+ g_return_if_fail(ALSACTL_IS_ELEM_INFO(elem_info));
g_return_if_fail(error == NULL || *error == NULL);
add_or_replace_elems(priv->fd, elem_id, elem_count, elem_info, FALSE,
ALSACtlCardPrivate *priv;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
- g_return_if_fail(ALSACTL_IS_ELEM_INFO(elem_info));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ g_return_if_fail(elem_count > 0);
+ g_return_if_fail(ALSACTL_IS_ELEM_INFO(elem_info));
g_return_if_fail(error == NULL || *error == NULL);
add_or_replace_elems(priv->fd, elem_id, elem_count, elem_info, TRUE,
ALSACtlCardPrivate *priv;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
g_return_if_fail(error == NULL || *error == NULL);
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_REMOVE, elem_id) < 0)
struct snd_ctl_elem_value *value;
g_return_if_fail(ALSACTL_IS_CARD(self));
+ priv = alsactl_card_get_instance_private(self);
+
g_return_if_fail(elem_id != NULL);
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(elem_value));
-
g_return_if_fail(error == NULL || *error == NULL);
ctl_elem_value_refer_private((ALSACtlElemValue *)elem_value, &value);
value->id = *elem_id;
- priv = alsactl_card_get_instance_private(self);
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, value) < 0)
generate_error(error, errno);
}
struct snd_ctl_elem_value *value;
g_return_if_fail(ALSACTL_IS_CARD(self));
- g_return_if_fail(elem_id != NULL);
- g_return_if_fail(ALSACTL_IS_ELEM_VALUE(*elem_value));
+ priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(elem_id != NULL);
+ g_return_if_fail(elem_value != NULL && ALSACTL_IS_ELEM_VALUE(*elem_value));
g_return_if_fail(error == NULL || *error == NULL);
ctl_elem_value_refer_private(*elem_value, &value);
value->id = *elem_id;
- priv = alsactl_card_get_instance_private(self);
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_READ, value) < 0)
generate_error(error, errno);
}
g_return_if_fail(ALSACTL_IS_CARD(self));
priv = alsactl_card_get_instance_private(self);
+ g_return_if_fail(gsrc != NULL);
g_return_if_fail(error == NULL || *error == NULL);
if (priv->fd < 0) {
{
struct snd_ctl_elem_id *id;
+ g_return_val_if_fail(name != NULL && strlen(name) > 0, NULL);
+
id = g_malloc0(sizeof(*id));
id->iface = iface;
case ALSACTL_ELEM_TYPE_INTEGER64:
break;
default:
- generate_error(error, EINVAL);
- return NULL;
+ g_return_val_if_reached(NULL);
}
return g_object_new(ALSACTL_TYPE_ELEM_INFO, "type", elem_type, NULL);
g_return_if_fail(ALSACTL_IS_ELEM_INFO(self));
priv = alsactl_elem_info_get_instance_private(self);
+ g_return_if_fail(data != NULL);
g_return_if_fail(error == NULL || *error == NULL);
- if (priv->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER) {
- generate_error(error, ENXIO);
- return;
- }
+ g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER);
priv->int_data.min = (gint32)priv->info.value.integer.min;
priv->int_data.max = (gint32)priv->info.value.integer.max;
g_return_if_fail(ALSACTL_IS_ELEM_INFO(self));
priv = alsactl_elem_info_get_instance_private(self);
+ g_return_if_fail(data != NULL);
g_return_if_fail(error == NULL || *error == NULL);
- if (priv->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER) {
- generate_error(error, ENXIO);
- return;
- }
+ g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER);
priv->info.value.integer.min = (long)data[0];
priv->info.value.integer.max = (long)data[1];
g_return_if_fail(ALSACTL_IS_ELEM_INFO(self));
priv = alsactl_elem_info_get_instance_private(self);
+ g_return_if_fail(data != NULL);
g_return_if_fail(error == NULL || *error == NULL);
- if (priv->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER64) {
- generate_error(error, ENXIO);
- return;
- }
+ g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER64);
priv->int_data.min = (gint64)priv->info.value.integer.min;
priv->int_data.max = (gint64)priv->info.value.integer.max;
g_return_if_fail(ALSACTL_IS_ELEM_INFO(self));
priv = alsactl_elem_info_get_instance_private(self);
+ g_return_if_fail(data != NULL);
g_return_if_fail(error == NULL || *error == NULL);
- if (priv->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER64) {
- generate_error(error, ENXIO);
- return;
- }
+ g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER64);
priv->info.value.integer.min = (long long)data[0];
priv->info.value.integer.max = (long long)data[1];
g_return_if_fail(ALSACTL_IS_ELEM_INFO(self));
priv = alsactl_elem_info_get_instance_private(self);
+ g_return_if_fail(data != NULL);
g_return_if_fail(error == NULL || *error == NULL);
- if (priv->info.type != SNDRV_CTL_ELEM_TYPE_ENUMERATED) {
- generate_error(error, ENXIO);
- return;
- }
+ g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED);
*data = (const gchar **)priv->enum_data;
}
g_return_if_fail(ALSACTL_IS_ELEM_INFO(self));
priv = alsactl_elem_info_get_instance_private(self);
+ g_return_if_fail(data != NULL);
g_return_if_fail(error == NULL || *error == NULL);
- if (priv->info.type != SNDRV_CTL_ELEM_TYPE_ENUMERATED) {
- generate_error(error, ENXIO);
- return;
- }
+ g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED);
g_strfreev(priv->enum_data);
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+
+ value = &priv->value;
value_count = MIN(value_count, G_N_ELEMENTS(value->value.integer.value));
for (i = 0; i < value_count; ++i)
value->value.integer.value[i] = (long)values[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+ g_return_if_fail(value_count != NULL);
+
+ value = &priv->value;
*value_count = MIN(*value_count, G_N_ELEMENTS(value->value.integer.value));
for (i = 0; i < *value_count; ++i)
(*values)[i] = (gboolean)value->value.integer.value[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+
+ value = &priv->value;
value_count = MIN(value_count, G_N_ELEMENTS(value->value.integer.value));
for (i = 0; i < value_count; ++i)
value->value.integer.value[i] = (long)values[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+ g_return_if_fail(value_count != NULL);
+
+ value = &priv->value;
*value_count = MIN(*value_count, G_N_ELEMENTS(value->value.integer.value));
for (i = 0; i < *value_count; ++i)
(*values)[i] = (gint32)value->value.integer.value[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+
+ value = &priv->value;
value_count = MIN(value_count, G_N_ELEMENTS(value->value.enumerated.item));
for (i = 0; i < value_count; ++i)
value->value.enumerated.item[i] = (unsigned int)values[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+ g_return_if_fail(value_count != NULL);
+
+ value = &priv->value;
*value_count = MIN(*value_count, G_N_ELEMENTS(value->value.enumerated.item));
for (i = 0; i < *value_count; ++i)
(*values)[i] = (guint32)value->value.enumerated.item[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+
+ value = &priv->value;
value_count = MIN(value_count, G_N_ELEMENTS(value->value.bytes.data));
for (i = 0; i < value_count; ++i)
value->value.bytes.data[i] = (long)values[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+ g_return_if_fail(value_count != NULL);
+
+ value = &priv->value;
*value_count = MIN(*value_count, G_N_ELEMENTS(value->value.bytes.data));
for (i = 0; i < *value_count; ++i)
(*values)[i] = (guint8)value->value.bytes.data[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(status != NULL);
+
+ value = &priv->value;
length = MIN(length, G_N_ELEMENTS(value->value.iec958.status));
for (i = 0; i < length; ++i)
value->value.iec958.status[i] = status[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(status != NULL);
+ g_return_if_fail(length != NULL);
+
+ value = &priv->value;
*length = MIN(*length, G_N_ELEMENTS(value->value.iec958.status));
for (i = 0; i < *length; ++i)
(*status)[i] = value->value.iec958.status[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(data != NULL);
+
+ value = &priv->value;
length = MIN(length, G_N_ELEMENTS(value->value.iec958.subcode));
for (i = 0; i < length; ++i)
value->value.iec958.subcode[i] = data[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(data != NULL);
+ g_return_if_fail(length != NULL);
+
+ value = &priv->value;
*length = MIN(*length, G_N_ELEMENTS(value->value.iec958.subcode));
for (i = 0; i < *length; ++i)
(*data)[i] = value->value.iec958.subcode[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+
+ value = &priv->value;
value_count = MIN(value_count, G_N_ELEMENTS(value->value.integer64.value));
for (i = 0; i < value_count; ++i)
value->value.integer64.value[i] = (long long)values[i];
g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
priv = alsactl_elem_value_get_instance_private(self);
- value = &priv->value;
+ g_return_if_fail(values != NULL);
+ g_return_if_fail(value_count != NULL);
+
+ value = &priv->value;
*value_count = MIN(*value_count, G_N_ELEMENTS(value->value.integer64.value));
for (i = 0; i < *value_count; ++i)
(*values)[i] = (gint64)value->value.integer64.value[i];
unsigned int count;
unsigned int index;
- if (entries == NULL || entry_count == NULL || error == NULL) {
- generate_error(error, EINVAL);
- return;
- }
+ g_return_if_fail(entries != NULL);
+ g_return_if_fail(entry_count != NULL);
g_return_if_fail(error == NULL || *error == NULL);
prepare_udev_enum(&enumerator, error);
}
}
if (index != count) {
- generate_error(error, ENOENT);
+ g_warn_if_reached();
g_free(*entries);
*entries = NULL;
goto end;