diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2021-11-04 20:56:35 +0300 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2021-11-05 02:50:29 +0300 |
commit | 572de1fe95fd71ae28499018529e1b31bacee02a (patch) | |
tree | 2e487e221aa63775708f76c8a1356b34047b4fa7 | |
parent | 33a25800d55f2d15357832af392528bb860aa3bf (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.c | 12 |
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; } |