]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsfd: (helper) set proper errno before calling err()
authorMasatake YAMATO <yamato@redhat.com>
Thu, 14 Oct 2021 13:46:30 +0000 (22:46 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Thu, 21 Oct 2021 12:06:39 +0000 (21:06 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
tests/helpers/test_mkfds.c

index 27bbf984e99343c8284958298f52660917bfe272..66638461249aa15e05968be7ebe49e49c442db53 100644 (file)
@@ -17,6 +17,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <errno.h>
 #include <getopt.h>
 #include <signal.h>
 #include <stdbool.h>
@@ -80,7 +81,9 @@ static void open_ro_regular_file(struct factory *factory _U_, struct fdesc fdesc
                err(EXIT_FAILURE, "failed to open: %s", file);
 
        if (dup2(fd, fdescs[0].fd) < 0) {
+               int e = errno;
                close(fd);
+               errno = e;
                err(EXIT_FAILURE, "failed to dup %d -> %d", fd, fdescs[0].fd);
        }
 
@@ -99,8 +102,10 @@ static void make_pipe(struct factory *factory _U_, struct fdesc fdescs[], pid_t
 
        for (int i = 0; i < 2; i++) {
                if (dup2(pd[i], fdescs[i].fd) < 0) {
+                       int e = errno;
                        close(pd[0]);
                        close(pd[1]);
+                       errno = e;
                        err(EXIT_FAILURE, "failed to dup %d -> %d",
                            pd[i], fdescs[i].fd);
                }
@@ -121,7 +126,9 @@ static void open_directory(struct factory *factory _U_, struct fdesc fdescs[], p
                err(EXIT_FAILURE, "failed to open: %s", dir);
 
        if (dup2(fd, fdescs[0].fd) < 0) {
+               int e = errno;
                close(fd);
+               errno = e;
                err(EXIT_FAILURE, "failed to dup %d -> %d", fd, fdescs[0].fd);
        }