Coverage Report

Created: 2024-09-08 06:23

/src/git/wrapper.h
Line
Count
Source (jump to first uncovered line)
1
#ifndef WRAPPER_H
2
#define WRAPPER_H
3
4
char *xstrdup(const char *str);
5
void *xmalloc(size_t size);
6
void *xmallocz(size_t size);
7
void *xmallocz_gently(size_t size);
8
void *xmemdupz(const void *data, size_t len);
9
char *xstrndup(const char *str, size_t len);
10
void *xrealloc(void *ptr, size_t size);
11
void *xcalloc(size_t nmemb, size_t size);
12
void xsetenv(const char *name, const char *value, int overwrite);
13
void *xmmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
14
const char *mmap_os_err(void);
15
void *xmmap_gently(void *start, size_t length, int prot, int flags, int fd, off_t offset);
16
int xopen(const char *path, int flags, ...);
17
ssize_t xread(int fd, void *buf, size_t len);
18
ssize_t xwrite(int fd, const void *buf, size_t len);
19
ssize_t xpread(int fd, void *buf, size_t len, off_t offset);
20
int xdup(int fd);
21
FILE *xfopen(const char *path, const char *mode);
22
FILE *xfdopen(int fd, const char *mode);
23
int xmkstemp(char *temp_filename);
24
int xmkstemp_mode(char *temp_filename, int mode);
25
char *xgetcwd(void);
26
FILE *fopen_for_writing(const char *path);
27
FILE *fopen_or_warn(const char *path, const char *mode);
28
29
/*
30
 * Like strncmp, but only return zero if s is NUL-terminated and exactly len
31
 * characters long.  If it is not, consider it greater than t.
32
 */
