From e73fbdf59b292e7329502e532ace765bcbbe3821 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Thu, 4 Jan 2018 00:33:20 +0100 Subject: shell: new SHELL_REGISTER_CMDS macro --- shell.c | 14 ++------------ shell.h | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/shell.c b/shell.c index 05bfde5..820d020 100644 --- a/shell.c +++ b/shell.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Richard Braun. + * Copyright (c) 2015-2018 Richard Braun. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -1191,16 +1191,6 @@ shell_run(void) void shell_setup(void) { - unsigned long i; - int error; - pthread_mutex_init(&shell_lock, NULL); - - for (i = 0; i < ARRAY_SIZE(shell_default_cmds); i++) { - error = shell_cmd_register(&shell_default_cmds[i]); - - if (error) { - error_die(error); - } - } + SHELL_REGISTER_CMDS(shell_default_cmds); } diff --git a/shell.h b/shell.h index 367ef2e..b843a1a 100644 --- a/shell.h +++ b/shell.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Richard Braun. + * Copyright (c) 2015-2018 Richard Braun. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -31,6 +31,20 @@ #include +#include +#include + +#define SHELL_REGISTER_CMDS(cmds) \ +MACRO_BEGIN \ + size_t ___i; \ + int ___error; \ + \ + for (___i = 0; ___i < ARRAY_SIZE(cmds); ___i++) { \ + ___error = shell_cmd_register(&(cmds)[___i]); \ + error_check(___error, __func__); \ + } \ +MACRO_END + typedef void (*shell_fn_t)(int argc, char *argv[]); struct shell_cmd { -- cgit v1.2.3