mirror of
https://github.com/rkd77/elinks.git
synced 2025-06-30 22:19:29 -04:00
config: Reset OPT_TOUCHED flags after a successful save.
Previously, they were reset by smart_config_string(), which was not called if the value of the option was saved by rewriting an existing command in elinks.conf. Also, it is better to reset the flags only after the file operations have actually succeeded. (cherry picked from commit 6bd961246ac4c5c8eb8e2de657053dca6fc13630)
This commit is contained in:
parent
b2c11e21c9
commit
841153b625
@ -980,6 +980,8 @@ write_config_file(unsigned char *prefix, unsigned char *name,
|
||||
if (ssi) {
|
||||
secure_fputs(ssi, cfg_str);
|
||||
ret = secure_close(ssi);
|
||||
if (!ret)
|
||||
untouch_options(options->value.tree);
|
||||
}
|
||||
|
||||
write_config_dialog(term, config_file, secsave_errno, ret);
|
||||
|
@ -742,6 +742,19 @@ unmark_options_tree(struct list_head *tree)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
untouch_options(struct list_head *tree)
|
||||
{
|
||||
struct option *option;
|
||||
|
||||
foreach (option, *tree) {
|
||||
option->flags &= ~OPT_TOUCHED;
|
||||
|
||||
if (option->type == OPT_TREE)
|
||||
untouch_options(option->value.tree);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
check_nonempty_tree(struct list_head *options)
|
||||
{
|
||||
@ -844,10 +857,6 @@ smart_config_string(struct string *str, int print_comment, int i18n,
|
||||
|
||||
fn(str, option, path, depth, /*pc*/1, 3, i18n);
|
||||
}
|
||||
|
||||
/* TODO: We should maybe clear the touched flag only when really
|
||||
* saving the stuff...? --pasky */
|
||||
option->flags &= ~OPT_TOUCHED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -151,6 +151,7 @@ extern void register_change_hooks(struct change_hook_info *change_hooks);
|
||||
|
||||
extern struct list_head *init_options_tree(void);
|
||||
extern void unmark_options_tree(struct list_head *);
|
||||
extern void untouch_options(struct list_head *);
|
||||
|
||||
extern void smart_config_string(struct string *, int, int, struct list_head *, unsigned char *, int,
|
||||
void (*)(struct string *, struct option *, unsigned char *, int, int, int, int));
|
||||
|
Loading…
x
Reference in New Issue
Block a user