33
int xstrncmpz(const char *s, const char *t, size_t len);
34
35
__attribute__((format (printf, 3, 4)))
36
int xsnprintf(char *dst, size_t max, const char *fmt, ...);
37
38
int xgethostname(char *buf, size_t len);
39
40
/* set default permissions by passing mode arguments to open(2) */
41
int git_mkstemps_mode(char *pattern, int suffix_len, int mode);
42
int git_mkstemp_mode(char *pattern, int mode);
43
44
ssize_t read_in_full(int fd, void *buf, size_t count);
45
ssize_t write_in_full(int fd, const void *buf, size_t count);
46
ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset);
47
48
static inline ssize_t write_str_in_full(int fd, const char *str)
49
0
{
50
0
  return write_in_full(fd, str, strlen(str));
51
0
}
Unexecuted instantiation: add.c:write_str_in_full
Unexecuted instantiation: am.c:write_str_in_full
Unexecuted instantiation: annotate.c:write_str_in_full
Unexecuted instantiation: apply.c:write_str_in_full
Unexecuted instantiation: archive.c:write_str_in_full
Unexecuted instantiation: bisect.c:write_str_in_full
Unexecuted instantiation: blame.c:write_str_in_full
Unexecuted instantiation: branch.c:write_str_in_full
Unexecuted instantiation: bugreport.c:write_str_in_full
Unexecuted instantiation: bundle.c:write_str_in_full
Unexecuted instantiation: cat-file.c:write_str_in_full
Unexecuted instantiation: check-attr.c:write_str_in_full
Unexecuted instantiation: check-ignore.c:write_str_in_full
Unexecuted instantiation: check-mailmap.c:write_str_in_full
Unexecuted instantiation: check-ref-format.c:write_str_in_full
Unexecuted instantiation: checkout--worker.c:write_str_in_full
Unexecuted instantiation: checkout-index.c:write_str_in_full
Unexecuted instantiation: checkout.c:write_str_in_full
Unexecuted instantiation: clean.c:write_str_in_full
Unexecuted instantiation: clone.c:write_str_in_full
Unexecuted instantiation: column.c:write_str_in_full
Unexecuted instantiation: commit-graph.c:write_str_in_full
Unexecuted instantiation: commit-tree.c:write_str_in_full
Unexecuted instantiation: commit.c:write_str_in_full
Unexecuted instantiation: config.c:write_str_in_full
Unexecuted instantiation: count-objects.c:write_str_in_full
Unexecuted instantiation: credential-cache--daemon.c:write_str_in_full
Unexecuted instantiation: credential-cache.c:write_str_in_full
Unexecuted instantiation: credential-store.c:write_str_in_full
Unexecuted instantiation: credential.c:write_str_in_full
Unexecuted instantiation: describe.c:write_str_in_full
Unexecuted instantiation: diagnose.c:write_str_in_full
Unexecuted instantiation: diff-files.c:write_str_in_full
Unexecuted instantiation: diff-index.c:write_str_in_full
Unexecuted instantiation: diff-tree.c:write_str_in_full
Unexecuted instantiation: diff.c:write_str_in_full
Unexecuted instantiation: difftool.c:write_str_in_full
Unexecuted instantiation: fast-export.c:write_str_in_full
Unexecuted instantiation: fast-import.c:write_str_in_full
Unexecuted instantiation: fetch-pack.c:write_str_in_full
Unexecuted instantiation: fetch.c:write_str_in_full
Unexecuted instantiation: fmt-merge-msg.c:write_str_in_full
Unexecuted instantiation: for-each-ref.c:write_str_in_full
Unexecuted instantiation: for-each-repo.c:write_str_in_full
Unexecuted instantiation: fsck.c:write_str_in_full
Unexecuted instantiation: fsmonitor--daemon.c:write_str_in_full
Unexecuted instantiation: gc.c:write_str_in_full
Unexecuted instantiation: get-tar-commit-id.c:write_str_in_full
Unexecuted instantiation: grep.c:write_str_in_full
Unexecuted instantiation: hash-object.c:write_str_in_full
Unexecuted instantiation: help.c:write_str_in_full
Unexecuted instantiation: hook.c:write_str_in_full
Unexecuted instantiation: index-pack.c:write_str_in_full
Unexecuted instantiation: init-db.c:write_str_in_full
Unexecuted instantiation: interpret-trailers.c:write_str_in_full
Unexecuted instantiation: log.c:write_str_in_full
Unexecuted instantiation: ls-files.c:write_str_in_full
Unexecuted instantiation: ls-remote.c:write_str_in_full
Unexecuted instantiation: ls-tree.c:write_str_in_full
Unexecuted instantiation: mailinfo.c:write_str_in_full
Unexecuted instantiation: mailsplit.c:write_str_in_full
Unexecuted instantiation: merge-base.c:write_str_in_full
Unexecuted instantiation: merge-file.c:write_str_in_full
Unexecuted instantiation: merge-index.c:write_str_in_full
Unexecuted instantiation: merge-ours.c:write_str_in_full
Unexecuted instantiation: merge-recursive.c:write_str_in_full
Unexecuted instantiation: merge-tree.c:write_str_in_full
Unexecuted instantiation: merge.c:write_str_in_full
Unexecuted instantiation: mktag.c:write_str_in_full
Unexecuted instantiation: mktree.c:write_str_in_full
Unexecuted instantiation: multi-pack-index.c:write_str_in_full
Unexecuted instantiation: mv.c:write_str_in_full
Unexecuted instantiation: name-rev.c:write_str_in_full
Unexecuted instantiation: notes.c:write_str_in_full
Unexecuted instantiation: pack-objects.c:write_str_in_full
Unexecuted instantiation: pack-redundant.c:write_str_in_full
Unexecuted instantiation: pack-refs.c:write_str_in_full
Unexecuted instantiation: patch-id.c:write_str_in_full
Unexecuted instantiation: prune-packed.c:write_str_in_full
Unexecuted instantiation: prune.c:write_str_in_full
Unexecuted instantiation: pull.c:write_str_in_full
Unexecuted instantiation: push.c:write_str_in_full
Unexecuted instantiation: range-diff.c:write_str_in_full
Unexecuted instantiation: read-tree.c:write_str_in_full
Unexecuted instantiation: rebase.c:write_str_in_full
Unexecuted instantiation: receive-pack.c:write_str_in_full
Unexecuted instantiation: reflog.c:write_str_in_full
Unexecuted instantiation: refs.c:write_str_in_full
Unexecuted instantiation: remote-ext.c:write_str_in_full
Unexecuted instantiation: remote-fd.c:write_str_in_full
Unexecuted instantiation: remote.c:write_str_in_full
Unexecuted instantiation: repack.c:write_str_in_full
Unexecuted instantiation: replace.c:write_str_in_full
Unexecuted instantiation: replay.c:write_str_in_full
Unexecuted instantiation: rerere.c:write_str_in_full
Unexecuted instantiation: reset.c:write_str_in_full
Unexecuted instantiation: rev-list.c:write_str_in_full
Unexecuted instantiation: rev-parse.c:write_str_in_full
Unexecuted instantiation: revert.c:write_str_in_full
Unexecuted instantiation: rm.c:write_str_in_full
Unexecuted instantiation: send-pack.c:write_str_in_full
Unexecuted instantiation: shortlog.c:write_str_in_full
Unexecuted instantiation: show-branch.c:write_str_in_full
Unexecuted instantiation: show-index.c:write_str_in_full
Unexecuted instantiation: show-ref.c:write_str_in_full
Unexecuted instantiation: sparse-checkout.c:write_str_in_full
Unexecuted instantiation: stash.c:write_str_in_full
Unexecuted instantiation: stripspace.c:write_str_in_full
Unexecuted instantiation: submodule--helper.c:write_str_in_full
Unexecuted instantiation: symbolic-ref.c:write_str_in_full
Unexecuted instantiation: tag.c:write_str_in_full
Unexecuted instantiation: unpack-file.c:write_str_in_full
Unexecuted instantiation: unpack-objects.c:write_str_in_full
Unexecuted instantiation: update-index.c:write_str_in_full
Unexecuted instantiation: update-ref.c:write_str_in_full
Unexecuted instantiation: update-server-info.c:write_str_in_full
Unexecuted instantiation: upload-archive.c:write_str_in_full
Unexecuted instantiation: upload-pack.c:write_str_in_full
Unexecuted instantiation: var.c:write_str_in_full
Unexecuted instantiation: verify-commit.c:write_str_in_full
Unexecuted instantiation: verify-pack.c:write_str_in_full
Unexecuted instantiation: verify-tag.c:write_str_in_full
Unexecuted instantiation: worktree.c:write_str_in_full
Unexecuted instantiation: write-tree.c:write_str_in_full
Unexecuted instantiation: git.c:write_str_in_full
Unexecuted instantiation: fuzz-commit-graph.c:write_str_in_full
Unexecuted instantiation: abspath.c:write_str_in_full
Unexecuted instantiation: add-interactive.c:write_str_in_full
Unexecuted instantiation: add-patch.c:write_str_in_full
Unexecuted instantiation: advice.c:write_str_in_full
Unexecuted instantiation: alias.c:write_str_in_full
Unexecuted instantiation: attr.c:write_str_in_full
Unexecuted instantiation: base85.c:write_str_in_full
Unexecuted instantiation: blob.c:write_str_in_full
Unexecuted instantiation: bloom.c:write_str_in_full
Unexecuted instantiation: bulk-checkin.c:write_str_in_full
Unexecuted instantiation: bundle-uri.c:write_str_in_full
Unexecuted instantiation: cache-tree.c:write_str_in_full
Unexecuted instantiation: color.c:write_str_in_full
Unexecuted instantiation: combine-diff.c:write_str_in_full
Unexecuted instantiation: commit-reach.c:write_str_in_full
Unexecuted instantiation: terminal.c:write_str_in_full
Unexecuted instantiation: connect.c:write_str_in_full
Unexecuted instantiation: connected.c:write_str_in_full
Unexecuted instantiation: convert.c:write_str_in_full
Unexecuted instantiation: copy.c:write_str_in_full
Unexecuted instantiation: csum-file.c:write_str_in_full
Unexecuted instantiation: ctype.c:write_str_in_full
Unexecuted instantiation: date.c:write_str_in_full
Unexecuted instantiation: decorate.c:write_str_in_full
Unexecuted instantiation: delta-islands.c:write_str_in_full
Unexecuted instantiation: diff-delta.c:write_str_in_full
Unexecuted instantiation: diff-merges.c:write_str_in_full
Unexecuted instantiation: diff-lib.c:write_str_in_full
Unexecuted instantiation: diff-no-index.c:write_str_in_full
Unexecuted instantiation: diffcore-break.c:write_str_in_full
Unexecuted instantiation: diffcore-delta.c:write_str_in_full
Unexecuted instantiation: diffcore-order.c:write_str_in_full
Unexecuted instantiation: diffcore-pickaxe.c:write_str_in_full
Unexecuted instantiation: diffcore-rename.c:write_str_in_full
Unexecuted instantiation: diffcore-rotate.c:write_str_in_full
Unexecuted instantiation: dir-iterator.c:write_str_in_full
Unexecuted instantiation: dir.c:write_str_in_full
Unexecuted instantiation: editor.c:write_str_in_full
Unexecuted instantiation: entry.c:write_str_in_full
Unexecuted instantiation: environment.c:write_str_in_full
Unexecuted instantiation: bitmap.c:write_str_in_full
Unexecuted instantiation: ewah_bitmap.c:write_str_in_full
Unexecuted instantiation: ewah_io.c:write_str_in_full
Unexecuted instantiation: ewah_rlw.c:write_str_in_full
Unexecuted instantiation: exec-cmd.c:write_str_in_full
Unexecuted instantiation: fsmonitor.c:write_str_in_full
Unexecuted instantiation: fsmonitor-ipc.c:write_str_in_full
Unexecuted instantiation: fsmonitor-settings.c:write_str_in_full
Unexecuted instantiation: gettext.c:write_str_in_full
Unexecuted instantiation: git-zlib.c:write_str_in_full
Unexecuted instantiation: gpg-interface.c:write_str_in_full
Unexecuted instantiation: graph.c:write_str_in_full
Unexecuted instantiation: hash-lookup.c:write_str_in_full
Unexecuted instantiation: hashmap.c:write_str_in_full
Unexecuted instantiation: hex.c:write_str_in_full
Unexecuted instantiation: hex-ll.c:write_str_in_full
Unexecuted instantiation: ident.c:write_str_in_full
Unexecuted instantiation: json-writer.c:write_str_in_full
Unexecuted instantiation: kwset.c:write_str_in_full
Unexecuted instantiation: levenshtein.c:write_str_in_full
Unexecuted instantiation: line-log.c:write_str_in_full
Unexecuted instantiation: line-range.c:write_str_in_full
Unexecuted instantiation: list-objects-filter-options.c:write_str_in_full
Unexecuted instantiation: list-objects.c:write_str_in_full
Unexecuted instantiation: lockfile.c:write_str_in_full
Unexecuted instantiation: log-tree.c:write_str_in_full
Unexecuted instantiation: mailmap.c:write_str_in_full
Unexecuted instantiation: mem-pool.c:write_str_in_full
Unexecuted instantiation: merge-blobs.c:write_str_in_full
Unexecuted instantiation: merge-ll.c:write_str_in_full
Unexecuted instantiation: merge-ort.c:write_str_in_full
Unexecuted instantiation: merge-ort-wrappers.c:write_str_in_full
Unexecuted instantiation: midx.c:write_str_in_full
Unexecuted instantiation: midx-write.c:write_str_in_full
Unexecuted instantiation: name-hash.c:write_str_in_full
Unexecuted instantiation: notes-cache.c:write_str_in_full
Unexecuted instantiation: notes-merge.c:write_str_in_full
Unexecuted instantiation: notes-utils.c:write_str_in_full
Unexecuted instantiation: object-file-convert.c:write_str_in_full
Unexecuted instantiation: object-file.c:write_str_in_full
Unexecuted instantiation: object-name.c:write_str_in_full
Unexecuted instantiation: object.c:write_str_in_full
Unexecuted instantiation: oid-array.c:write_str_in_full
Unexecuted instantiation: oidmap.c:write_str_in_full
Unexecuted instantiation: oidset.c:write_str_in_full
Unexecuted instantiation: oidtree.c:write_str_in_full
Unexecuted instantiation: pack-bitmap-write.c:write_str_in_full
Unexecuted instantiation: pack-bitmap.c:write_str_in_full
Unexecuted instantiation: pack-check.c:write_str_in_full
Unexecuted instantiation: pack-mtimes.c:write_str_in_full
Unexecuted instantiation: pack-revindex.c:write_str_in_full
Unexecuted instantiation: pack-write.c:write_str_in_full
Unexecuted instantiation: packfile.c:write_str_in_full
Unexecuted instantiation: pager.c:write_str_in_full
Unexecuted instantiation: parallel-checkout.c:write_str_in_full
Unexecuted instantiation: parse.c:write_str_in_full
Unexecuted instantiation: parse-options-cb.c:write_str_in_full
Unexecuted instantiation: parse-options.c:write_str_in_full
Unexecuted instantiation: patch-delta.c:write_str_in_full
Unexecuted instantiation: patch-ids.c:write_str_in_full
Unexecuted instantiation: path.c:write_str_in_full
Unexecuted instantiation: pathspec.c:write_str_in_full
Unexecuted instantiation: pkt-line.c:write_str_in_full
Unexecuted instantiation: preload-index.c:write_str_in_full
Unexecuted instantiation: pretty.c:write_str_in_full
Unexecuted instantiation: prio-queue.c:write_str_in_full
Unexecuted instantiation: progress.c:write_str_in_full
Unexecuted instantiation: promisor-remote.c:write_str_in_full
Unexecuted instantiation: prompt.c:write_str_in_full
Unexecuted instantiation: protocol.c:write_str_in_full
Unexecuted instantiation: pseudo-merge.c:write_str_in_full
Unexecuted instantiation: quote.c:write_str_in_full
Unexecuted instantiation: reachable.c:write_str_in_full
Unexecuted instantiation: read-cache.c:write_str_in_full
Unexecuted instantiation: rebase-interactive.c:write_str_in_full
Unexecuted instantiation: ref-filter.c:write_str_in_full
Unexecuted instantiation: reflog-walk.c:write_str_in_full
Unexecuted instantiation: debug.c:write_str_in_full
Unexecuted instantiation: files-backend.c:write_str_in_full
Unexecuted instantiation: reftable-backend.c:write_str_in_full
Unexecuted instantiation: iterator.c:write_str_in_full
Unexecuted instantiation: packed-backend.c:write_str_in_full
Unexecuted instantiation: ref-cache.c:write_str_in_full
Unexecuted instantiation: refspec.c:write_str_in_full
Unexecuted instantiation: replace-object.c:write_str_in_full
Unexecuted instantiation: repo-settings.c:write_str_in_full
Unexecuted instantiation: repository.c:write_str_in_full
Unexecuted instantiation: resolve-undo.c:write_str_in_full
Unexecuted instantiation: revision.c:write_str_in_full
Unexecuted instantiation: run-command.c:write_str_in_full
Unexecuted instantiation: sequencer.c:write_str_in_full
Unexecuted instantiation: serve.c:write_str_in_full
Unexecuted instantiation: server-info.c:write_str_in_full
Unexecuted instantiation: setup.c:write_str_in_full
Unexecuted instantiation: shallow.c:write_str_in_full
Unexecuted instantiation: sideband.c:write_str_in_full
Unexecuted instantiation: sigchain.c:write_str_in_full
Unexecuted instantiation: sparse-index.c:write_str_in_full
Unexecuted instantiation: split-index.c:write_str_in_full
Unexecuted instantiation: stable-qsort.c:write_str_in_full
Unexecuted instantiation: statinfo.c:write_str_in_full
Unexecuted instantiation: strbuf.c:write_str_in_full
Unexecuted instantiation: streaming.c:write_str_in_full
Unexecuted instantiation: string-list.c:write_str_in_full
Unexecuted instantiation: strmap.c:write_str_in_full
Unexecuted instantiation: strvec.c:write_str_in_full
Unexecuted instantiation: sub-process.c:write_str_in_full
Unexecuted instantiation: submodule-config.c:write_str_in_full
Unexecuted instantiation: submodule.c:write_str_in_full
Unexecuted instantiation: symlinks.c:write_str_in_full
Unexecuted instantiation: tempfile.c:write_str_in_full
Unexecuted instantiation: thread-utils.c:write_str_in_full
Unexecuted instantiation: tmp-objdir.c:write_str_in_full
Unexecuted instantiation: trace.c:write_str_in_full
Unexecuted instantiation: trace2.c:write_str_in_full
Unexecuted instantiation: tr2_cfg.c:write_str_in_full
Unexecuted instantiation: tr2_cmd_name.c:write_str_in_full
Unexecuted instantiation: tr2_ctr.c:write_str_in_full
Unexecuted instantiation: tr2_dst.c:write_str_in_full
Unexecuted instantiation: tr2_sid.c:write_str_in_full
Unexecuted instantiation: tr2_sysenv.c:write_str_in_full
Unexecuted instantiation: tr2_tbuf.c:write_str_in_full
Unexecuted instantiation: tr2_tgt_event.c:write_str_in_full
Unexecuted instantiation: tr2_tgt_normal.c:write_str_in_full
Unexecuted instantiation: tr2_tgt_perf.c:write_str_in_full
Unexecuted instantiation: tr2_tls.c:write_str_in_full
Unexecuted instantiation: tr2_tmr.c:write_str_in_full
Unexecuted instantiation: trailer.c:write_str_in_full
Unexecuted instantiation: transport-helper.c:write_str_in_full
Unexecuted instantiation: transport.c:write_str_in_full
Unexecuted instantiation: tree-diff.c:write_str_in_full
Unexecuted instantiation: tree-walk.c:write_str_in_full
Unexecuted instantiation: tree.c:write_str_in_full
Unexecuted instantiation: unpack-trees.c:write_str_in_full
Unexecuted instantiation: url.c:write_str_in_full
Unexecuted instantiation: urlmatch.c:write_str_in_full
Unexecuted instantiation: usage.c:write_str_in_full
Unexecuted instantiation: userdiff.c:write_str_in_full
Unexecuted instantiation: utf8.c:write_str_in_full
Unexecuted instantiation: varint.c:write_str_in_full
Unexecuted instantiation: version.c:write_str_in_full
Unexecuted instantiation: versioncmp.c:write_str_in_full
Unexecuted instantiation: wildmatch.c:write_str_in_full
Unexecuted instantiation: wrapper.c:write_str_in_full
Unexecuted instantiation: write-or-die.c:write_str_in_full
Unexecuted instantiation: ws.c:write_str_in_full
Unexecuted instantiation: wt-status.c:write_str_in_full
Unexecuted instantiation: xdiff-interface.c:write_str_in_full
Unexecuted instantiation: unix-socket.c:write_str_in_full
Unexecuted instantiation: sha1dc_git.c:write_str_in_full
Unexecuted instantiation: sha1.c:write_str_in_full
Unexecuted instantiation: ubc_check.c:write_str_in_full
Unexecuted instantiation: sha256.c:write_str_in_full
Unexecuted instantiation: procinfo.c:write_str_in_full
Unexecuted instantiation: fopen.c:write_str_in_full
Unexecuted instantiation: strlcpy.c:write_str_in_full
Unexecuted instantiation: qsort_s.c:write_str_in_full
Unexecuted instantiation: alloc.c:write_str_in_full
Unexecuted instantiation: archive-tar.c:write_str_in_full
Unexecuted instantiation: archive-zip.c:write_str_in_full
Unexecuted instantiation: cbtree.c:write_str_in_full
Unexecuted instantiation: chdir-notify.c:write_str_in_full
Unexecuted instantiation: chunk-format.c:write_str_in_full
Unexecuted instantiation: nonblock.c:write_str_in_full
Unexecuted instantiation: fetch-negotiator.c:write_str_in_full
Unexecuted instantiation: linear-assignment.c:write_str_in_full
Unexecuted instantiation: list-objects-filter.c:write_str_in_full
Unexecuted instantiation: loose.c:write_str_in_full
Unexecuted instantiation: ls-refs.c:write_str_in_full
Unexecuted instantiation: match-trees.c:write_str_in_full
Unexecuted instantiation: default.c:write_str_in_full
Unexecuted instantiation: noop.c:write_str_in_full
Unexecuted instantiation: skipping.c:write_str_in_full
Unexecuted instantiation: protocol-caps.c:write_str_in_full
Unexecuted instantiation: xdiffi.c:write_str_in_full
Unexecuted instantiation: xemit.c:write_str_in_full
Unexecuted instantiation: xhistogram.c:write_str_in_full
Unexecuted instantiation: xmerge.c:write_str_in_full
Unexecuted instantiation: xpatience.c:write_str_in_full
Unexecuted instantiation: xprepare.c:write_str_in_full
Unexecuted instantiation: xutils.c:write_str_in_full
Unexecuted instantiation: error.c:write_str_in_full
Unexecuted instantiation: iter.c:write_str_in_full
Unexecuted instantiation: publicbasics.c:write_str_in_full
Unexecuted instantiation: reader.c:write_str_in_full
Unexecuted instantiation: record.c:write_str_in_full
Unexecuted instantiation: stack.c:write_str_in_full
Unexecuted instantiation: writer.c:write_str_in_full
Unexecuted instantiation: basics.c:write_str_in_full
Unexecuted instantiation: block.c:write_str_in_full
Unexecuted instantiation: blocksource.c:write_str_in_full
Unexecuted instantiation: merged.c:write_str_in_full
Unexecuted instantiation: pq.c:write_str_in_full
Unexecuted instantiation: common-main.c:write_str_in_full
52
53
/**
54
 * Open (and truncate) the file at path, write the contents of buf to it,
55
 * and close it. Dies if any errors are encountered.
56
 */
