diff options
Diffstat (limited to 'c_src/filebuffer.c')
-rw-r--r-- | c_src/filebuffer.c | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/c_src/filebuffer.c b/c_src/filebuffer.c index 70d7827..82fd4d2 100644 --- a/c_src/filebuffer.c +++ b/c_src/filebuffer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, NORDUnet A/S. + * Copyright (c) 2016, NORDUnet A/S. * See LICENSE for licensing information. */ @@ -87,15 +87,14 @@ bf_add(buffered_file *file, const void *data, uint64_t length) } needspace = length + bf_unwritten_length(file); - if (needspace > file->writebufferalloc) { - uint64_t newsize = file->writebufferalloc * 2; if (needspace > newsize) { newsize = needspace; } file->writebuffer = realloc(file->writebuffer, newsize); - memset(file->writebuffer + file->writebufferalloc, 0, newsize - file->writebufferalloc); + memset(file->writebuffer + file->writebufferalloc, 0, + newsize - file->writebufferalloc); file->writebufferalloc = newsize; } } @@ -139,27 +138,36 @@ unsigned char * bf_read(buffered_file *file, uint64_t offset, size_t length, char **error) { unsigned char *result = malloc(length); - dprintf(READ, (stderr, "reading data: offset %llu\n", (unsigned long long) offset)); + dprintf(READ, (stderr, "reading data: offset %llu\n", + (unsigned long long) offset)); if (offset >= file->filesize) { uint64_t writebufferoffset = offset - file->filesize; if (offset + length > file->datasize) { free(result); - set_error(error, "pread: not enough data for offset %llu and length %zu\n", (long long unsigned int) offset, length); + set_error(error, + "pread: not enough data for offset %llu and " + "length %zu\n", + (long long unsigned int) offset, length); return NULL; } memcpy(result, file->writebuffer + writebufferoffset, length); } else { if (offset + length > file->filesize) { free(result); - set_error(error, "pread: trying to read over file/writebuffer boundary for offset %llu and length %zu\n", (long long unsigned int) offset, length); + set_error(error, + "pread: trying to read over file/writebuffer " + "boundary for offset %llu and length %zu\n", + (long long unsigned int) offset, length); return NULL; } - + ssize_t ret = pread(file->fd, result, length, (off_t) offset); if (ret != length) { free(result); - set_error(error, "short pread: %zd (wanted %zu) at offset %llu\n", ret, length, (long long unsigned int) offset); + set_error(error, + "short pread: %zd (wanted %zu) at offset %llu\n", + ret, length, (long long unsigned int) offset); return NULL; } } @@ -217,5 +225,10 @@ bf_truncate(buffered_file *file) void bf_sha256(buffered_file *file, unsigned char *checksum) { - sha256_digest(&file->commit_checksum_context, SHA256_DIGEST_SIZE, checksum); + sha256_digest(&file->commit_checksum_context, SHA256_DIGEST_SIZE, + checksum); } + +/* Local Variables: */ +/* c-file-style: "linux" */ +/* End: */ |