]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsabat: fix misusing of errno
authorLu, Han <han.lu@intel.com>
Mon, 21 Mar 2016 11:05:47 +0000 (19:05 +0800)
committerTakashi Iwai <tiwai@suse.de>
Mon, 21 Mar 2016 17:03:12 +0000 (18:03 +0100)
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>
bat/alsa.c
bat/analyze.c
bat/bat.c
bat/common.c

index 5775748daf2eb29d7cfe4093641724bf9390c6e9..638012a132a3d15326c9acf97ac35eed3fb84f4e 100644 (file)
@@ -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;
        }
index 5cfdac38f19edb45669dc66cbb361263f3645330..63481fb45a3e114eb9d8c1d3bb6790dbb29c8704 100644 (file)
@@ -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;
        }
 
index 85ec5aa362d6f55af8a8b5341acffd86b1dc674a..482153209c211e4634916279c54da35e26a98f56 100644 (file)
--- a/bat/bat.c
+++ b/bat/bat.c
 
 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);
index 798b00bf17c8c619f295587eb80d743de0246386..41aaf3abde57d6cf957d841124c23f5a6c0967e5 100644 (file)
@@ -17,7 +17,6 @@
 #include <stddef.h>
 #include <stdlib.h>
 #include <stdbool.h>
-#include <errno.h>
 
 #include "aconfig.h"
 #include "gettext.h"