1*ad2c1a9aSJuan Castillo /* 2*ad2c1a9aSJuan Castillo * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. 3*ad2c1a9aSJuan Castillo * 4*ad2c1a9aSJuan Castillo * Redistribution and use in source and binary forms, with or without 5*ad2c1a9aSJuan Castillo * modification, are permitted provided that the following conditions are met: 6*ad2c1a9aSJuan Castillo * 7*ad2c1a9aSJuan Castillo * Redistributions of source code must retain the above copyright notice, this 8*ad2c1a9aSJuan Castillo * list of conditions and the following disclaimer. 9*ad2c1a9aSJuan Castillo * 10*ad2c1a9aSJuan Castillo * Redistributions in binary form must reproduce the above copyright notice, 11*ad2c1a9aSJuan Castillo * this list of conditions and the following disclaimer in the documentation 12*ad2c1a9aSJuan Castillo * and/or other materials provided with the distribution. 13*ad2c1a9aSJuan Castillo * 14*ad2c1a9aSJuan Castillo * Neither the name of ARM nor the names of its contributors may be used 15*ad2c1a9aSJuan Castillo * to endorse or promote products derived from this software without specific 16*ad2c1a9aSJuan Castillo * prior written permission. 17*ad2c1a9aSJuan Castillo * 18*ad2c1a9aSJuan Castillo * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19*ad2c1a9aSJuan Castillo * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20*ad2c1a9aSJuan Castillo * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21*ad2c1a9aSJuan Castillo * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 22*ad2c1a9aSJuan Castillo * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23*ad2c1a9aSJuan Castillo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24*ad2c1a9aSJuan Castillo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25*ad2c1a9aSJuan Castillo * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26*ad2c1a9aSJuan Castillo * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27*ad2c1a9aSJuan Castillo * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28*ad2c1a9aSJuan Castillo * POSSIBILITY OF SUCH DAMAGE. 29*ad2c1a9aSJuan Castillo */ 30*ad2c1a9aSJuan Castillo 31*ad2c1a9aSJuan Castillo #include <getopt.h> 32*ad2c1a9aSJuan Castillo #include <stddef.h> 33*ad2c1a9aSJuan Castillo #include <cmd_opt.h> 34*ad2c1a9aSJuan Castillo 35*ad2c1a9aSJuan Castillo /* Command line options */ 36*ad2c1a9aSJuan Castillo static struct option long_opt[CMD_OPT_MAX_NUM+1]; 37*ad2c1a9aSJuan Castillo static int num_reg_opt; 38*ad2c1a9aSJuan Castillo 39*ad2c1a9aSJuan Castillo int cmd_opt_add(const char *name, int has_arg, int val) 40*ad2c1a9aSJuan Castillo { 41*ad2c1a9aSJuan Castillo if (num_reg_opt >= CMD_OPT_MAX_NUM) { 42*ad2c1a9aSJuan Castillo return -1; 43*ad2c1a9aSJuan Castillo } 44*ad2c1a9aSJuan Castillo long_opt[num_reg_opt].name = name; 45*ad2c1a9aSJuan Castillo long_opt[num_reg_opt].has_arg = has_arg; 46*ad2c1a9aSJuan Castillo long_opt[num_reg_opt].flag = 0; 47*ad2c1a9aSJuan Castillo long_opt[num_reg_opt].val = val; 48*ad2c1a9aSJuan Castillo num_reg_opt++; 49*ad2c1a9aSJuan Castillo 50*ad2c1a9aSJuan Castillo return 0; 51*ad2c1a9aSJuan Castillo } 52*ad2c1a9aSJuan Castillo 53*ad2c1a9aSJuan Castillo const struct option *cmd_opt_get_array(void) 54*ad2c1a9aSJuan Castillo { 55*ad2c1a9aSJuan Castillo return long_opt; 56*ad2c1a9aSJuan Castillo } 57*ad2c1a9aSJuan Castillo 58*ad2c1a9aSJuan Castillo const char *cmd_opt_get_name(int idx) 59*ad2c1a9aSJuan Castillo { 60*ad2c1a9aSJuan Castillo if (idx >= num_reg_opt) { 61*ad2c1a9aSJuan Castillo return NULL; 62*ad2c1a9aSJuan Castillo } 63*ad2c1a9aSJuan Castillo 64*ad2c1a9aSJuan Castillo return long_opt[idx].name; 65*ad2c1a9aSJuan Castillo } 66