- if (STREQ (c->obsolete, variable))
- {
- char *old = define_directive (c->obsolete, *value);
- char *upd = define_directive (c->updated, *value);
- deprecated_directive (&variable_loc, old, upd);
- free (old);
- free (upd);
- res = c->updated;
- break;
+ {
+ char const *eq = strchr (c->obsolete, '=');
+ if (eq
+ ? (!strncmp (c->obsolete, variable, eq - c->obsolete)
+ && STREQ (eq + 1, *value))
+ : STREQ (c->obsolete, variable))
+ {
+ char *old = define_directive (c->obsolete, *value);
+ char *upd = define_directive (c->updated, *value);
+ deprecated_directive (&variable_loc, old, upd);
+ free (old);
+ free (upd);
+ char *res = xstrdup (c->updated);
+ {
+ char *eq2 = strchr (res, '=');
+ if (eq2)
+ {
+ *eq2 = '\0';
+ *value = eq2 + 1;
+ }
+ }
+ return res;
+ }