Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/amachronic/microtar.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-11-04 20:56:35 +0300
committerAidan MacDonald <amachronic@protonmail.com>2021-11-05 02:50:29 +0300
commit572de1fe95fd71ae28499018529e1b31bacee02a (patch)
tree2e487e221aa63775708f76c8a1356b34047b4fa7
parent33a25800d55f2d15357832af392528bb860aa3bf (diff)
Optimization to write_null_bytes()
This will only make a negligible difference on a proper OS and C library, but may assist simpler I/O implementations.
-rw-r--r--src/microtar.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/microtar.c b/src/microtar.c
index f14e5e5..84d7eca 100644
--- a/src/microtar.c
+++ b/src/microtar.c
@@ -96,13 +96,15 @@ static int twrite(mtar_t* tar, const void* data, unsigned size)
return err;
}
-static int write_null_bytes(mtar_t* tar, int n)
+static int write_null_bytes(mtar_t* tar, size_t count)
{
- int i, err;
- char nul = '\0';
+ int err;
+ size_t n;
- for(i = 0; i < n; i++) {
- err = twrite(tar, &nul, 1);
+ memset(tar->buffer, 0, sizeof(tar->buffer));
+ while(count > 0) {
+ n = count < sizeof(tar->buffer) ? count : sizeof(tar->buffer);
+ err = twrite(tar, tar->buffer, n);
if(err)
return err;
}