]> git.cameronkatri.com Git - bsd-progress.git/commitdiff
progress: handle EINTR in writes. PR/55914
authorlukem <lukem@NetBSD.org>
Thu, 7 Jan 2021 12:02:52 +0000 (12:02 +0000)
committerlukem <lukem@NetBSD.org>
Thu, 7 Jan 2021 12:02:52 +0000 (12:02 +0000)
progress.c

index 2498bee93f20f5a56e42c513eb718e4104a13632..0c6953820f29503ba57087aa57dd2ed6909d57d7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: progress.c,v 1.22 2020/04/25 11:12:39 simonb Exp $ */
+/*     $NetBSD: progress.c,v 1.23 2021/01/07 12:02:52 lukem Exp $ */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: progress.c,v 1.22 2020/04/25 11:12:39 simonb Exp $");
+__RCSID("$NetBSD: progress.c,v 1.23 2021/01/07 12:02:52 lukem Exp $");
 #endif                         /* not lint */
 
 #include <sys/types.h>
@@ -236,6 +236,10 @@ main(int argc, char *argv[])
                for (off = 0; nr; nr -= nw, off += nw, bytes += nw)
                        if ((nw = write(outpipe[1], fb_buf + off,
                            (size_t) nr)) < 0) {
+                               if (errno == EINTR) {
+                                       nw = 0;
+                                       continue;
+                               }
                                progressmeter(1);
                                err(1, "writing %u bytes to output pipe",
                                                        (unsigned) nr);