diff options
author | Joe Hershberger | 2012-12-11 22:16:21 -0600 |
---|---|---|
committer | Tom Rini | 2012-12-13 11:46:55 -0700 |
commit | 7afcf3a55b5f484b3d3442053fae8186a3fb92d7 (patch) | |
tree | 1aa2c5143a1bbef6570b03652107a09832a2f2ad /include/search.h | |
parent | 3d3b52f2586a8bf1c53496547062594fd4386454 (diff) |
env: Refactor apply into change_ok
Move the read of the old value to inside the check function. In some
cases it can be avoided all together and at the least the code is only
called from one place.
Also name the function and the callback to more clearly describe what
it does.
Pass the ENTRY instead of just the name for direct access to the whole
data structure.
Pass an enum to the callback that specifies the operation being approved.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'include/search.h')
-rw-r--r-- | include/search.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/search.h b/include/search.h index f5165b0a989..fa00ea1b359 100644 --- a/include/search.h +++ b/include/search.h @@ -32,6 +32,12 @@ #define __set_errno(val) do { errno = val; } while (0) +enum env_op { + env_op_create, + env_op_delete, + env_op_overwrite, +}; + /* Action which shall be performed in the call the hsearch. */ typedef enum { FIND, @@ -59,14 +65,13 @@ struct hsearch_data { unsigned int filled; /* * Callback function which will check whether the given change for variable - * "name" from "oldval" to "newval" may be applied or not, and possibly apply - * such change. + * "item" to "newval" may be applied or not, and possibly apply such change. * When (flag & H_FORCE) is set, it shall not print out any error message and * shall force overwriting of write-once variables. .* Must return 0 for approval, 1 for denial. */ - int (*apply)(const char *name, const char *oldval, - const char *newval, int flag); + int (*change_ok)(const ENTRY *__item, const char *newval, enum env_op, + int flag); }; /* Create a new hashing table which will at most contain NEL elements. */ |