Branch Coverage

deps/libgit2/src/util/filebuf.c
Criterion Covered Total %
branch 100 200 50.0


line true false branch
46 0 317 if (git_fs_path_exists(file->path_lock) == true) {
54 144 173 if (flags & GIT_FILEBUF_CREATE_LEADING_DIRS) {
61 0 317 if (file->fd < 0)
66 3 314 if ((flags & GIT_FILEBUF_APPEND) && git_fs_path_exists(file->path_original) == true) {
3 0 if ((flags & GIT_FILEBUF_APPEND) && git_fs_path_exists(file->path_original) == true) {
73 0 3 if (source < 0) {
80 3 3 while ((read_bytes = p_read(source, buffer, sizeof(buffer))) > 0) {
81 0 3 if ((error = p_write(file->fd, buffer, read_bytes)) < 0)
83 0 3 if (file->compute_digest)
89 0 3 if (read_bytes < 0) {
92 0 3 } else if (error < 0) {
103 36 655 if (file->fd_is_open && file->fd >= 0)
36 0 if (file->fd_is_open && file->fd >= 0)
106 494 197 if (file->created_lock && !file->did_rename && file->path_lock && git_fs_path_exists(file->path_lock))
36 458 if (file->created_lock && !file->did_rename && file->path_lock && git_fs_path_exists(file->path_lock))
36 0 if (file->created_lock && !file->did_rename && file->path_lock && git_fs_path_exists(file->path_lock))
36 0 if (file->created_lock && !file->did_rename && file->path_lock && git_fs_path_exists(file->path_lock))
109 51 640 if (file->compute_digest) {
114 491 200 if (file->buffer)
118 177 514 if (file->z_buf) {
123 474 217 if (file->path_original)
125 494 197 if (file->path_lock)
146 402 4 if (len > 0) {
147 0 402 if (p_write(file->fd, (void *)source, len) < 0) {
152 152 250 if (file->compute_digest)
163 0 157 if (len > 0 || file->flush_mode == Z_FINISH) {
0 0 if (len > 0 || file->flush_mode == Z_FINISH) {
173 0 157 if (deflate(zs, file->flush_mode) == Z_STREAM_ERROR) {
180 0 157 if (p_write(file->fd, file->z_buf, have) < 0) {
185 0 157 } while (zs->avail_out == 0);
187 0 157 GIT_ASSERT(zs->avail_in == 0);
189 0 157 if (file->compute_digest)
205 317 0 if ((error = git_str_grow(&target, GIT_PATH_MAX + 1)) < 0 ||
0 317 if ((error = git_str_grow(&target, GIT_PATH_MAX + 1)) < 0 ||
209 317 0 for (i = 0; i < MAX_SYMLINK_DEPTH; i++) {
211 76 241 if (error < 0 && errno == ENOENT) {
76 0 if (error < 0 && errno == ENOENT) {
216 0 241 if (error < 0) {
222 241 0 if (!S_ISLNK(st.st_mode)) {
228 0 0 if (ret < 0) {
234 0 0 if (ret == GIT_PATH_MAX) {
245 0 0 if (root >= 0) {
246 0 0 if ((error = git_str_sets(&curpath, target.ptr)) < 0)
251 0 0 if ((error = git_fs_path_dirname_r(&dir, curpath.ptr)) < 0)
257 0 0 if ((error = git_fs_path_apply_relative(&curpath, target.ptr)) < 0)
281 0 494 GIT_ASSERT_ARG(file);
282 0 494 GIT_ASSERT_ARG(path);
283 0 494 GIT_ASSERT(file->buffer == NULL);
287 3 491 if (flags & GIT_FILEBUF_DO_NOT_BUFFER)
290 0 494 if (flags & GIT_FILEBUF_FSYNC)
299 491 3 if (!file->do_not_buffer) {
301 0 491 GIT_ERROR_CHECK_ALLOC(file->buffer);
305 153 341 if (flags & GIT_FILEBUF_HASH_CONTENTS) {
308 0 153 if (git_hash_ctx_init(&file->digest, GIT_HASH_ALGORITHM_SHA1) < 0)
315 177 317 if (compression != 0) {
317 0 177 if (deflateInit(&file->zs, compression) != Z_OK) {
324 0 177 GIT_ERROR_CHECK_ALLOC(file->z_buf);
334 177 317 if (flags & GIT_FILEBUF_TEMPORARY) {
340 0 177 if (file->fd < 0) {
350 0 177 GIT_ERROR_CHECK_ALLOC(file->path_lock);
354 0 317 if ((error = resolve_symlink(&resolved_path, path)) < 0)
362 0 317 GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, path_len, GIT_FILELOCK_EXTLENGTH);
0 317 GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, path_len, GIT_FILELOCK_EXTLENGTH);
364 0 317 GIT_ERROR_CHECK_ALLOC(file->path_lock);
369 0 317 if (git_fs_path_isdir(file->path_original)) {
376 0 317 if ((error = lock_file(file, flags, mode)) < 0)
391 0 102 GIT_ASSERT_ARG(out);
392 0 102 GIT_ASSERT_ARG(file);
393 0 102 GIT_ASSERT_ARG(file->compute_digest);
397 0 102 if (verify_last_error(file) < 0)
411 0 162 GIT_ERROR_CHECK_ALLOC(file->path_original);
419 0 458 GIT_ASSERT_ARG(file);
420 0 458 GIT_ASSERT(file->path_original);
425 0 458 if (verify_last_error(file) < 0)
430 0 458 if (file->do_fsync && p_fsync(file->fd) < 0) {
0 0 if (file->do_fsync && p_fsync(file->fd) < 0) {
435 0 458 if (p_close(file->fd) < 0) {
442 0 458 if (p_rename(file->path_lock, file->path_original) < 0) {
447 0 458 if (file->do_fsync && git_futils_fsync_parent(file->path_original) < 0)
0 0 if (file->do_fsync && git_futils_fsync_parent(file->path_original) < 0)
470 0 2244 ENSURE_BUF_OK(file);
472 3 2241 if (file->do_not_buffer)
479 2241 0 if (space_left > len) {
485 0 0 if (flush_buffer(file) < 0)
499 0 206 ENSURE_BUF_OK(file);
501 0 206 if (len > file->buf_size) {
506 0 206 if (space_left <= len) {
507 0 0 if (flush_buffer(file) < 0)
524 0 147 ENSURE_BUF_OK(file);
533 0 147 if (written < 0) {
539 147 0 if (len + 1 <= space_left) {
544 0 0 if (flush_buffer(file) < 0)
549 0 0 } while (len + 1 <= space_left);
551 0 0 if (GIT_ADD_SIZET_OVERFLOW(&alloclen, len, 1) ||
0 0 if (GIT_ADD_SIZET_OVERFLOW(&alloclen, len, 1) ||
561 0 0 if (written < 0) {
578 0 0 if (file->fd_is_open)
583 0 0 if (res < 0) {
589 0 0 if (mtime)
591 0 0 if (size)