57
void write_file_buf(const char *path, const char *buf, size_t len);
58
59
/**
60
 * Like write_file_buf(), but format the contents into a buffer first.
61
 * Additionally, write_file() will append a newline if one is not already
62
 * present, making it convenient to write text files:
63
 *
64
 *   write_file(path, "counter: %d", ctr);
65
 */
66
__attribute__((format (printf, 2, 3)))
67
void write_file(const char *path, const char *fmt, ...);
68
69
/* Return 1 if the file is empty or does not exists, 0 otherwise. */
70
int is_empty_or_missing_file(const char *filename);
71
72
enum fsync_action {
73
  FSYNC_WRITEOUT_ONLY,
74
  FSYNC_HARDWARE_FLUSH
75
};
76
77
/*
78
 * Issues an fsync against the specified file according to the specified mode.
79
 *
80
 * FSYNC_WRITEOUT_ONLY attempts to use interfaces available on some operating
81
 * systems to flush the OS cache without issuing a flush command to the storage
82
 * controller. If those interfaces are unavailable, the function fails with
83
 * ENOSYS.
84
 *
85
 * FSYNC_HARDWARE_FLUSH does an OS writeout and hardware flush to ensure that
86
 * changes are durable. It is not expected to fail.
87
 */
88
int git_fsync(int fd, enum fsync_action action);
89
90
/*
91
 * Preserves errno, prints a message, but gives no warning for ENOENT.
92
 * Returns 0 on success, which includes trying to unlink an object that does
93
 * not exist.
94
 */
