diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-11-07 09:14:44 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-11-07 09:14:44 -0500 |
commit | 36af84ba5062b26d2ede647627e87f6ae74796cf (patch) | |
tree | 9422788a4c8915f0baa740081832ae050157abf6 | |
parent | f6c9ca3a1d1c29a293915612e26cdbfeb050c192 (diff) | |
download | tor-36af84ba5062b26d2ede647627e87f6ae74796cf.tar.gz tor-36af84ba5062b26d2ede647627e87f6ae74796cf.zip |
New configuration flag to warn that a variable is obsolete.
Part of 32404.
-rw-r--r-- | src/lib/conf/conftypes.h | 8 | ||||
-rw-r--r-- | src/lib/confmgt/confmgt.c | 5 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/conf/conftypes.h b/src/lib/conf/conftypes.h index dfe51cfba1..bf748efbb7 100644 --- a/src/lib/conf/conftypes.h +++ b/src/lib/conf/conftypes.h @@ -183,12 +183,18 @@ typedef struct struct_magic_decl_t { * running. **/ #define CFLG_IMMUTABLE (1u<<6) +/** + * Flag to indicate that we should warn that an option or type is obsolete + * whenever the user tries to use it. + **/ +#define CFLG_WARN_OBSOLETE (1u<<7) /** * A group of flags that should be set on all obsolete options and types. **/ #define CFLG_GROUP_OBSOLETE \ - (CFLG_NOCOPY|CFLG_NOCMP|CFLG_NODUMP|CFLG_NOSET|CFLG_NOLIST) + (CFLG_NOCOPY|CFLG_NOCMP|CFLG_NODUMP|CFLG_NOSET|CFLG_NOLIST|\ + CFLG_WARN_OBSOLETE) /** A variable allowed in the configuration file or on the command line. */ typedef struct config_var_t { diff --git a/src/lib/confmgt/confmgt.c b/src/lib/confmgt/confmgt.c index a96c7f96bf..c72efa847c 100644 --- a/src/lib/confmgt/confmgt.c +++ b/src/lib/confmgt/confmgt.c @@ -657,6 +657,11 @@ config_assign_value(const config_mgr_t *mgr, void *options, tor_assert(!strcmp(c->key, var->cvar->member.name)); void *object = config_mgr_get_obj_mutable(mgr, options, var->object_idx); + if (config_var_has_flag(var->cvar, CFLG_WARN_OBSOLETE)) { + log_warn(LD_GENERAL, "Skipping obsolete configuration option \"%s\".", + var->cvar->member.name); + } + return struct_var_kvassign(object, c, msg, &var->cvar->member); } |