diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/env_callback.h | 2 | ||||
| -rw-r--r-- | include/env_default.h | 3 | ||||
| -rw-r--r-- | include/env_flags.h | 76 | ||||
| -rw-r--r-- | include/environment.h | 9 | ||||
| -rw-r--r-- | include/search.h | 1 | 
5 files changed, 83 insertions, 8 deletions
| diff --git a/include/env_callback.h b/include/env_callback.h index f52e133f1..47fdc6fa9 100644 --- a/include/env_callback.h +++ b/include/env_callback.h @@ -24,6 +24,7 @@  #ifndef __ENV_CALLBACK_H__  #define __ENV_CALLBACK_H__ +#include <env_flags.h>  #include <linker_lists.h>  #include <search.h> @@ -45,6 +46,7 @@   * a new association in the ".callbacks" environment variable.   */  #define ENV_CALLBACK_LIST_STATIC ENV_CALLBACK_VAR ":callbacks," \ +	ENV_FLAGS_VAR ":flags," \  	"baudrate:baudrate," \  	"bootfile:bootfile," \  	"loadaddr:loadaddr," \ diff --git a/include/env_default.h b/include/env_default.h index d05eba161..39c5b7c6a 100644 --- a/include/env_default.h +++ b/include/env_default.h @@ -41,6 +41,9 @@ const uchar default_environment[] = {  #ifdef	CONFIG_ENV_CALLBACK_LIST_DEFAULT  	ENV_CALLBACK_VAR "=" CONFIG_ENV_CALLBACK_LIST_DEFAULT "\0"  #endif +#ifdef	CONFIG_ENV_FLAGS_LIST_DEFAULT +	ENV_FLAGS_VAR "=" CONFIG_ENV_FLAGS_LIST_DEFAULT "\0" +#endif  #ifdef	CONFIG_BOOTARGS  	"bootargs="	CONFIG_BOOTARGS			"\0"  #endif diff --git a/include/env_flags.h b/include/env_flags.h new file mode 100644 index 000000000..bf25f2746 --- /dev/null +++ b/include/env_flags.h @@ -0,0 +1,76 @@ +/* + * (C) Copyright 2012 + * Joe Hershberger, National Instruments, joe.hershberger@ni.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __ENV_FLAGS_H__ +#define __ENV_FLAGS_H__ + +enum env_flags_vartype { +	env_flags_vartype_string, +	env_flags_vartype_decimal, +	env_flags_vartype_hex, +	env_flags_vartype_bool, +#ifdef CONFIG_CMD_NET +	env_flags_vartype_ipaddr, +	env_flags_vartype_macaddr, +#endif +	env_flags_vartype_end +}; + +#define ENV_FLAGS_VAR ".flags" +#define ENV_FLAGS_ATTR_MAX_LEN 2 +#define ENV_FLAGS_VARTYPE_LOC 0 + +#ifndef CONFIG_ENV_FLAGS_LIST_STATIC +#define CONFIG_ENV_FLAGS_LIST_STATIC "" +#endif + +#define ENV_FLAGS_LIST_STATIC \ +	CONFIG_ENV_FLAGS_LIST_STATIC + +/* + * Parse the flags string from a .flags attribute list into the vartype enum. + */ +enum env_flags_vartype env_flags_parse_vartype(const char *flags); + +#include <search.h> + +/* + * When adding a variable to the environment, initialize the flags for that + * variable. + */ +void env_flags_init(ENTRY *var_entry); + +/* + * Validate the newval for to conform with the requirements defined by its flags + */ +int env_flags_validate(const ENTRY *item, const char *newval, enum env_op op, +	int flag); + +/* + * These are the binary flags used in the environment entry->flags variable to + * decribe properties of veriables in the table + */ +#define ENV_FLAGS_VARTYPE_BIN_MASK	0x00000007 +/* The actual variable type values use the enum value (within the mask) */ + +#endif /* __ENV_FLAGS_H__ */ diff --git a/include/environment.h b/include/environment.h index 6c3021552..00e59ba78 100644 --- a/include/environment.h +++ b/include/environment.h @@ -166,6 +166,7 @@ extern void env_reloc(void);  #include <env_attr.h>  #include <env_callback.h> +#include <env_flags.h>  #include <search.h>  extern struct hsearch_data env_htab; @@ -189,14 +190,6 @@ int set_default_vars(int nvars, char * const vars[]);  /* Import from binary representation into hash table */  int env_import(const char *buf, int check); -/* - * Check if variable "item" can be changed to newval - * When (flag & H_FORCE) is set, it does not print out any error - * message and forces overwriting of write-once variables. - */ -int env_change_ok(const ENTRY *item, const char *newval, enum env_op op, -	int flag); -  #endif /* DO_DEPS_ONLY */  #endif /* _ENVIRONMENT_H_ */ diff --git a/include/search.h b/include/search.h index d68e24a03..13d3be629 100644 --- a/include/search.h +++ b/include/search.h @@ -49,6 +49,7 @@ typedef struct entry {  	char *data;  	int (*callback)(const char *name, const char *value, enum env_op op,  		int flags); +	int flags;  } ENTRY;  /* Opaque type for internal use.  */ |