mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-11-10 00:55:42 +01:00
alsabat: fix misusing of errno
Preserve errno value before use, since the value might be changed by another library call. Add "#include <errno.h>" and remove redundant include. Signed-off-by: Lu, Han <han.lu@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
f84c15ca1d
commit
bd6c706606
4 changed files with 34 additions and 26 deletions
21
bat/alsa.c
21
bat/alsa.c
|
@ -19,6 +19,7 @@
|
|||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <alsa/asoundlib.h>
|
||||
|
||||
|
@ -300,17 +301,17 @@ static int write_to_pcm_loop(struct pcm_container *sndpcm, struct bat *bat)
|
|||
|
||||
if (bat->debugplay) {
|
||||
fp = fopen(bat->debugplay, "wb");
|
||||
err = -errno;
|
||||
if (fp == NULL) {
|
||||
fprintf(bat->err, _("Cannot open file for capture: "));
|
||||
fprintf(bat->err, _("%s %d\n"), bat->debugplay, -errno);
|
||||
return -errno;
|
||||
fprintf(bat->err, _("%s %d\n"), bat->debugplay, err);
|
||||
return err;
|
||||
}
|
||||
/* leave space for wav header */
|
||||
err = fseek(fp, sizeof(wav), SEEK_SET);
|
||||
if (err != 0) {
|
||||
fprintf(bat->err, _("Seek file error: %d %d\n"),
|
||||
err, -errno);
|
||||
return -errno;
|
||||
if (fseek(fp, sizeof(wav), SEEK_SET) != 0) {
|
||||
err = -errno;
|
||||
fclose(fp);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -401,10 +402,11 @@ void *playback_alsa(struct bat *bat)
|
|||
fprintf(bat->log, _("Playing input audio file: %s\n"),
|
||||
bat->playback.file);
|
||||
bat->fp = fopen(bat->playback.file, "rb");
|
||||
err = -errno;
|
||||
if (bat->fp == NULL) {
|
||||
fprintf(bat->err, _("Cannot open file for capture: "));
|
||||
fprintf(bat->err, _("%s %d\n"),
|
||||
bat->playback.file, -errno);
|
||||
bat->playback.file, err);
|
||||
retval_play = 1;
|
||||
goto exit3;
|
||||
}
|
||||
|
@ -544,9 +546,10 @@ void *record_alsa(struct bat *bat)
|
|||
|
||||
remove(bat->capture.file);
|
||||
fp = fopen(bat->capture.file, "w+");
|
||||
err = -errno;
|
||||
if (fp == NULL) {
|
||||
fprintf(bat->err, _("Cannot open file for capture: %s %d\n"),
|
||||
bat->capture.file, -errno);
|
||||
bat->capture.file, err);
|
||||
retval_record = 1;
|
||||
goto exit3;
|
||||
}
|
||||
|
|
|
@ -294,10 +294,10 @@ int analyze_capture(struct bat *bat)
|
|||
return -ENOMEM;
|
||||
|
||||
bat->fp = fopen(bat->capture.file, "rb");
|
||||
err = -errno;
|
||||
if (bat->fp == NULL) {
|
||||
fprintf(bat->err, _("Cannot open file for capture: %s %d\n"),
|
||||
bat->capture.file, -errno);
|
||||
err = -errno;
|
||||
bat->capture.file, err);
|
||||
goto exit1;
|
||||
}
|
||||
|
||||
|
|
34
bat/bat.c
34
bat/bat.c
|
@ -39,13 +39,15 @@
|
|||
|
||||
static int get_duration(struct bat *bat)
|
||||
{
|
||||
int err;
|
||||
float duration_f;
|
||||
long duration_i;
|
||||
char *ptrf, *ptri;
|
||||
|
||||
duration_f = strtof(bat->narg, &ptrf);
|
||||
err = -errno;
|
||||
if (duration_f == HUGE_VALF || duration_f == -HUGE_VALF
|
||||
|| (duration_f == 0.0 && errno != 0))
|
||||
|| (duration_f == 0.0 && err != 0))
|
||||
goto err_exit;
|
||||
|
||||
duration_i = strtol(bat->narg, &ptri, 10);
|
||||
|
@ -68,9 +70,9 @@ static int get_duration(struct bat *bat)
|
|||
return 0;
|
||||
|
||||
err_exit:
|
||||
fprintf(bat->err, _("Duration overflow/underflow: %d\n"), -errno);
|
||||
fprintf(bat->err, _("Duration overflow/underflow: %d\n"), err);
|
||||
|
||||
return -errno;
|
||||
return err;
|
||||
}
|
||||
|
||||
static void get_sine_frequencies(struct bat *bat, char *freq)
|
||||
|
@ -458,17 +460,18 @@ static int validate_options(struct bat *bat)
|
|||
static int bat_init(struct bat *bat)
|
||||
{
|
||||
int err = 0;
|
||||
int fd = 0;
|
||||
char name[] = TEMP_RECORD_FILE_NAME;
|
||||
|
||||
/* Determine logging to a file or stdout and stderr */
|
||||
if (bat->logarg) {
|
||||
bat->log = NULL;
|
||||
bat->log = fopen(bat->logarg, "wb");
|
||||
err = -errno;
|
||||
if (bat->log == NULL) {
|
||||
fprintf(bat->err, _("Cannot open file for capture:"));
|
||||
fprintf(bat->err, _(" %s %d\n"),
|
||||
bat->logarg, -errno);
|
||||
return -errno;
|
||||
fprintf(bat->err, _(" %s %d\n"), bat->logarg, err);
|
||||
return err;
|
||||
}
|
||||
bat->err = bat->log;
|
||||
}
|
||||
|
@ -489,18 +492,20 @@ static int bat_init(struct bat *bat)
|
|||
bat->capture.file = bat->playback.file;
|
||||
} else {
|
||||
/* create temp file for sound record and analysis */
|
||||
err = mkstemp(name);
|
||||
if (err == -1) {
|
||||
fd = mkstemp(name);
|
||||
err = -errno;
|
||||
if (fd == -1) {
|
||||
fprintf(bat->err, _("Fail to create record file: %d\n"),
|
||||
-errno);
|
||||
return -errno;
|
||||
err);
|
||||
return err;
|
||||
}
|
||||
/* store file name which is dynamically created */
|
||||
bat->capture.file = strdup(name);
|
||||
err = -errno;
|
||||
if (bat->capture.file == NULL)
|
||||
return -errno;
|
||||
return err;
|
||||
/* close temp file */
|
||||
close(err);
|
||||
close(fd);
|
||||
}
|
||||
|
||||
/* Initial for playback */
|
||||
|
@ -526,11 +531,12 @@ static int bat_init(struct bat *bat)
|
|||
}
|
||||
} else {
|
||||
bat->fp = fopen(bat->playback.file, "rb");
|
||||
err = -errno;
|
||||
if (bat->fp == NULL) {
|
||||
fprintf(bat->err, _("Cannot open file for playback:"));
|
||||
fprintf(bat->err, _(" %s %d\n"),
|
||||
bat->playback.file, -errno);
|
||||
return -errno;
|
||||
bat->playback.file, err);
|
||||
return err;
|
||||
}
|
||||
err = read_wav_header(bat, bat->playback.file, bat->fp, false);
|
||||
fclose(bat->fp);
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "aconfig.h"
|
||||
#include "gettext.h"
|
||||
|
|
Loading…
Reference in a new issue