xref: /rk3399_ARM-atf/tools/encrypt_fw/src/cmd_opt.c (revision 091576e7f1fa0ca7360732d290a28ff2dc2a16e6)
1*90aa901fSSumit Garg /*
2*90aa901fSSumit Garg  * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
3*90aa901fSSumit Garg  *
4*90aa901fSSumit Garg  * SPDX-License-Identifier: BSD-3-Clause
5*90aa901fSSumit Garg  */
6*90aa901fSSumit Garg 
7*90aa901fSSumit Garg #include <assert.h>
8*90aa901fSSumit Garg #include <cmd_opt.h>
9*90aa901fSSumit Garg #include <getopt.h>
10*90aa901fSSumit Garg #include <stddef.h>
11*90aa901fSSumit Garg #include <stdlib.h>
12*90aa901fSSumit Garg #include "debug.h"
13*90aa901fSSumit Garg 
14*90aa901fSSumit Garg /* Command line options */
15*90aa901fSSumit Garg static struct option long_opt[CMD_OPT_MAX_NUM+1];
16*90aa901fSSumit Garg static const char *help_msg[CMD_OPT_MAX_NUM+1];
17*90aa901fSSumit Garg static int num_reg_opt;
18*90aa901fSSumit Garg 
cmd_opt_add(const cmd_opt_t * cmd_opt)19*90aa901fSSumit Garg void cmd_opt_add(const cmd_opt_t *cmd_opt)
20*90aa901fSSumit Garg {
21*90aa901fSSumit Garg 	assert(cmd_opt != NULL);
22*90aa901fSSumit Garg 
23*90aa901fSSumit Garg 	if (num_reg_opt >= CMD_OPT_MAX_NUM) {
24*90aa901fSSumit Garg 		ERROR("Out of memory. Please increase CMD_OPT_MAX_NUM\n");
25*90aa901fSSumit Garg 		exit(1);
26*90aa901fSSumit Garg 	}
27*90aa901fSSumit Garg 
28*90aa901fSSumit Garg 	long_opt[num_reg_opt].name = cmd_opt->long_opt.name;
29*90aa901fSSumit Garg 	long_opt[num_reg_opt].has_arg = cmd_opt->long_opt.has_arg;
30*90aa901fSSumit Garg 	long_opt[num_reg_opt].flag = 0;
31*90aa901fSSumit Garg 	long_opt[num_reg_opt].val = cmd_opt->long_opt.val;
32*90aa901fSSumit Garg 
33*90aa901fSSumit Garg 	help_msg[num_reg_opt] = cmd_opt->help_msg;
34*90aa901fSSumit Garg 
35*90aa901fSSumit Garg 	num_reg_opt++;
36*90aa901fSSumit Garg }
37*90aa901fSSumit Garg 
cmd_opt_get_array(void)38*90aa901fSSumit Garg const struct option *cmd_opt_get_array(void)
39*90aa901fSSumit Garg {
40*90aa901fSSumit Garg 	return long_opt;
41*90aa901fSSumit Garg }
42*90aa901fSSumit Garg 
cmd_opt_get_name(int idx)43*90aa901fSSumit Garg const char *cmd_opt_get_name(int idx)
44*90aa901fSSumit Garg {
45*90aa901fSSumit Garg 	if (idx >= num_reg_opt) {
46*90aa901fSSumit Garg 		return NULL;
47*90aa901fSSumit Garg 	}
48*90aa901fSSumit Garg 
49*90aa901fSSumit Garg 	return long_opt[idx].name;
50*90aa901fSSumit Garg }
51*90aa901fSSumit Garg 
cmd_opt_get_help_msg(int idx)52*90aa901fSSumit Garg const char *cmd_opt_get_help_msg(int idx)
53*90aa901fSSumit Garg {
54*90aa901fSSumit Garg 	if (idx >= num_reg_opt) {
55*90aa901fSSumit Garg 		return NULL;
56*90aa901fSSumit Garg 	}
57*90aa901fSSumit Garg 
58*90aa901fSSumit Garg 	return help_msg[idx];
59*90aa901fSSumit Garg }
60