MCPcopy Create free account
hub / github.com/git/git / uic_printf

Function uic_printf

server-info.c:38–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

36}
37
38__attribute__((format (printf, 2, 3)))
39static int uic_printf(struct update_info_ctx *uic, const char *fmt, ...)
40{
41 va_list ap;
42 int ret = -1;
43
44 va_start(ap, fmt);
45
46 if (uic_is_stale(uic)) {
47 ret = vfprintf(uic->cur_fp, fmt, ap);
48 } else {
49 ssize_t r;
50 struct strbuf *cur = &uic->cur_sb;
51 struct strbuf *old = &uic->old_sb;
52
53 strbuf_reset(cur);
54 strbuf_vinsertf(cur, 0, fmt, ap);
55
56 strbuf_reset(old);
57 strbuf_grow(old, cur->len);
58 r = fread(old->buf, 1, cur->len, uic->old_fp);
59 if (r != cur->len || memcmp(old->buf, cur->buf, r))
60 uic_mark_stale(uic);
61
62 if (fwrite(cur->buf, 1, cur->len, uic->cur_fp) == cur->len)
63 ret = 0;
64 }
65
66 va_end(ap);
67
68 return ret;
69}
70
71/*
72 * Create the file "path" by writing to a temporary file and renaming

Callers 2

add_info_refFunction · 0.85
write_pack_info_fileFunction · 0.85

Calls 4

uic_is_staleFunction · 0.85
strbuf_vinsertfFunction · 0.85
strbuf_growFunction · 0.85
uic_mark_staleFunction · 0.85

Tested by

no test coverage detected