1 /* 2 * (C) Copyright 2012 3 * Joe Hershberger, National Instruments, joe.hershberger@ni.com 4 * 5 * See file CREDITS for list of people who contributed to this 6 * project. 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License as 10 * published by the Free Software Foundation; either version 2 of 11 * the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21 * MA 02111-1307 USA 22 */ 23 24 #ifndef __ENV_FLAGS_H__ 25 #define __ENV_FLAGS_H__ 26 27 enum env_flags_vartype { 28 env_flags_vartype_string, 29 env_flags_vartype_decimal, 30 env_flags_vartype_hex, 31 env_flags_vartype_bool, 32 #ifdef CONFIG_CMD_NET 33 env_flags_vartype_ipaddr, 34 env_flags_vartype_macaddr, 35 #endif 36 env_flags_vartype_end 37 }; 38 39 #define ENV_FLAGS_VAR ".flags" 40 #define ENV_FLAGS_ATTR_MAX_LEN 2 41 #define ENV_FLAGS_VARTYPE_LOC 0 42 43 #ifndef CONFIG_ENV_FLAGS_LIST_STATIC 44 #define CONFIG_ENV_FLAGS_LIST_STATIC "" 45 #endif 46 47 #define ENV_FLAGS_LIST_STATIC \ 48 CONFIG_ENV_FLAGS_LIST_STATIC 49 50 #ifdef CONFIG_CMD_ENV_FLAGS 51 /* 52 * Print the whole list of available type flags. 53 */ 54 void env_flags_print_vartypes(void); 55 /* 56 * Return the name of the type. 57 */ 58 const char *env_flags_get_vartype_name(enum env_flags_vartype type); 59 #endif 60 61 /* 62 * Parse the flags string from a .flags attribute list into the vartype enum. 63 */ 64 enum env_flags_vartype env_flags_parse_vartype(const char *flags); 65 66 #ifdef USE_HOSTCC 67 /* 68 * Look up the type of a variable directly from the .flags var. 69 */ 70 enum env_flags_vartype env_flags_get_type(const char *name); 71 /* 72 * Validate the newval for its type to conform with the requirements defined by 73 * its flags (directly looked at the .flags var). 74 */ 75 int env_flags_validate_type(const char *name, const char *newval); 76 /* 77 * Validate the parameters passed to "env set" for type compliance 78 */ 79 int env_flags_validate_env_set_params(int argc, char * const argv[]); 80 81 #else /* !USE_HOSTCC */ 82 83 #include <search.h> 84 85 /* 86 * When adding a variable to the environment, initialize the flags for that 87 * variable. 88 */ 89 void env_flags_init(ENTRY *var_entry); 90 91 /* 92 * Validate the newval for to conform with the requirements defined by its flags 93 */ 94 int env_flags_validate(const ENTRY *item, const char *newval, enum env_op op, 95 int flag); 96 97 /* 98 * These are the binary flags used in the environment entry->flags variable to 99 * decribe properties of veriables in the table 100 */ 101 #define ENV_FLAGS_VARTYPE_BIN_MASK 0x00000007 102 /* The actual variable type values use the enum value (within the mask) */ 103 104 #endif /* USE_HOSTCC */ 105 106 #endif /* __ENV_FLAGS_H__ */ 107