From 89b04c5b54accb3849dadb4372a646fce98ebeef Mon Sep 17 00:00:00 2001 From: Alessandro Rubini <rubini@gnudd.com> Date: Mon, 15 Dec 2014 16:52:53 +0100 Subject: [PATCH] userspace/tools: added wrs_checkcfg Signed-off-by: Alessandro Rubini <rubini@gnudd.com> --- userspace/tools/.gitignore | 1 + userspace/tools/Makefile | 1 + userspace/tools/wrs_checkcfg.c | 58 ++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 userspace/tools/wrs_checkcfg.c diff --git a/userspace/tools/.gitignore b/userspace/tools/.gitignore index 8c81189e7..c599a3079 100644 --- a/userspace/tools/.gitignore +++ b/userspace/tools/.gitignore @@ -19,3 +19,4 @@ wrs_dump_shmem sdb-read nbtee wrs_auxclk +wrs_checkcfg diff --git a/userspace/tools/Makefile b/userspace/tools/Makefile index 14e052074..702989458 100644 --- a/userspace/tools/Makefile +++ b/userspace/tools/Makefile @@ -5,6 +5,7 @@ TOOLS += wrs_vlans wrs_dump_shmem TOOLS += sdb-read TOOLS += nbtee TOOLS += wrs_auxclk +TOOLS += wrs_checkcfg WR_INSTALL_ROOT ?= /usr/lib/white-rabbit diff --git a/userspace/tools/wrs_checkcfg.c b/userspace/tools/wrs_checkcfg.c new file mode 100644 index 000000000..26e1e1ad8 --- /dev/null +++ b/userspace/tools/wrs_checkcfg.c @@ -0,0 +1,58 @@ +/* Alessandro Rubini for CERN, 2014 */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> +#include <libwr/config.h> + +int main(int argc, char **argv) +{ + int err, verbose = 0; + +me_lazy: + if (argc < 2 || !strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { + fprintf(stderr, "%s: Use: \"%s [-v] <dotcfg> [<Kconfig>]\"\n", + argv[0], argv[0]); + exit(1); + } + + if (!strcmp(argv[1], "-v")) { + verbose++; + argv++; + argc--; + goto me_lazy; + } + + if (access(argv[1], R_OK) < 0) { + fprintf(stderr, "%s: %s: %s\n", argv[0], argv[1], + strerror(errno)); + exit(1); + } + if (argc == 2) { + err = libwr_cfg_read_file(argv[1]); + if (err) { + fprintf(stderr, "%s: Error in %s:%i: %s\n", argv[0], + argv[1], -err, strerror(errno)); + exit(1); + } + if (verbose) + libwr_cfg_dump(stdout); + exit(0); + } + + if (access(argv[2], R_OK) < 0) { + fprintf(stderr, "%s: %s: %s\n", argv[0], argv[2], + strerror(errno)); + exit(1); + } + err = libwr_cfg_read_verify_file(argv[1], argv[2]); + if (verbose) + libwr_cfg_dump(stdout); + if (err) + exit(1); /* messages already printed */ + exit(0); + + return 0; +} -- GitLab