1ad2c1a9aSJuan Castillo /* 2ad2c1a9aSJuan Castillo * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. 3ad2c1a9aSJuan Castillo * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 5ad2c1a9aSJuan Castillo */ 6ad2c1a9aSJuan Castillo 7159807e2SJuan Castillo #include <assert.h> 8*2a4b4b71SIsla Mitchell #include <cmd_opt.h> 9ad2c1a9aSJuan Castillo #include <getopt.h> 10ad2c1a9aSJuan Castillo #include <stddef.h> 11159807e2SJuan Castillo #include <stdlib.h> 12159807e2SJuan Castillo #include "debug.h" 13ad2c1a9aSJuan Castillo 14ad2c1a9aSJuan Castillo /* Command line options */ 15ad2c1a9aSJuan Castillo static struct option long_opt[CMD_OPT_MAX_NUM+1]; 16159807e2SJuan Castillo static const char *help_msg[CMD_OPT_MAX_NUM+1]; 17ad2c1a9aSJuan Castillo static int num_reg_opt; 18ad2c1a9aSJuan Castillo cmd_opt_add(const cmd_opt_t * cmd_opt)19159807e2SJuan Castillovoid cmd_opt_add(const cmd_opt_t *cmd_opt) 20ad2c1a9aSJuan Castillo { 21159807e2SJuan Castillo assert(cmd_opt != NULL); 22ad2c1a9aSJuan Castillo 23159807e2SJuan Castillo if (num_reg_opt >= CMD_OPT_MAX_NUM) { 24159807e2SJuan Castillo ERROR("Out of memory. Please increase CMD_OPT_MAX_NUM\n"); 25159807e2SJuan Castillo exit(1); 26159807e2SJuan Castillo } 27159807e2SJuan Castillo 28159807e2SJuan Castillo long_opt[num_reg_opt].name = cmd_opt->long_opt.name; 29159807e2SJuan Castillo long_opt[num_reg_opt].has_arg = cmd_opt->long_opt.has_arg; 30159807e2SJuan Castillo long_opt[num_reg_opt].flag = 0; 31159807e2SJuan Castillo long_opt[num_reg_opt].val = cmd_opt->long_opt.val; 32159807e2SJuan Castillo 33159807e2SJuan Castillo help_msg[num_reg_opt] = cmd_opt->help_msg; 34159807e2SJuan Castillo 35159807e2SJuan Castillo num_reg_opt++; 36ad2c1a9aSJuan Castillo } 37ad2c1a9aSJuan Castillo cmd_opt_get_array(void)38ad2c1a9aSJuan Castilloconst struct option *cmd_opt_get_array(void) 39ad2c1a9aSJuan Castillo { 40ad2c1a9aSJuan Castillo return long_opt; 41ad2c1a9aSJuan Castillo } 42ad2c1a9aSJuan Castillo cmd_opt_get_name(int idx)43ad2c1a9aSJuan Castilloconst char *cmd_opt_get_name(int idx) 44ad2c1a9aSJuan Castillo { 45ad2c1a9aSJuan Castillo if (idx >= num_reg_opt) { 46ad2c1a9aSJuan Castillo return NULL; 47ad2c1a9aSJuan Castillo } 48ad2c1a9aSJuan Castillo 49ad2c1a9aSJuan Castillo return long_opt[idx].name; 50ad2c1a9aSJuan Castillo } 51159807e2SJuan Castillo cmd_opt_get_help_msg(int idx)52159807e2SJuan Castilloconst char *cmd_opt_get_help_msg(int idx) 53159807e2SJuan Castillo { 54159807e2SJuan Castillo if (idx >= num_reg_opt) { 55159807e2SJuan Castillo return NULL; 56159807e2SJuan Castillo } 57159807e2SJuan Castillo 58159807e2SJuan Castillo return help_msg[idx]; 59159807e2SJuan Castillo } 60