revert(3p/git): Revert merge of git upstream at v2.26.2
This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
This commit is contained in:
parent
6f8fbf4aa4
commit
93ba78d6f4
1006 changed files with 60537 additions and 148724 deletions
120
third_party/git/trace2/tr2_dst.c
vendored
120
third_party/git/trace2/tr2_dst.c
vendored
|
|
@ -8,19 +8,6 @@
|
|||
*/
|
||||
#define MAX_AUTO_ATTEMPTS 10
|
||||
|
||||
/*
|
||||
* Sentinel file used to detect when we should discard new traces to avoid
|
||||
* writing too many trace files to a directory.
|
||||
*/
|
||||
#define DISCARD_SENTINEL_NAME "git-trace2-discard"
|
||||
|
||||
/*
|
||||
* When set to zero, disables directory file count checks. Otherwise, controls
|
||||
* how many files we can write to a directory before entering discard mode.
|
||||
* This can be overridden via the TR2_SYSENV_MAX_FILES setting.
|
||||
*/
|
||||
static int tr2env_max_files = 0;
|
||||
|
||||
static int tr2_dst_want_warning(void)
|
||||
{
|
||||
static int tr2env_dst_debug = -1;
|
||||
|
|
@ -45,75 +32,9 @@ void tr2_dst_trace_disable(struct tr2_dst *dst)
|
|||
dst->need_close = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check to make sure we're not overloading the target directory with too many
|
||||
* files. First get the threshold (if present) from the config or envvar. If
|
||||
* it's zero or unset, disable this check. Next check for the presence of a
|
||||
* sentinel file, then check file count.
|
||||
*
|
||||
* Returns 0 if tracing should proceed as normal. Returns 1 if the sentinel file
|
||||
* already exists, which means tracing should be disabled. Returns -1 if there
|
||||
* are too many files but there was no sentinel file, which means we have
|
||||
* created and should write traces to the sentinel file.
|
||||
*
|
||||
* We expect that some trace processing system is gradually collecting files
|
||||
* from the target directory; after it removes the sentinel file we'll start
|
||||
* writing traces again.
|
||||
*/
|
||||
static int tr2_dst_too_many_files(struct tr2_dst *dst, const char *tgt_prefix)
|
||||
{
|
||||
int file_count = 0, max_files = 0, ret = 0;
|
||||
const char *max_files_var;
|
||||
DIR *dirp;
|
||||
struct strbuf path = STRBUF_INIT, sentinel_path = STRBUF_INIT;
|
||||
struct stat statbuf;
|
||||
|
||||
/* Get the config or envvar and decide if we should continue this check */
|
||||
max_files_var = tr2_sysenv_get(TR2_SYSENV_MAX_FILES);
|
||||
if (max_files_var && *max_files_var && ((max_files = atoi(max_files_var)) >= 0))
|
||||
tr2env_max_files = max_files;
|
||||
|
||||
if (!tr2env_max_files) {
|
||||
ret = 0;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
strbuf_addstr(&path, tgt_prefix);
|
||||
if (!is_dir_sep(path.buf[path.len - 1])) {
|
||||
strbuf_addch(&path, '/');
|
||||
}
|
||||
|
||||
/* check sentinel */
|
||||
strbuf_addbuf(&sentinel_path, &path);
|
||||
strbuf_addstr(&sentinel_path, DISCARD_SENTINEL_NAME);
|
||||
if (!stat(sentinel_path.buf, &statbuf)) {
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* check file count */
|
||||
dirp = opendir(path.buf);
|
||||
while (file_count < tr2env_max_files && dirp && readdir(dirp))
|
||||
file_count++;
|
||||
if (dirp)
|
||||
closedir(dirp);
|
||||
|
||||
if (file_count >= tr2env_max_files) {
|
||||
dst->too_many_files = 1;
|
||||
dst->fd = open(sentinel_path.buf, O_WRONLY | O_CREAT | O_EXCL, 0666);
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
strbuf_release(&path);
|
||||
strbuf_release(&sentinel_path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tr2_dst_try_auto_path(struct tr2_dst *dst, const char *tgt_prefix)
|
||||
{
|
||||
int too_many_files;
|
||||
int fd;
|
||||
const char *last_slash, *sid = tr2_sid_get();
|
||||
struct strbuf path = STRBUF_INIT;
|
||||
size_t base_path_len;
|
||||
|
|
@ -129,29 +50,18 @@ static int tr2_dst_try_auto_path(struct tr2_dst *dst, const char *tgt_prefix)
|
|||
strbuf_addstr(&path, sid);
|
||||
base_path_len = path.len;
|
||||
|
||||
too_many_files = tr2_dst_too_many_files(dst, tgt_prefix);
|
||||
if (!too_many_files) {
|
||||
for (attempt_count = 0; attempt_count < MAX_AUTO_ATTEMPTS; attempt_count++) {
|
||||
if (attempt_count > 0) {
|
||||
strbuf_setlen(&path, base_path_len);
|
||||
strbuf_addf(&path, ".%d", attempt_count);
|
||||
}
|
||||
|
||||
dst->fd = open(path.buf, O_WRONLY | O_CREAT | O_EXCL, 0666);
|
||||
if (dst->fd != -1)
|
||||
break;
|
||||
for (attempt_count = 0; attempt_count < MAX_AUTO_ATTEMPTS; attempt_count++) {
|
||||
if (attempt_count > 0) {
|
||||
strbuf_setlen(&path, base_path_len);
|
||||
strbuf_addf(&path, ".%d", attempt_count);
|
||||
}
|
||||
} else if (too_many_files == 1) {
|
||||
strbuf_release(&path);
|
||||
if (tr2_dst_want_warning())
|
||||
warning("trace2: not opening %s trace file due to too "
|
||||
"many files in target directory %s",
|
||||
tr2_sysenv_display_name(dst->sysenv_var),
|
||||
tgt_prefix);
|
||||
return 0;
|
||||
|
||||
fd = open(path.buf, O_WRONLY | O_CREAT | O_EXCL, 0666);
|
||||
if (fd != -1)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dst->fd == -1) {
|
||||
if (fd == -1) {
|
||||
if (tr2_dst_want_warning())
|
||||
warning("trace2: could not open '%.*s' for '%s' tracing: %s",
|
||||
(int) base_path_len, path.buf,
|
||||
|
|
@ -165,6 +75,7 @@ static int tr2_dst_try_auto_path(struct tr2_dst *dst, const char *tgt_prefix)
|
|||
|
||||
strbuf_release(&path);
|
||||
|
||||
dst->fd = fd;
|
||||
dst->need_close = 1;
|
||||
dst->initialized = 1;
|
||||
|
||||
|
|
@ -304,8 +215,13 @@ connected:
|
|||
static void tr2_dst_malformed_warning(struct tr2_dst *dst,
|
||||
const char *tgt_value)
|
||||
{
|
||||
warning("trace2: unknown value for '%s': '%s'",
|
||||
tr2_sysenv_display_name(dst->sysenv_var), tgt_value);
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf, "trace2: unknown value for '%s': '%s'",
|
||||
tr2_sysenv_display_name(dst->sysenv_var), tgt_value);
|
||||
warning("%s", buf.buf);
|
||||
|
||||
strbuf_release(&buf);
|
||||
}
|
||||
|
||||
int tr2_dst_get_trace_fd(struct tr2_dst *dst)
|
||||
|
|
|
|||
1
third_party/git/trace2/tr2_dst.h
vendored
1
third_party/git/trace2/tr2_dst.h
vendored
|
|
@ -9,7 +9,6 @@ struct tr2_dst {
|
|||
int fd;
|
||||
unsigned int initialized : 1;
|
||||
unsigned int need_close : 1;
|
||||
unsigned int too_many_files : 1;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
2
third_party/git/trace2/tr2_sid.c
vendored
2
third_party/git/trace2/tr2_sid.c
vendored
|
|
@ -19,7 +19,7 @@ static int tr2sid_nr_git_parents;
|
|||
* "H<first_8_chars_of_sha1_of_hostname>"
|
||||
* "Localhost" when no hostname.
|
||||
*
|
||||
* where <process> is a 9 character string containing the least significant
|
||||
* where <process> is a 9 character string containing the least signifcant
|
||||
* 32 bits in the process-id.
|
||||
* "P<pid>"
|
||||
* (This is an abribrary choice. On most systems pid_t is a 32 bit value,
|
||||
|
|
|
|||
3
third_party/git/trace2/tr2_sysenv.c
vendored
3
third_party/git/trace2/tr2_sysenv.c
vendored
|
|
@ -49,9 +49,6 @@ static struct tr2_sysenv_entry tr2_sysenv_settings[] = {
|
|||
"trace2.perftarget" },
|
||||
[TR2_SYSENV_PERF_BRIEF] = { "GIT_TRACE2_PERF_BRIEF",
|
||||
"trace2.perfbrief" },
|
||||
|
||||
[TR2_SYSENV_MAX_FILES] = { "GIT_TRACE2_MAX_FILES",
|
||||
"trace2.maxfiles" },
|
||||
};
|
||||
/* clang-format on */
|
||||
|
||||
|
|
|
|||
2
third_party/git/trace2/tr2_sysenv.h
vendored
2
third_party/git/trace2/tr2_sysenv.h
vendored
|
|
@ -24,8 +24,6 @@ enum tr2_sysenv_variable {
|
|||
TR2_SYSENV_PERF,
|
||||
TR2_SYSENV_PERF_BRIEF,
|
||||
|
||||
TR2_SYSENV_MAX_FILES,
|
||||
|
||||
TR2_SYSENV_MUST_BE_LAST
|
||||
};
|
||||
|
||||
|
|
|
|||
36
third_party/git/trace2/tr2_tgt_event.c
vendored
36
third_party/git/trace2/tr2_tgt_event.c
vendored
|
|
@ -10,17 +10,16 @@
|
|||
#include "trace2/tr2_tgt.h"
|
||||
#include "trace2/tr2_tls.h"
|
||||
|
||||
static struct tr2_dst tr2dst_event = { TR2_SYSENV_EVENT, 0, 0, 0, 0 };
|
||||
static struct tr2_dst tr2dst_event = { TR2_SYSENV_EVENT, 0, 0, 0 };
|
||||
|
||||
/*
|
||||
* The version number of the JSON data generated by the EVENT target in this
|
||||
* source file. The version should be incremented if new event types are added,
|
||||
* if existing fields are removed, or if there are significant changes in
|
||||
* interpretation of existing events or fields. Smaller changes, such as adding
|
||||
* a new field to an existing event, do not require an increment to the EVENT
|
||||
* format version.
|
||||
* The version number of the JSON data generated by the EVENT target
|
||||
* in this source file. Update this if you make a significant change
|
||||
* to the JSON fields or message structure. You probably do not need
|
||||
* to update this if you just add another call to one of the existing
|
||||
* TRACE2 API methods.
|
||||
*/
|
||||
#define TR2_EVENT_VERSION "2"
|
||||
#define TR2_EVENT_VERSION "1"
|
||||
|
||||
/*
|
||||
* Region nesting limit for messages written to the event target.
|
||||
|
|
@ -108,19 +107,6 @@ static void event_fmt_prepare(const char *event_name, const char *file,
|
|||
jw_object_intmax(jw, "repo", repo->trace2_repo_id);
|
||||
}
|
||||
|
||||
static void fn_too_many_files_fl(const char *file, int line)
|
||||
{
|
||||
const char *event_name = "too_many_files";
|
||||
struct json_writer jw = JSON_WRITER_INIT;
|
||||
|
||||
jw_object_begin(&jw, 0);
|
||||
event_fmt_prepare(event_name, file, line, NULL, &jw);
|
||||
jw_end(&jw);
|
||||
|
||||
tr2_dst_write_line(&tr2dst_event, &jw.json);
|
||||
jw_release(&jw);
|
||||
}
|
||||
|
||||
static void fn_version_fl(const char *file, int line)
|
||||
{
|
||||
const char *event_name = "version";
|
||||
|
|
@ -134,9 +120,6 @@ static void fn_version_fl(const char *file, int line)
|
|||
|
||||
tr2_dst_write_line(&tr2dst_event, &jw.json);
|
||||
jw_release(&jw);
|
||||
|
||||
if (tr2dst_event.too_many_files)
|
||||
fn_too_many_files_fl(file, line);
|
||||
}
|
||||
|
||||
static void fn_start_fl(const char *file, int line,
|
||||
|
|
@ -222,6 +205,11 @@ static void maybe_add_string_va(struct json_writer *jw, const char *field_name,
|
|||
strbuf_release(&buf);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fmt && *fmt) {
|
||||
jw_object_string(jw, field_name, fmt);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_error_va_fl(const char *file, int line, const char *fmt,
|
||||
|
|
|
|||
37
third_party/git/trace2/tr2_tgt_normal.c
vendored
37
third_party/git/trace2/tr2_tgt_normal.c
vendored
|
|
@ -9,7 +9,7 @@
|
|||
#include "trace2/tr2_tgt.h"
|
||||
#include "trace2/tr2_tls.h"
|
||||
|
||||
static struct tr2_dst tr2dst_normal = { TR2_SYSENV_NORMAL, 0, 0, 0, 0 };
|
||||
static struct tr2_dst tr2dst_normal = { TR2_SYSENV_NORMAL, 0, 0, 0 };
|
||||
|
||||
/*
|
||||
* Use the TR2_SYSENV_NORMAL_BRIEF setting to omit the "<time> <file>:<line>"
|
||||
|
|
@ -87,7 +87,7 @@ static void fn_start_fl(const char *file, int line,
|
|||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addstr(&buf_payload, "start ");
|
||||
sq_append_quote_argv_pretty(&buf_payload, argv);
|
||||
sq_quote_argv_pretty(&buf_payload, argv);
|
||||
normal_io_write_fl(file, line, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
}
|
||||
|
|
@ -135,6 +135,11 @@ static void maybe_append_string_va(struct strbuf *buf, const char *fmt,
|
|||
va_end(copy_ap);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fmt && *fmt) {
|
||||
strbuf_addstr(buf, fmt);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_error_va_fl(const char *file, int line, const char *fmt,
|
||||
|
|
@ -142,11 +147,8 @@ static void fn_error_va_fl(const char *file, int line, const char *fmt,
|
|||
{
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addstr(&buf_payload, "error");
|
||||
if (fmt && *fmt) {
|
||||
strbuf_addch(&buf_payload, ' ');
|
||||
maybe_append_string_va(&buf_payload, fmt, ap);
|
||||
}
|
||||
strbuf_addstr(&buf_payload, "error ");
|
||||
maybe_append_string_va(&buf_payload, fmt, ap);
|
||||
normal_io_write_fl(file, line, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
}
|
||||
|
|
@ -186,8 +188,8 @@ static void fn_alias_fl(const char *file, int line, const char *alias,
|
|||
{
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf_payload, "alias %s -> ", alias);
|
||||
sq_append_quote_argv_pretty(&buf_payload, argv);
|
||||
strbuf_addf(&buf_payload, "alias %s ->", alias);
|
||||
sq_quote_argv_pretty(&buf_payload, argv);
|
||||
normal_io_write_fl(file, line, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
}
|
||||
|
|
@ -198,12 +200,12 @@ static void fn_child_start_fl(const char *file, int line,
|
|||
{
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf_payload, "child_start[%d]", cmd->trace2_child_id);
|
||||
strbuf_addf(&buf_payload, "child_start[%d] ", cmd->trace2_child_id);
|
||||
|
||||
if (cmd->dir) {
|
||||
strbuf_addstr(&buf_payload, " cd ");
|
||||
strbuf_addstr(&buf_payload, " cd");
|
||||
sq_quote_buf_pretty(&buf_payload, cmd->dir);
|
||||
strbuf_addstr(&buf_payload, ";");
|
||||
strbuf_addstr(&buf_payload, "; ");
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -211,10 +213,9 @@ static void fn_child_start_fl(const char *file, int line,
|
|||
* See trace_add_env() in run-command.c as used by original trace.c
|
||||
*/
|
||||
|
||||
strbuf_addch(&buf_payload, ' ');
|
||||
if (cmd->git_cmd)
|
||||
strbuf_addstr(&buf_payload, "git ");
|
||||
sq_append_quote_argv_pretty(&buf_payload, cmd->argv);
|
||||
strbuf_addstr(&buf_payload, "git");
|
||||
sq_quote_argv_pretty(&buf_payload, cmd->argv);
|
||||
|
||||
normal_io_write_fl(file, line, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
|
|
@ -239,11 +240,9 @@ static void fn_exec_fl(const char *file, int line, uint64_t us_elapsed_absolute,
|
|||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf_payload, "exec[%d] ", exec_id);
|
||||
if (exe) {
|
||||
if (exe)
|
||||
strbuf_addstr(&buf_payload, exe);
|
||||
strbuf_addch(&buf_payload, ' ');
|
||||
}
|
||||
sq_append_quote_argv_pretty(&buf_payload, argv);
|
||||
sq_quote_argv_pretty(&buf_payload, argv);
|
||||
normal_io_write_fl(file, line, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
}
|
||||
|
|
|
|||
108
third_party/git/trace2/tr2_tgt_perf.c
vendored
108
third_party/git/trace2/tr2_tgt_perf.c
vendored
|
|
@ -11,7 +11,7 @@
|
|||
#include "trace2/tr2_tgt.h"
|
||||
#include "trace2/tr2_tls.h"
|
||||
|
||||
static struct tr2_dst tr2dst_perf = { TR2_SYSENV_PERF, 0, 0, 0, 0 };
|
||||
static struct tr2_dst tr2dst_perf = { TR2_SYSENV_PERF, 0, 0, 0 };
|
||||
|
||||
/*
|
||||
* Use TR2_SYSENV_PERF_BRIEF to omit the "<time> <file>:<line>"
|
||||
|
|
@ -21,14 +21,17 @@ static struct tr2_dst tr2dst_perf = { TR2_SYSENV_PERF, 0, 0, 0, 0 };
|
|||
*/
|
||||
static int tr2env_perf_be_brief;
|
||||
|
||||
#define TR2FMT_PERF_FL_WIDTH (28)
|
||||
#define TR2FMT_PERF_FL_WIDTH (50)
|
||||
#define TR2FMT_PERF_MAX_EVENT_NAME (12)
|
||||
#define TR2FMT_PERF_REPO_WIDTH (3)
|
||||
#define TR2FMT_PERF_CATEGORY_WIDTH (12)
|
||||
#define TR2FMT_PERF_REPO_WIDTH (4)
|
||||
#define TR2FMT_PERF_CATEGORY_WIDTH (10)
|
||||
|
||||
#define TR2_DOTS_BUFFER_SIZE (100)
|
||||
#define TR2_INDENT (2)
|
||||
#define TR2_INDENT_LENGTH(ctx) (((ctx)->nr_open_regions - 1) * TR2_INDENT)
|
||||
|
||||
static struct strbuf dots = STRBUF_INIT;
|
||||
|
||||
static int fn_init(void)
|
||||
{
|
||||
int want = tr2_dst_trace_want(&tr2dst_perf);
|
||||
|
|
@ -38,6 +41,8 @@ static int fn_init(void)
|
|||
if (!want)
|
||||
return want;
|
||||
|
||||
strbuf_addchars(&dots, '.', TR2_DOTS_BUFFER_SIZE);
|
||||
|
||||
brief = tr2_sysenv_get(TR2_SYSENV_PERF_BRIEF);
|
||||
if (brief && *brief &&
|
||||
((want_brief = git_parse_maybe_bool(brief)) != -1))
|
||||
|
|
@ -49,6 +54,8 @@ static int fn_init(void)
|
|||
static void fn_term(void)
|
||||
{
|
||||
tr2_dst_trace_disable(&tr2dst_perf);
|
||||
|
||||
strbuf_release(&dots);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -72,36 +79,17 @@ static void perf_fmt_prepare(const char *event_name,
|
|||
|
||||
if (!tr2env_perf_be_brief) {
|
||||
struct tr2_tbuf tb_now;
|
||||
size_t fl_end_col;
|
||||
|
||||
tr2_tbuf_local_time(&tb_now);
|
||||
strbuf_addstr(buf, tb_now.buf);
|
||||
strbuf_addch(buf, ' ');
|
||||
|
||||
fl_end_col = buf->len + TR2FMT_PERF_FL_WIDTH;
|
||||
|
||||
if (file && *file) {
|
||||
struct strbuf buf_fl = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf_fl, "%s:%d", file, line);
|
||||
|
||||
if (buf_fl.len <= TR2FMT_PERF_FL_WIDTH)
|
||||
strbuf_addbuf(buf, &buf_fl);
|
||||
else {
|
||||
size_t avail = TR2FMT_PERF_FL_WIDTH - 3;
|
||||
strbuf_addstr(buf, "...");
|
||||
strbuf_add(buf,
|
||||
&buf_fl.buf[buf_fl.len - avail],
|
||||
avail);
|
||||
}
|
||||
|
||||
strbuf_release(&buf_fl);
|
||||
}
|
||||
|
||||
while (buf->len < fl_end_col)
|
||||
if (file && *file)
|
||||
strbuf_addf(buf, "%s:%d ", file, line);
|
||||
while (buf->len < TR2FMT_PERF_FL_WIDTH)
|
||||
strbuf_addch(buf, ' ');
|
||||
|
||||
strbuf_addstr(buf, " | ");
|
||||
strbuf_addstr(buf, "| ");
|
||||
}
|
||||
|
||||
strbuf_addf(buf, "d%d | ", tr2_sid_depth());
|
||||
|
|
@ -114,7 +102,7 @@ static void perf_fmt_prepare(const char *event_name,
|
|||
strbuf_addf(buf, "r%d ", repo->trace2_repo_id);
|
||||
while (buf->len < len)
|
||||
strbuf_addch(buf, ' ');
|
||||
strbuf_addstr(buf, " | ");
|
||||
strbuf_addstr(buf, "| ");
|
||||
|
||||
if (p_us_elapsed_absolute)
|
||||
strbuf_addf(buf, "%9.6f | ",
|
||||
|
|
@ -128,11 +116,17 @@ static void perf_fmt_prepare(const char *event_name,
|
|||
else
|
||||
strbuf_addf(buf, "%9s | ", " ");
|
||||
|
||||
strbuf_addf(buf, "%-*.*s | ", TR2FMT_PERF_CATEGORY_WIDTH,
|
||||
TR2FMT_PERF_CATEGORY_WIDTH, (category ? category : ""));
|
||||
strbuf_addf(buf, "%-*s | ", TR2FMT_PERF_CATEGORY_WIDTH,
|
||||
(category ? category : ""));
|
||||
|
||||
if (ctx->nr_open_regions > 0)
|
||||
strbuf_addchars(buf, '.', TR2_INDENT_LENGTH(ctx));
|
||||
if (ctx->nr_open_regions > 0) {
|
||||
int len_indent = TR2_INDENT_LENGTH(ctx);
|
||||
while (len_indent > dots.len) {
|
||||
strbuf_addbuf(buf, &dots);
|
||||
len_indent -= dots.len;
|
||||
}
|
||||
strbuf_addf(buf, "%.*s", len_indent, dots.buf);
|
||||
}
|
||||
}
|
||||
|
||||
static void perf_io_write_fl(const char *file, int line, const char *event_name,
|
||||
|
|
@ -171,7 +165,7 @@ static void fn_start_fl(const char *file, int line,
|
|||
const char *event_name = "start";
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
sq_append_quote_argv_pretty(&buf_payload, argv);
|
||||
sq_quote_argv_pretty(&buf_payload, argv);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,
|
||||
NULL, NULL, &buf_payload);
|
||||
|
|
@ -226,6 +220,11 @@ static void maybe_append_string_va(struct strbuf *buf, const char *fmt,
|
|||
va_end(copy_ap);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fmt && *fmt) {
|
||||
strbuf_addstr(buf, fmt);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void fn_error_va_fl(const char *file, int line, const char *fmt,
|
||||
|
|
@ -286,9 +285,8 @@ static void fn_alias_fl(const char *file, int line, const char *alias,
|
|||
const char *event_name = "alias";
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf_payload, "alias:%s argv:[", alias);
|
||||
sq_append_quote_argv_pretty(&buf_payload, argv);
|
||||
strbuf_addch(&buf_payload, ']');
|
||||
strbuf_addf(&buf_payload, "alias:%s argv:", alias);
|
||||
sq_quote_argv_pretty(&buf_payload, argv);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,
|
||||
&buf_payload);
|
||||
|
|
@ -317,14 +315,10 @@ static void fn_child_start_fl(const char *file, int line,
|
|||
sq_quote_buf_pretty(&buf_payload, cmd->dir);
|
||||
}
|
||||
|
||||
strbuf_addstr(&buf_payload, " argv:[");
|
||||
if (cmd->git_cmd) {
|
||||
strbuf_addstr(&buf_payload, "git");
|
||||
if (cmd->argv[0])
|
||||
strbuf_addch(&buf_payload, ' ');
|
||||
}
|
||||
sq_append_quote_argv_pretty(&buf_payload, cmd->argv);
|
||||
strbuf_addch(&buf_payload, ']');
|
||||
strbuf_addstr(&buf_payload, " argv:");
|
||||
if (cmd->git_cmd)
|
||||
strbuf_addstr(&buf_payload, " git");
|
||||
sq_quote_argv_pretty(&buf_payload, cmd->argv);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,
|
||||
NULL, NULL, &buf_payload);
|
||||
|
|
@ -375,14 +369,10 @@ static void fn_exec_fl(const char *file, int line, uint64_t us_elapsed_absolute,
|
|||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&buf_payload, "id:%d ", exec_id);
|
||||
strbuf_addstr(&buf_payload, "argv:[");
|
||||
if (exe) {
|
||||
strbuf_addstr(&buf_payload, exe);
|
||||
if (argv[0])
|
||||
strbuf_addch(&buf_payload, ' ');
|
||||
}
|
||||
sq_append_quote_argv_pretty(&buf_payload, argv);
|
||||
strbuf_addch(&buf_payload, ']');
|
||||
strbuf_addstr(&buf_payload, "argv:");
|
||||
if (exe)
|
||||
strbuf_addf(&buf_payload, " %s", exe);
|
||||
sq_quote_argv_pretty(&buf_payload, argv);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, NULL, &us_elapsed_absolute,
|
||||
NULL, NULL, &buf_payload);
|
||||
|
|
@ -443,11 +433,8 @@ static void fn_region_enter_printf_va_fl(const char *file, int line,
|
|||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
if (label)
|
||||
strbuf_addf(&buf_payload, "label:%s", label);
|
||||
if (fmt && *fmt) {
|
||||
strbuf_addch(&buf_payload, ' ');
|
||||
maybe_append_string_va(&buf_payload, fmt, ap);
|
||||
}
|
||||
strbuf_addf(&buf_payload, "label:%s ", label);
|
||||
maybe_append_string_va(&buf_payload, fmt, ap);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, repo, &us_elapsed_absolute,
|
||||
NULL, category, &buf_payload);
|
||||
|
|
@ -463,11 +450,8 @@ static void fn_region_leave_printf_va_fl(
|
|||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
|
||||
if (label)
|
||||
strbuf_addf(&buf_payload, "label:%s", label);
|
||||
if (fmt && *fmt) {
|
||||
strbuf_addch(&buf_payload, ' ' );
|
||||
maybe_append_string_va(&buf_payload, fmt, ap);
|
||||
}
|
||||
strbuf_addf(&buf_payload, "label:%s ", label);
|
||||
maybe_append_string_va(&buf_payload, fmt, ap);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, repo, &us_elapsed_absolute,
|
||||
&us_elapsed_region, category, &buf_payload);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue