/* SYNTAX: SAVE [<file>] */ static void cmd_save(const char *data) { GHashTable *optlist; char *format, *fname; void *free_arg; if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS, "save", &optlist, &fname)) return; if (*fname == '\0') fname = mainconfig->fname; if (!irssi_config_is_changed(fname)) settings_save_fe(fname); else { /* config file modified outside irssi */ printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_CONFIG_MODIFIED, fname); format = format_get_text(MODULE_NAME, NULL, NULL, NULL, TXT_OVERWRITE_CONFIG); keyboard_entry_redirect((SIGNAL_FUNC) settings_save_confirm, format, 0, g_strdup(fname)); g_free(format); } cmd_params_free(free_arg); }
static int sig_autosave(void) { char *fname, *str; if (!settings_get_bool("settings_autosave") || config_last_modifycounter == mainconfig->modifycounter) return 1; if (!irssi_config_is_changed(NULL)) settings_save(NULL, TRUE); else { fname = g_strconcat(mainconfig->fname, ".autosave", NULL); str = g_strdup_printf("Configuration file was modified " "while irssi was running. Saving " "configuration to file '%s' instead. " "Use /SAVE or /RELOAD to get rid of " "this message.", fname); signal_emit("gui dialog", 2, "warning", str); g_free(str); settings_save(fname, TRUE); g_free(fname); } return 1; }
/* SYNTAX: SAVE [<file>] */ static void cmd_save(const char *data) { if (*data == '\0') data = mainconfig->fname; if (!irssi_config_is_changed(data)) { settings_save_fe(data); return; } printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_CONFIG_MODIFIED, data); keyboard_entry_redirect((SIGNAL_FUNC) settings_save_confirm, _("Overwrite config (y/N)?"), 0, g_strdup(data)); }