summaryrefslogtreecommitdiff
path: root/archival/tar.c
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-07-10 15:05:39 +0000
committerMatt Kraai <kraai@debian.org>2001-07-10 15:05:39 +0000
commit5710f9f690c5b668a916da8b2bcee8bbe63e6394 (patch)
treebf10b40d9d55a084488e4b34044b45817a2da278 /archival/tar.c
parent654944fc36ba2dd9de782b3c0c6d0e0f050104c2 (diff)
downloadbusybox-w32-5710f9f690c5b668a916da8b2bcee8bbe63e6394.tar.gz
busybox-w32-5710f9f690c5b668a916da8b2bcee8bbe63e6394.tar.bz2
busybox-w32-5710f9f690c5b668a916da8b2bcee8bbe63e6394.zip
Read 20 512-byte blocks at a time (like GNU tar).
Diffstat (limited to 'archival/tar.c')
-rw-r--r--archival/tar.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/archival/tar.c b/archival/tar.c
index 4702a5f8a..31443ee22 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -330,7 +330,7 @@ tarExtractRegularFile(TarInfo *header, int extractFlag, int tostdoutFlag)
330 size_t writeSize; 330 size_t writeSize;
331 size_t readSize; 331 size_t readSize;
332 size_t actualWriteSz; 332 size_t actualWriteSz;
333 char buffer[BUFSIZ]; 333 char buffer[20 * TAR_BLOCK_SIZE];
334 size_t size = header->size; 334 size_t size = header->size;
335 int outFd=fileno(stdout); 335 int outFd=fileno(stdout);
336 336
@@ -354,9 +354,9 @@ tarExtractRegularFile(TarInfo *header, int extractFlag, int tostdoutFlag)
354 if ( size > sizeof(buffer) ) 354 if ( size > sizeof(buffer) )
355 writeSize = readSize = sizeof(buffer); 355 writeSize = readSize = sizeof(buffer);
356 else { 356 else {
357 int mod = size % 512; 357 int mod = size % TAR_BLOCK_SIZE;
358 if ( mod != 0 ) 358 if ( mod != 0 )
359 readSize = size + (512 - mod); 359 readSize = size + (TAR_BLOCK_SIZE - mod);
360 else 360 else
361 readSize = size; 361 readSize = size;
362 writeSize = size; 362 writeSize = size;