95
int unlink_or_warn(const char *path);
96
 /*
97
  * Tries to unlink file.  Returns 0 if unlink succeeded
98
  * or the file already didn't exist.  Returns -1 and
99
  * appends a message to err suitable for
100
  * 'error("%s", err->buf)' on error.
101
  */
102
int unlink_or_msg(const char *file, struct strbuf *err);
103
/*
104
 * Preserves errno, prints a message, but gives no warning for ENOENT.
105
 * Returns 0 on success, which includes trying to remove a directory that does
106
 * not exist.
107
 */
108
int rmdir_or_warn(const char *path);
109
110
/*
111
 * Call access(2), but warn for any error except "missing file"
112
 * (ENOENT or ENOTDIR).
113
 */
114
0
#define ACCESS_EACCES_OK (1U << 0)
115
int access_or_warn(const char *path, int mode, unsigned flag);
116
int access_or_die(const char *path, int mode, unsigned flag);
117
118
/* Warn on an inaccessible file if errno indicates this is an error */
119
int warn_on_fopen_errors(const char *path);
120
121
/*
122
 * Open with O_NOFOLLOW, or equivalent. Note that the fallback equivalent
123
 * may be racy. Do not use this as protection against an attacker who can
124
 * simultaneously create paths.
125
 */
126
int open_nofollow(const char *path, int flags);
127
128
void sleep_millisec(int millisec);
129
130
/*
131
 * Generate len bytes from the system cryptographically secure PRNG.
132
 * Returns 0 on success and -1 on error, setting errno.  The inability to
133
 * satisfy the full request is an error.
134
 */
