#include #include typedef struct { const char *name; int (*main_func)(int argc, char **argv); } COMMAND_DEFINE; static COMMAND_DEFINE commands[]; #define CBOOTBOX_INCLUDED_CALL #include "echo.c" static COMMAND_DEFINE commands[] = { { "echo", &echo_main }, { 0, 0 } }; int main(int argc, char **argv) { COMMAND_DEFINE* cmd; if(argc <= 1) { // TODO: Print help abort(); return -1; } else { cmd = commands; while(cmd->name != 0) { if(strcmp(cmd->name, argv[1]) == 0) { return cmd->main_func(argc - 1, &(argv[1])); } } // TODO: Print help abort(); return -1; } }