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 /* 51 * Parse the flags string from a .flags attribute list into the vartype enum. 52 */ 53 enum env_flags_vartype env_flags_parse_vartype(const char *flags); 54 55 #ifdef USE_HOSTCC 56 /* 57 * Look up the type of a variable directly from the .flags var. 58 */ 59 enum env_flags_vartype env_flags_get_type(const char *name); 60 /* 61 * Validate the newval for its type to conform with the requirements defined by 62 * its flags (directly looked at the .flags var). 63 */ 64 int env_flags_validate_type(const char *name, const char *newval); 65 /* 66 * Validate the parameters passed to "env set" for type compliance 67 */ 68 int env_flags_validate_env_set_params(int argc, char * const argv[]); 69 70 #else /* !USE_HOSTCC */ 71 72 #include <search.h> 73 74 /* 75 * When adding a variable to the environment, initialize the flags for that 76 * variable. 77 */ 78 void env_flags_init(ENTRY *var_entry); 79 80 /* 81 * Validate the newval for to conform with the requirements defined by its flags 82 */ 83 int env_flags_validate(const ENTRY *item, const char *newval, enum env_op op, 84 int flag); 85 86 /* 87 * These are the binary flags used in the environment entry->flags variable to 88 * decribe properties of veriables in the table 89 */ 90 #define ENV_FLAGS_VARTYPE_BIN_MASK 0x00000007 91 /* The actual variable type values use the enum value (within the mask) */ 92 93 #endif /* USE_HOSTCC */ 94 95 #endif /* __ENV_FLAGS_H__ */ 96