From 9447f1ca80ea9f4abcdecd4a6ca468a3d579bff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 12 Sep 2023 09:49:36 +0800 Subject: [PATCH] Terminal: support JSON format --- src/modules/shell/shell.c | 3 ++- src/modules/terminal/terminal.c | 21 ++++++++++++++++++++- src/modules/terminal/terminal.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/modules/shell/shell.c b/src/modules/shell/shell.c index e7f03e730..a50607fff 100644 --- a/src/modules/shell/shell.c +++ b/src/modules/shell/shell.c @@ -92,9 +92,10 @@ void ffGenerateShellJson(FF_MAYBE_UNUSED FFShellOptions* options, yyjson_mut_doc } yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result"); - yyjson_mut_obj_add_strbuf(doc, obj, "processName", &result->shellProcessName); yyjson_mut_obj_add_strbuf(doc, obj, "exe", &result->shellExe); yyjson_mut_obj_add_strcpy(doc, obj, "exeName", result->shellExeName); + yyjson_mut_obj_add_uint(doc, obj, "pid", result->shellPid); + yyjson_mut_obj_add_strbuf(doc, obj, "processName", &result->shellProcessName); yyjson_mut_obj_add_strbuf(doc, obj, "version", &result->shellVersion); yyjson_mut_obj_add_strbuf(doc, obj, "userShellExe", &result->userShellExe); yyjson_mut_obj_add_strcpy(doc, obj, "userShellExeName", result->userShellExeName); diff --git a/src/modules/terminal/terminal.c b/src/modules/terminal/terminal.c index 3d0367a22..6009b1dbc 100644 --- a/src/modules/terminal/terminal.c +++ b/src/modules/terminal/terminal.c @@ -46,7 +46,7 @@ void ffPrintTerminal(FFTerminalOptions* options) void ffInitTerminalOptions(FFTerminalOptions* options) { - ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_TERMINAL_MODULE_NAME, ffParseTerminalCommandOptions, ffParseTerminalJsonObject, ffPrintTerminal, NULL); + ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_TERMINAL_MODULE_NAME, ffParseTerminalCommandOptions, ffParseTerminalJsonObject, ffPrintTerminal, ffGenerateTerminalJson); ffOptionInitModuleArg(&options->moduleArgs); } @@ -81,3 +81,22 @@ void ffParseTerminalJsonObject(FFTerminalOptions* options, yyjson_val* module) ffPrintError(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); } } + +void ffGenerateTerminalJson(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +{ + const FFTerminalShellResult* result = ffDetectTerminalShell(); + + if(result->terminalProcessName.length == 0) + { + yyjson_mut_obj_add_str(doc, module, "error", "Couldn't detect terminal"); + return; + } + + yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result"); + yyjson_mut_obj_add_strbuf(doc, obj, "exe", &result->terminalExe); + yyjson_mut_obj_add_strcpy(doc, obj, "exeName", result->terminalExeName); + yyjson_mut_obj_add_uint(doc, obj, "pid", result->terminalPid); + yyjson_mut_obj_add_strbuf(doc, obj, "prettyName", &result->terminalPrettyName); + yyjson_mut_obj_add_strbuf(doc, obj, "processName", &result->terminalProcessName); + yyjson_mut_obj_add_strbuf(doc, obj, "version", &result->terminalVersion); +} diff --git a/src/modules/terminal/terminal.h b/src/modules/terminal/terminal.h index 09949b00d..709b02e56 100644 --- a/src/modules/terminal/terminal.h +++ b/src/modules/terminal/terminal.h @@ -9,3 +9,4 @@ void ffInitTerminalOptions(FFTerminalOptions* options); bool ffParseTerminalCommandOptions(FFTerminalOptions* options, const char* key, const char* value); void ffDestroyTerminalOptions(FFTerminalOptions* options); void ffParseTerminalJsonObject(FFTerminalOptions* options, yyjson_val* module); +void ffGenerateTerminalJson(FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module);