diff --git a/src/common/impl/commandoption.c b/src/common/impl/commandoption.c index 19e5b9333..d32c0fe08 100644 --- a/src/common/impl/commandoption.c +++ b/src/common/impl/commandoption.c @@ -157,7 +157,7 @@ static void genJsonResult(FFdata* data, FFModuleBaseInfo* baseInfo, void* option } } -static void parseStructureCommand( +static bool parseStructureCommand( FFdata* data, const char* line, void (*fn)(FFdata*, FFModuleBaseInfo* baseInfo, void* options)) { @@ -167,18 +167,26 @@ static void parseStructureCommand( if (ffStrEqualsIgnCase(line, baseInfo->name)) { uint8_t optionBuf[FF_OPTION_MAX_SIZE]; baseInfo->initOptions(optionBuf); - if (__builtin_expect(data->resultDoc != NULL, false)) { + if (data->resultDoc != NULL) { fn(data, baseInfo, optionBuf); } else { baseInfo->printModule(optionBuf); } baseInfo->destroyOptions(optionBuf); - return; + return true; } } } - ffPrintError(line, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, ""); + if (fn == genJsonResult) { + yyjson_mut_doc* doc = data->resultDoc; + yyjson_mut_val* module = yyjson_mut_arr_add_obj(doc, doc->root); + yyjson_mut_obj_add_str(doc, module, "type", line); + yyjson_mut_obj_add_str(doc, module, "error", "Unknown module type"); + } else { + ffPrintError(line, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, ""); + } + return false; } void ffPrintCommandOption(FFdata* data) {