return 0;
}
+static void print_line(const char *key, const char *value)
+{
+ if (key == NULL) {
+ printf("%s%c", value, separator);
+ return;
+ }
+
+ if (separator == '\0') {
+ printf("%s=%s%c", key, value, separator);
+ } else {
+ size_t keylen = strlen(key);
+ if (keylen > 15)
+ keylen = 15;
+ printf("%s:%-*s%s%c", key, 15 - (int)keylen, "", value, separator);
+ }
+}
+
static int modinfo_params_do(const struct kmod_list *list)
{
const struct kmod_list *l;
/* TODO: align builtin vs not wrt listing "name:" via kmod_module_get_info() */
if (is_builtin) {
+ const char *name = kmod_module_get_name(mod);
if (field == NULL)
- printf("%-16s%s%c", "name:", kmod_module_get_name(mod), separator);
+ print_line("name", name);
else if (field != NULL && streq(field, "name"))
- printf("%s%c", kmod_module_get_name(mod), separator);
+ print_line(NULL, name);
}
if (field != NULL && streq(field, "filename")) {
- printf("%s%c", filename, separator);
+ print_line(NULL, filename);
return 0;
} else if (field == NULL) {
- printf("%-16s%s%c", "filename:", filename, separator);
+ print_line("filename", filename);
}
err = kmod_module_get_info(mod, &list);
if (field != NULL) {
if (streq(field, key)) {
- /* filtered output contains no key, just value */
- printf("%s%c", value, separator);
+ print_line(NULL, value);
}
} else if (streq(key, "parm")) {
err = process_parm(parm_desc, value, ¶ms);
err = process_parm(parm_type, value, ¶ms);
if (err < 0)
goto end;
- } else if (separator == '\0') {
- printf("%s=%s%c", key, value, separator);
} else {
- size_t keylen = strlen(key);
- if (keylen > 15)
- keylen = 15;
- printf("%s:%-*s%s%c", key, 15 - (int)keylen, "", value, separator);
+ print_line(key, value);
}
}