aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
Diffstat (limited to 'archival')
-rw-r--r--archival/libunarchive/data_align.c6
-rw-r--r--archival/tar.c9
2 files changed, 8 insertions, 7 deletions
diff --git a/archival/libunarchive/data_align.c b/archival/libunarchive/data_align.c
index 9803199e0..d98dc5764 100644
--- a/archival/libunarchive/data_align.c
+++ b/archival/libunarchive/data_align.c
@@ -3,14 +3,12 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-//#include <sys/types.h>
-
#include "libbb.h"
#include "unarchive.h"
-void data_align(archive_handle_t *archive_handle, const unsigned short boundary)
+void data_align(archive_handle_t *archive_handle, unsigned boundary)
{
- const unsigned short skip_amount = (boundary - (archive_handle->offset % boundary)) % boundary;
+ unsigned skip_amount = (boundary - (archive_handle->offset % boundary)) % boundary;
archive_handle->seek(archive_handle, skip_amount);
archive_handle->offset += skip_amount;
diff --git a/archival/tar.c b/archival/tar.c
index 6b3738365..a8ff7b894 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -546,13 +546,16 @@ static int writeTarFile(const int tar_fd, const int verboseFlag,
if (gzipPid == 0) {
/* child */
- xmove_fd(tbInfo.tarFd, 1);
- xmove_fd(gzipDataPipe.rd, 0);
+ /* NB: close _first_, then move fds! */
close(gzipDataPipe.wr);
#if WAIT_FOR_CHILD
close(gzipStatusPipe.rd);
+ /* gzipStatusPipe.wr will close only on exec -
+ * parent waits for this close to happen */
fcntl(gzipStatusPipe.wr, F_SETFD, FD_CLOEXEC);
#endif
+ xmove_fd(gzipDataPipe.rd, 0);
+ xmove_fd(tbInfo.tarFd, 1);
/* exec gzip/bzip2 program/applet */
BB_EXECLP(zip_exec, zip_exec, "-f", NULL);
vfork_exec_errno = errno;
@@ -570,7 +573,7 @@ static int writeTarFile(const int tar_fd, const int verboseFlag,
/* Wait until child execs (or fails to) */
n = full_read(gzipStatusPipe.rd, &buf, 1);
- if ((n < 0) && (/*errno == EAGAIN ||*/ errno == EINTR))
+ if (n < 0 /* && errno == EAGAIN */)
continue; /* try it again */
}