]> git.ipfire.org Git - thirdparty/git.git/blobdiff - trace2/tr2_tgt_event.c
tr2: log parent process name
[thirdparty/git.git] / trace2 / tr2_tgt_event.c
index 6353e8ad915610bc93147c5291bc6f31020ac03f..578a9a5287ab11bc31a4668e8e0d7d8d0e8c6e7d 100644 (file)
@@ -261,6 +261,26 @@ static void fn_command_path_fl(const char *file, int line, const char *pathname)
        jw_release(&jw);
 }
 
+static void fn_command_ancestry_fl(const char *file, int line, const char **parent_names)
+{
+       const char *event_name = "cmd_ancestry";
+       const char *parent_name = NULL;
+       struct json_writer jw = JSON_WRITER_INIT;
+
+       jw_object_begin(&jw, 0);
+       event_fmt_prepare(event_name, file, line, NULL, &jw);
+       jw_object_inline_begin_array(&jw, "ancestry");
+
+       while ((parent_name = *parent_names++))
+               jw_array_string(&jw, parent_name);
+
+       jw_end(&jw); /* 'ancestry' array */
+       jw_end(&jw); /* event object */
+
+       tr2_dst_write_line(&tr2dst_event, &jw.json);
+       jw_release(&jw);
+}
+
 static void fn_command_name_fl(const char *file, int line, const char *name,
                               const char *hierarchy)
 {
@@ -584,6 +604,7 @@ struct tr2_tgt tr2_tgt_event = {
        fn_atexit,
        fn_error_va_fl,
        fn_command_path_fl,
+       fn_command_ancestry_fl,
        fn_command_name_fl,
        fn_command_mode_fl,
        fn_alias_fl,