static int modinfo_do(struct kmod_module *mod)
{
+ const bool print_all = field == NULL;
+ const bool print_parm = !print_all && streq(field, "parm");
struct kmod_list *l, *list = NULL;
struct param *params = NULL;
int err, is_builtin;
/* TODO: align builtin vs not wrt listing "name:" via kmod_module_get_info() */
if (is_builtin) {
- if (field == NULL)
+ if (print_all)
print_line("name", kmod_module_get_name(mod));
else if (streq(field, "name")) {
print_line(NULL, kmod_module_get_name(mod));
filename = "(builtin)";
}
- if (field == NULL)
+ if (print_all)
print_line("filename", filename);
else if (streq(field, "filename")) {
print_line(NULL, filename);
return err;
}
- if (field != NULL && streq(field, "parm")) {
+ if (print_parm) {
err = modinfo_params_do(list);
goto end;
}
const char *key = kmod_module_info_get_key(l);
const char *value = kmod_module_info_get_value(l);
- if (field != NULL) {
+ if (!print_all) {
if (streq(field, key))
print_line(NULL, value);
continue;
}
}
- if (field != NULL)
+ if (!print_all)
goto end;
while (params != NULL) {