if ((fd = open(filename, O_RDWR)) < 0)
return -errno;
}
-
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
+ SYSERR("fcntl FD_CLOEXEC failed");
+ err = -errno;
+ close(fd);
+ return err;
+ }
if (ioctl(fd, SNDRV_CTL_IOCTL_PVERSION, &ver) < 0) {
+ err = -errno;
close(fd);
- return -errno;
+ return err;
}
if (SNDRV_PROTOCOL_INCOMPATIBLE(ver, SNDRV_CTL_VERSION_MAX)) {
close(fd);
int snd_hwdep_hw_open(snd_hwdep_t **handle, const char *name, int card, int device, int mode)
{
- int fd, ver;
+ int fd, ver, ret;
char filename[32];
snd_hwdep_t *hwdep;
assert(handle);
if ((fd = open(filename, mode)) < 0)
return -errno;
}
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
+ SYSERR("fcntl FD_CLOEXEC failed");
+ ret = -errno;
+ close(fd);
+ return ret;
+ }
if (ioctl(fd, SNDRV_HWDEP_IOCTL_PVERSION, &ver) < 0) {
+ ret = -errno;
close(fd);
- return -errno;
+ return ret;
}
if (SNDRV_PROTOCOL_INCOMPATIBLE(ver, SNDRV_HWDEP_VERSION_MAX)) {
close(fd);
return -errno;
}
}
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
+ SYSERR("fcntl FD_CLOEXEC failed");
+ ret = -errno;
+ close(fd);
+ return ret;
+ }
if (ioctl(fd, SNDRV_RAWMIDI_IOCTL_PVERSION, &ver) < 0) {
ret = -errno;
SYSERR("SNDRV_RAWMIDI_IOCTL_PVERSION failed");
return -errno;
}
}
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
+ SYSERR("fcntl FD_CLOEXEC failed");
+ ret = -errno;
+ close(fd);
+ return ret;
+ }
if (ioctl(fd, SNDRV_SEQ_IOCTL_PVERSION, &ver) < 0) {
SYSERR("SNDRV_SEQ_IOCTL_PVERSION failed");
close(fd);
int snd_timer_hw_open(snd_timer_t **handle, const char *name, int dev_class, int dev_sclass, int card, int device, int subdevice, int mode)
{
- int fd, ver, tmode;
+ int fd, ver, tmode, ret;
snd_timer_t *tmr;
struct sndrv_timer_select sel;
tmode |= O_NONBLOCK;
if ((fd = open(SNDRV_FILE_TIMER, tmode)) < 0)
return -errno;
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
+ SYSERR("fcntl FD_CLOEXEC failed");
+ ret = -errno;
+ close(fd);
+ return ret;
+ }
if (ioctl(fd, SNDRV_TIMER_IOCTL_PVERSION, &ver) < 0) {
+ ret = -errno;
close(fd);
- return -errno;
+ return ret;
}
if (SNDRV_PROTOCOL_INCOMPATIBLE(ver, SNDRV_TIMER_VERSION_MAX)) {
close(fd);
sel.id.device = device;
sel.id.subdevice = subdevice;
if (ioctl(fd, SNDRV_TIMER_IOCTL_SELECT, &sel) < 0) {
- int err = -errno;
+ ret = -errno;
close(fd);
- return err;
+ return ret;
}
tmr = (snd_timer_t *) calloc(1, sizeof(snd_timer_t));
if (tmr == NULL) {