static const char *const err_msgs[] = {
[ALSACTL_CARD_ERROR_DISCONNECTED] = "The card associated to the instance is in disconnect state",
+ [ALSACTL_CARD_ERROR_ELEM_NOT_FOUND] = "The control element not found in the card",
};
#define generate_local_error(exception, code) \
if (ret < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", req_name);
}
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_INFO, info)) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "ELEM_INFO");
return;
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_TLV_WRITE, packet) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "TLV_WRITE");
}
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_TLV_READ, packet) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "TLV_READ");
}
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_TLV_COMMAND, packet) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "TLV_COMMAND");
}
if (ioctl(fd, request, info) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", req_name);
}
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_REMOVE, elem_id) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "ELEM_REMOVE");
}
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, value) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "ELEM_WRITE");
}
if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_READ, value) < 0) {
if (errno == ENODEV)
generate_local_error(error, ALSACTL_CARD_ERROR_DISCONNECTED);
+ else if (errno == ENOENT)
+ generate_local_error(error, ALSACTL_CARD_ERROR_ELEM_NOT_FOUND);
else
generate_syscall_error(error, errno, "ioctl(%s)", "ELEM_READ");
}