print_modules (void)
{
	CK_FUNCTION_LIST_PTR *module_list;
	char *name;
	char *path;
	int i;

	module_list = p11_kit_modules_load_and_initialize (0);
	if (!module_list)
		return 1;

	for (i = 0; module_list[i]; i++) {
		name = p11_kit_module_get_name (module_list[i]);
		path = p11_kit_config_option (module_list[i], "module");

		printf ("%s: %s\n",
			name ? name : "(null)",
			path ? path : "(null)");
		print_module_info (module_list[i]);

		free (name);
		free (path);
	}

	p11_kit_modules_finalize_and_release (module_list);
	return 0;
}
print_modules (void)
{
	CK_FUNCTION_LIST_PTR *module_list;
	char *name;
	char *path;
	int i;

	module_list = p11_kit_modules_load_and_initialize (0);
	if (!module_list)
		return 1;

	for (i = 0; module_list[i]; i++) {
		name = p11_kit_module_get_name (module_list[i]);
		path = p11_kit_config_option (module_list[i], "module");

		printf ("%s: %s\n",
			name ? name : "(null)",
			path ? path : "(null)");
		print_module_info (module_list[i]);

		free (name);
		free (path);
	}

	p11_kit_modules_finalize_and_release (module_list);
	return 0;
}