135
int csprng_bytes(void *buf, size_t len);
136
137
/*
138
 * Returns a random uint32_t, uniformly distributed across all possible
139
 * values.
140
 */
141
uint32_t git_rand(void);
142
143
/* Provide log2 of the given `size_t`. */
144
static inline unsigned log2u(uintmax_t sz)
145
0
{
146
0
  unsigned l = 0;
147
148
  /*
149
   * Technically this isn't required, but it helps the compiler optimize
150
   * this to a `bsr` instruction.
151
   */
152
0
  if (!sz)
153
0
    return 0;
154
155
0
  for (; sz; sz >>= 1)
156
0
    l++;
157
158
0
  return l - 1;
159
0
}
Unexecuted instantiation: add.c:log2u
Unexecuted instantiation: am.c:log2u
Unexecuted instantiation: annotate.c:log2u
Unexecuted instantiation: apply.c:log2u
Unexecuted instantiation: archive.c:log2u
Unexecuted instantiation: bisect.c:log2u
Unexecuted instantiation: blame.c:log2u
Unexecuted instantiation: branch.c:log2u
Unexecuted instantiation: bugreport.c:log2u
Unexecuted instantiation: bundle.c:log2u
Unexecuted instantiation: cat-file.c:log2u
Unexecuted instantiation: check-attr.c:log2u
Unexecuted instantiation: check-ignore.c:log2u
Unexecuted instantiation: check-mailmap.c:log2u
Unexecuted instantiation: check-ref-format.c:log2u
Unexecuted instantiation: checkout--worker.c:log2u
Unexecuted instantiation: checkout-index.c:log2u
Unexecuted instantiation: checkout.c:log2u
Unexecuted instantiation: clean.c:log2u
Unexecuted instantiation: clone.c:log2u
Unexecuted instantiation: column.c:log2u
Unexecuted instantiation: commit-graph.c:log2u
Unexecuted instantiation: commit-tree.c:log2u
Unexecuted instantiation: commit.c:log2u
Unexecuted instantiation: config.c:log2u
Unexecuted instantiation: count-objects.c:log2u
Unexecuted instantiation: credential-cache--daemon.c:log2u
Unexecuted instantiation: credential-cache.c:log2u
Unexecuted instantiation: credential-store.c:log2u
Unexecuted instantiation: credential.c:log2u
Unexecuted instantiation: describe.c:log2u
Unexecuted instantiation: diagnose.c:log2u
Unexecuted instantiation: diff-files.c:log2u
Unexecuted instantiation: diff-index.c:log2u
Unexecuted instantiation: diff-tree.c:log2u
Unexecuted instantiation: diff.c:log2u
Unexecuted instantiation: difftool.c:log2u
Unexecuted instantiation: fast-export.c:log2u
Unexecuted instantiation: fast-import.c:log2u
Unexecuted instantiation: fetch-pack.c:log2u
Unexecuted instantiation: fetch.c:log2u
Unexecuted instantiation: fmt-merge-msg.c:log2u
Unexecuted instantiation: for-each-ref.c:log2u
Unexecuted instantiation: for-each-repo.c:log2u
Unexecuted instantiation: fsck.c:log2u
Unexecuted instantiation: fsmonitor--daemon.c:log2u
Unexecuted instantiation: gc.c:log2u
Unexecuted instantiation: get-tar-commit-id.c:log2u
Unexecuted instantiation: grep.c:log2u
Unexecuted instantiation: hash-object.c:log2u
Unexecuted instantiation: help.c:log2u
Unexecuted instantiation: hook.c:log2u
Unexecuted instantiation: index-pack.c:log2u
Unexecuted instantiation: init-db.c:log2u
Unexecuted instantiation: interpret-trailers.c:log2u
Unexecuted instantiation: log.c:log2u
Unexecuted instantiation: ls-files.c:log2u
Unexecuted instantiation: ls-remote.c:log2u
Unexecuted instantiation: ls-tree.c:log2u
Unexecuted instantiation: mailinfo.c:log2u
Unexecuted instantiation: mailsplit.c:log2u
Unexecuted instantiation: merge-base.c:log2u
Unexecuted instantiation: merge-file.c:log2u
Unexecuted instantiation: merge-index.c:log2u
Unexecuted instantiation: merge-ours.c:log2u
Unexecuted instantiation: merge-recursive.c:log2u
Unexecuted instantiation: merge-tree.c:log2u
Unexecuted instantiation: merge.c:log2u
Unexecuted instantiation: mktag.c:log2u
Unexecuted instantiation: mktree.c:log2u
Unexecuted instantiation: multi-pack-index.c:log2u
Unexecuted instantiation: mv.c:log2u
Unexecuted instantiation: name-rev.c:log2u
Unexecuted instantiation: notes.c:log2u
Unexecuted instantiation: pack-objects.c:log2u
Unexecuted instantiation: pack-redundant.c:log2u
Unexecuted instantiation: pack-refs.c:log2u
Unexecuted instantiation: patch-id.c:log2u
Unexecuted instantiation: prune-packed.c:log2u
Unexecuted instantiation: prune.c:log2u
Unexecuted instantiation: pull.c:log2u
Unexecuted instantiation: push.c:log2u
Unexecuted instantiation: range-diff.c:log2u
Unexecuted instantiation: read-tree.c:log2u
Unexecuted instantiation: rebase.c:log2u
Unexecuted instantiation: receive-pack.c:log2u
Unexecuted instantiation: reflog.c:log2u
Unexecuted instantiation: refs.c:log2u
Unexecuted instantiation: remote-ext.c:log2u
Unexecuted instantiation: remote-fd.c:log2u
Unexecuted instantiation: remote.c:log2u
Unexecuted instantiation: repack.c:log2u
Unexecuted instantiation: replace.c:log2u
Unexecuted instantiation: replay.c:log2u
Unexecuted instantiation: rerere.c:log2u
Unexecuted instantiation: reset.c:log2u
Unexecuted instantiation: rev-list.c:log2u
Unexecuted instantiation: rev-parse.c:log2u
Unexecuted instantiation: revert.c:log2u
Unexecuted instantiation: rm.c:log2u
Unexecuted instantiation: send-pack.c:log2u
Unexecuted instantiation: shortlog.c:log2u
Unexecuted instantiation: show-branch.c:log2u
Unexecuted instantiation: show-index.c:log2u
Unexecuted instantiation: show-ref.c:log2u
Unexecuted instantiation: sparse-checkout.c:log2u
Unexecuted instantiation: stash.c:log2u
Unexecuted instantiation: stripspace.c:log2u
Unexecuted instantiation: submodule--helper.c:log2u
Unexecuted instantiation: symbolic-ref.c:log2u
Unexecuted instantiation: tag.c:log2u
Unexecuted instantiation: unpack-file.c:log2u
Unexecuted instantiation: unpack-objects.c:log2u
Unexecuted instantiation: update-index.c:log2u
Unexecuted instantiation: update-ref.c:log2u
Unexecuted instantiation: update-server-info.c:log2u
Unexecuted instantiation: upload-archive.c:log2u
Unexecuted instantiation: upload-pack.c:log2u
Unexecuted instantiation: var.c:log2u
Unexecuted instantiation: verify-commit.c:log2u
Unexecuted instantiation: verify-pack.c:log2u
Unexecuted instantiation: verify-tag.c:log2u
Unexecuted instantiation: worktree.c:log2u
Unexecuted instantiation: write-tree.c:log2u
Unexecuted instantiation: git.c:log2u
Unexecuted instantiation: fuzz-commit-graph.c:log2u
Unexecuted instantiation: abspath.c:log2u
Unexecuted instantiation: add-interactive.c:log2u
Unexecuted instantiation: add-patch.c:log2u
Unexecuted instantiation: advice.c:log2u
Unexecuted instantiation: alias.c:log2u
Unexecuted instantiation: attr.c:log2u
Unexecuted instantiation: base85.c:log2u
Unexecuted instantiation: blob.c:log2u
Unexecuted instantiation: bloom.c:log2u
Unexecuted instantiation: bulk-checkin.c:log2u
Unexecuted instantiation: bundle-uri.c:log2u
Unexecuted instantiation: cache-tree.c:log2u
Unexecuted instantiation: color.c:log2u
Unexecuted instantiation: combine-diff.c:log2u
Unexecuted instantiation: commit-reach.c:log2u
Unexecuted instantiation: terminal.c:log2u
Unexecuted instantiation: connect.c:log2u
Unexecuted instantiation: connected.c:log2u
Unexecuted instantiation: convert.c:log2u
Unexecuted instantiation: copy.c:log2u
Unexecuted instantiation: csum-file.c:log2u
Unexecuted instantiation: ctype.c:log2u
Unexecuted instantiation: date.c:log2u
Unexecuted instantiation: decorate.c:log2u
Unexecuted instantiation: delta-islands.c:log2u
Unexecuted instantiation: diff-delta.c:log2u
Unexecuted instantiation: diff-merges.c:log2u
Unexecuted instantiation: diff-lib.c:log2u
Unexecuted instantiation: diff-no-index.c:log2u
Unexecuted instantiation: diffcore-break.c:log2u
Unexecuted instantiation: diffcore-delta.c:log2u
Unexecuted instantiation: diffcore-order.c:log2u
Unexecuted instantiation: diffcore-pickaxe.c:log2u
Unexecuted instantiation: diffcore-rename.c:log2u
Unexecuted instantiation: diffcore-rotate.c:log2u
Unexecuted instantiation: dir-iterator.c:log2u
Unexecuted instantiation: dir.c:log2u
Unexecuted instantiation: editor.c:log2u
Unexecuted instantiation: entry.c:log2u
Unexecuted instantiation: environment.c:log2u
Unexecuted instantiation: bitmap.c:log2u
Unexecuted instantiation: ewah_bitmap.c:log2u
Unexecuted instantiation: ewah_io.c:log2u
Unexecuted instantiation: ewah_rlw.c:log2u
Unexecuted instantiation: exec-cmd.c:log2u
Unexecuted instantiation: fsmonitor.c:log2u
Unexecuted instantiation: fsmonitor-ipc.c:log2u
Unexecuted instantiation: fsmonitor-settings.c:log2u
Unexecuted instantiation: gettext.c:log2u
Unexecuted instantiation: git-zlib.c:log2u
Unexecuted instantiation: gpg-interface.c:log2u
Unexecuted instantiation: graph.c:log2u
Unexecuted instantiation: hash-lookup.c:log2u
Unexecuted instantiation: hashmap.c:log2u
Unexecuted instantiation: hex.c:log2u
Unexecuted instantiation: hex-ll.c:log2u
Unexecuted instantiation: ident.c:log2u
Unexecuted instantiation: json-writer.c:log2u
Unexecuted instantiation: kwset.c:log2u
Unexecuted instantiation: levenshtein.c:log2u
Unexecuted instantiation: line-log.c:log2u
Unexecuted instantiation: line-range.c:log2u
Unexecuted instantiation: list-objects-filter-options.c:log2u
Unexecuted instantiation: list-objects.c:log2u
Unexecuted instantiation: lockfile.c:log2u
Unexecuted instantiation: log-tree.c:log2u
Unexecuted instantiation: mailmap.c:log2u
Unexecuted instantiation: mem-pool.c:log2u
Unexecuted instantiation: merge-blobs.c:log2u
Unexecuted instantiation: merge-ll.c:log2u
Unexecuted instantiation: merge-ort.c:log2u
Unexecuted instantiation: merge-ort-wrappers.c:log2u
Unexecuted instantiation: midx.c:log2u
Unexecuted instantiation: midx-write.c:log2u
Unexecuted instantiation: name-hash.c:log2u
Unexecuted instantiation: notes-cache.c:log2u
Unexecuted instantiation: notes-merge.c:log2u
Unexecuted instantiation: notes-utils.c:log2u
Unexecuted instantiation: object-file-convert.c:log2u
Unexecuted instantiation: object-file.c:log2u
Unexecuted instantiation: object-name.c:log2u
Unexecuted instantiation: object.c:log2u
Unexecuted instantiation: oid-array.c:log2u
Unexecuted instantiation: oidmap.c:log2u
Unexecuted instantiation: oidset.c:log2u
Unexecuted instantiation: oidtree.c:log2u
Unexecuted instantiation: pack-bitmap-write.c:log2u
Unexecuted instantiation: pack-bitmap.c:log2u
Unexecuted instantiation: pack-check.c:log2u
Unexecuted instantiation: pack-mtimes.c:log2u
Unexecuted instantiation: pack-revindex.c:log2u
Unexecuted instantiation: pack-write.c:log2u
Unexecuted instantiation: packfile.c:log2u
Unexecuted instantiation: pager.c:log2u
Unexecuted instantiation: parallel-checkout.c:log2u
Unexecuted instantiation: parse.c:log2u
Unexecuted instantiation: parse-options-cb.c:log2u
Unexecuted instantiation: parse-options.c:log2u
Unexecuted instantiation: patch-delta.c:log2u
Unexecuted instantiation: patch-ids.c:log2u
Unexecuted instantiation: path.c:log2u
Unexecuted instantiation: pathspec.c:log2u
Unexecuted instantiation: pkt-line.c:log2u
Unexecuted instantiation: preload-index.c:log2u
Unexecuted instantiation: pretty.c:log2u
Unexecuted instantiation: prio-queue.c:log2u
Unexecuted instantiation: progress.c:log2u
Unexecuted instantiation: promisor-remote.c:log2u
Unexecuted instantiation: prompt.c:log2u
Unexecuted instantiation: protocol.c:log2u
Unexecuted instantiation: pseudo-merge.c:log2u
Unexecuted instantiation: quote.c:log2u
Unexecuted instantiation: reachable.c:log2u
Unexecuted instantiation: read-cache.c:log2u
Unexecuted instantiation: rebase-interactive.c:log2u
Unexecuted instantiation: ref-filter.c:log2u
Unexecuted instantiation: reflog-walk.c:log2u
Unexecuted instantiation: debug.c:log2u
Unexecuted instantiation: files-backend.c:log2u
Unexecuted instantiation: reftable-backend.c:log2u
Unexecuted instantiation: iterator.c:log2u
Unexecuted instantiation: packed-backend.c:log2u
Unexecuted instantiation: ref-cache.c:log2u
Unexecuted instantiation: refspec.c:log2u
Unexecuted instantiation: replace-object.c:log2u
Unexecuted instantiation: repo-settings.c:log2u
Unexecuted instantiation: repository.c:log2u
Unexecuted instantiation: resolve-undo.c:log2u
Unexecuted instantiation: revision.c:log2u
Unexecuted instantiation: run-command.c:log2u
Unexecuted instantiation: sequencer.c:log2u
Unexecuted instantiation: serve.c:log2u
Unexecuted instantiation: server-info.c:log2u
Unexecuted instantiation: setup.c:log2u
Unexecuted instantiation: shallow.c:log2u
Unexecuted instantiation: sideband.c:log2u
Unexecuted instantiation: sigchain.c:log2u
Unexecuted instantiation: sparse-index.c:log2u
Unexecuted instantiation: split-index.c:log2u
Unexecuted instantiation: stable-qsort.c:log2u
Unexecuted instantiation: statinfo.c:log2u
Unexecuted instantiation: strbuf.c:log2u
Unexecuted instantiation: streaming.c:log2u
Unexecuted instantiation: string-list.c:log2u
Unexecuted instantiation: strmap.c:log2u
Unexecuted instantiation: strvec.c:log2u
Unexecuted instantiation: sub-process.c:log2u
Unexecuted instantiation: submodule-config.c:log2u
Unexecuted instantiation: submodule.c:log2u
Unexecuted instantiation: symlinks.c:log2u
Unexecuted instantiation: tempfile.c:log2u
Unexecuted instantiation: thread-utils.c:log2u
Unexecuted instantiation: tmp-objdir.c:log2u
Unexecuted instantiation: trace.c:log2u
Unexecuted instantiation: trace2.c:log2u
Unexecuted instantiation: tr2_cfg.c:log2u
Unexecuted instantiation: tr2_cmd_name.c:log2u
Unexecuted instantiation: tr2_ctr.c:log2u
Unexecuted instantiation: tr2_dst.c:log2u
Unexecuted instantiation: tr2_sid.c:log2u
Unexecuted instantiation: tr2_sysenv.c:log2u
Unexecuted instantiation: tr2_tbuf.c:log2u
Unexecuted instantiation: tr2_tgt_event.c:log2u
Unexecuted instantiation: tr2_tgt_normal.c:log2u
Unexecuted instantiation: tr2_tgt_perf.c:log2u
Unexecuted instantiation: tr2_tls.c:log2u
Unexecuted instantiation: tr2_tmr.c:log2u
Unexecuted instantiation: trailer.c:log2u
Unexecuted instantiation: transport-helper.c:log2u
Unexecuted instantiation: transport.c:log2u
Unexecuted instantiation: tree-diff.c:log2u
Unexecuted instantiation: tree-walk.c:log2u
Unexecuted instantiation: tree.c:log2u
Unexecuted instantiation: unpack-trees.c:log2u
Unexecuted instantiation: url.c:log2u
Unexecuted instantiation: urlmatch.c:log2u
Unexecuted instantiation: usage.c:log2u
Unexecuted instantiation: userdiff.c:log2u
Unexecuted instantiation: utf8.c:log2u
Unexecuted instantiation: varint.c:log2u
Unexecuted instantiation: version.c:log2u
Unexecuted instantiation: versioncmp.c:log2u
Unexecuted instantiation: wildmatch.c:log2u
Unexecuted instantiation: wrapper.c:log2u
Unexecuted instantiation: write-or-die.c:log2u
Unexecuted instantiation: ws.c:log2u
Unexecuted instantiation: wt-status.c:log2u
Unexecuted instantiation: xdiff-interface.c:log2u
Unexecuted instantiation: unix-socket.c:log2u
Unexecuted instantiation: sha1dc_git.c:log2u
Unexecuted instantiation: sha1.c:log2u
Unexecuted instantiation: ubc_check.c:log2u
Unexecuted instantiation: sha256.c:log2u
Unexecuted instantiation: procinfo.c:log2u
Unexecuted instantiation: fopen.c:log2u
Unexecuted instantiation: strlcpy.c:log2u
Unexecuted instantiation: qsort_s.c:log2u
Unexecuted instantiation: alloc.c:log2u
Unexecuted instantiation: archive-tar.c:log2u
Unexecuted instantiation: archive-zip.c:log2u
Unexecuted instantiation: cbtree.c:log2u
Unexecuted instantiation: chdir-notify.c:log2u
Unexecuted instantiation: chunk-format.c:log2u
Unexecuted instantiation: nonblock.c:log2u
Unexecuted instantiation: fetch-negotiator.c:log2u
Unexecuted instantiation: linear-assignment.c:log2u
Unexecuted instantiation: list-objects-filter.c:log2u
Unexecuted instantiation: loose.c:log2u
Unexecuted instantiation: ls-refs.c:log2u
Unexecuted instantiation: match-trees.c:log2u
Unexecuted instantiation: default.c:log2u
Unexecuted instantiation: noop.c:log2u
Unexecuted instantiation: skipping.c:log2u
Unexecuted instantiation: protocol-caps.c:log2u
Unexecuted instantiation: xdiffi.c:log2u
Unexecuted instantiation: xemit.c:log2u
Unexecuted instantiation: xhistogram.c:log2u
Unexecuted instantiation: xmerge.c:log2u
Unexecuted instantiation: xpatience.c:log2u
Unexecuted instantiation: xprepare.c:log2u
Unexecuted instantiation: xutils.c:log2u
Unexecuted instantiation: error.c:log2u
Unexecuted instantiation: iter.c:log2u
Unexecuted instantiation: publicbasics.c:log2u
Unexecuted instantiation: reader.c:log2u
Unexecuted instantiation: record.c:log2u
Unexecuted instantiation: stack.c:log2u
Unexecuted instantiation: writer.c:log2u
Unexecuted instantiation: basics.c:log2u
Unexecuted instantiation: block.c:log2u
Unexecuted instantiation: blocksource.c:log2u
Unexecuted instantiation: merged.c:log2u
Unexecuted instantiation: pq.c:log2u
Unexecuted instantiation: common-main.c:log2u
160
161
#endif /* WRAPPER_H */