From 587b70d5cdc6de5dccb242b2854b38d7c236bde2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 20 Nov 2017 11:23:34 +0100 Subject: [PATCH] Add a get_driver_settings debugging tool --- src/bin/Jamfile | 1 + src/bin/get_driver_settings.cpp | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/bin/get_driver_settings.cpp diff --git a/src/bin/Jamfile b/src/bin/Jamfile index d112cf666f..0679e59a06 100644 --- a/src/bin/Jamfile +++ b/src/bin/Jamfile @@ -35,6 +35,7 @@ StdBinCommands fortune.c finddir.c fstrim.cpp + get_driver_settings.cpp hd.c listarea.c listimage.c diff --git a/src/bin/get_driver_settings.cpp b/src/bin/get_driver_settings.cpp new file mode 100644 index 0000000000..012417dc35 --- /dev/null +++ b/src/bin/get_driver_settings.cpp @@ -0,0 +1,51 @@ +/* + * Copyright 2017, Haiku, Inc. + * Distributed under the terms of the MIT License. + * + * Authors: + * + */ + +#include + +#include + +static const char *sTabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; + +int usage(const char *progname) +{ + return 1; +} + +void print_params(int indent, const driver_parameter *p) +{ + printf("indent: %d\n", indent); + printf("%.*s'%s': [", indent, sTabs, p->name); + for (int i = 0; i < p->value_count; i++) { + printf(" '%s',", p->values[i]); + } + printf("]\n"); + indent++; + for (int i = 0; i < p->parameter_count; i++) + print_params(indent, &p->parameters[i]); +} + +int main(int argc, char **argv) +{ + void *h; + const driver_settings *s; + h = load_driver_settings(argv[1]); + if (h == NULL) + return usage(argv[0]); + + s = get_driver_settings(h); + + printf("%d\n", s->parameter_count); + for (int i = 0; i < s->parameter_count; i++) { + print_params(0, &s->parameters[i]); + } + + unload_driver_settings(h); + + return 0; +}