X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/9a30e26b7801d63e4ccfe8d36169299c09b89dff..7fcdebd3060d3ff2f7f5e366f3a7167beb4da9ba:/settings.c diff --git a/settings.c b/settings.c index a4c514f0..1152926c 100644 --- a/settings.c +++ b/settings.c @@ -141,15 +141,17 @@ static void wprefs(void *sesskey, char *name, write_setting_s(sesskey, name, buf); } -void save_settings(char *section, int do_host, Config * cfg) +char *save_settings(char *section, int do_host, Config * cfg) { void *sesskey; + char *errmsg; - sesskey = open_settings_w(section); + sesskey = open_settings_w(section, &errmsg); if (!sesskey) - return; + return errmsg; save_open_settings(sesskey, do_host, cfg); close_settings_w(sesskey); + return NULL; } void save_open_settings(void *sesskey, int do_host, Config *cfg) @@ -238,6 +240,7 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_i(sesskey, "NoRemoteResize", cfg->no_remote_resize); write_setting_i(sesskey, "NoAltScreen", cfg->no_alt_screen); write_setting_i(sesskey, "NoRemoteWinTitle", cfg->no_remote_wintitle); + write_setting_i(sesskey, "NoRemoteQTitle", cfg->no_remote_qtitle); write_setting_i(sesskey, "NoDBackspace", cfg->no_dbackspace); write_setting_i(sesskey, "NoRemoteCharset", cfg->no_remote_charset); write_setting_i(sesskey, "ApplicationCursorKeys", cfg->app_cursor); @@ -309,6 +312,7 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_i(sesskey, "ScrollBarFullScreen", cfg->scrollbar_in_fullscreen); write_setting_i(sesskey, "ScrollOnKey", cfg->scroll_on_key); write_setting_i(sesskey, "ScrollOnDisp", cfg->scroll_on_disp); + write_setting_i(sesskey, "EraseToScrollback", cfg->erase_to_scrollback); write_setting_i(sesskey, "LockSize", cfg->resize_action); write_setting_i(sesskey, "BCE", cfg->bce); write_setting_i(sesskey, "BlinkText", cfg->blinktext); @@ -343,6 +347,7 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_i(sesskey, "BugDeriveKey2", 2-cfg->sshbug_derivekey2); write_setting_i(sesskey, "BugRSAPad2", 2-cfg->sshbug_rsapad2); write_setting_i(sesskey, "BugDHGEx2", 2-cfg->sshbug_dhgex2); + write_setting_i(sesskey, "BugPKSessID2", 2-cfg->sshbug_pksessid2); write_setting_i(sesskey, "StampUtmp", cfg->stamp_utmp); write_setting_i(sesskey, "LoginShell", cfg->login_shell); write_setting_i(sesskey, "ScrollbarOnLeft", cfg->scrollbar_on_left); @@ -468,6 +473,7 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) gppi(sesskey, "NoRemoteResize", 0, &cfg->no_remote_resize); gppi(sesskey, "NoAltScreen", 0, &cfg->no_alt_screen); gppi(sesskey, "NoRemoteWinTitle", 0, &cfg->no_remote_wintitle); + gppi(sesskey, "NoRemoteQTitle", 1, &cfg->no_remote_qtitle); gppi(sesskey, "NoDBackspace", 0, &cfg->no_dbackspace); gppi(sesskey, "NoRemoteCharset", 0, &cfg->no_remote_charset); gppi(sesskey, "ApplicationCursorKeys", 0, &cfg->app_cursor); @@ -571,6 +577,7 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) gppi(sesskey, "ScrollBarFullScreen", 0, &cfg->scrollbar_in_fullscreen); gppi(sesskey, "ScrollOnKey", 0, &cfg->scroll_on_key); gppi(sesskey, "ScrollOnDisp", 1, &cfg->scroll_on_disp); + gppi(sesskey, "EraseToScrollback", 1, &cfg->erase_to_scrollback); gppi(sesskey, "LockSize", 0, &cfg->resize_action); gppi(sesskey, "BCE", 1, &cfg->bce); gppi(sesskey, "BlinkText", 0, &cfg->blinktext); @@ -616,19 +623,19 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) gppi(sesskey, "BugDeriveKey2", 0, &i); cfg->sshbug_derivekey2 = 2-i; gppi(sesskey, "BugRSAPad2", 0, &i); cfg->sshbug_rsapad2 = 2-i; gppi(sesskey, "BugDHGEx2", 0, &i); cfg->sshbug_dhgex2 = 2-i; + gppi(sesskey, "BugPKSessID2", 0, &i); cfg->sshbug_pksessid2 = 2-i; gppi(sesskey, "StampUtmp", 1, &cfg->stamp_utmp); gppi(sesskey, "LoginShell", 1, &cfg->login_shell); gppi(sesskey, "ScrollbarOnLeft", 0, &cfg->scrollbar_on_left); gppfont(sesskey, "BoldFont", &cfg->boldfont); + gppfont(sesskey, "WideFont", &cfg->widefont); + gppfont(sesskey, "WideBoldFont", &cfg->wideboldfont); gppi(sesskey, "ShadowBoldOffset", 1, &cfg->shadowboldoffset); } void do_defaults(char *session, Config * cfg) { - if (session) - load_settings(session, TRUE, cfg); - else - load_settings("Default Settings", FALSE, cfg); + load_settings(session, (session != NULL && *session), cfg); } static int sessioncmp(const void *av, const void *bv) @@ -669,7 +676,7 @@ void get_sesslist(struct sesslist *list, int allocate) int len = strlen(otherbuf) + 1; if (bufsize < buflen + len) { bufsize = buflen + len + 2048; - list->buffer = srealloc(list->buffer, bufsize); + list->buffer = sresize(list->buffer, bufsize, char); } strcpy(list->buffer + buflen, otherbuf); buflen += strlen(list->buffer + buflen) + 1; @@ -677,7 +684,7 @@ void get_sesslist(struct sesslist *list, int allocate) } while (ret); enum_settings_finish(handle); } - list->buffer = srealloc(list->buffer, buflen + 1); + list->buffer = sresize(list->buffer, buflen + 1, char); list->buffer[buflen] = '\0'; /* @@ -696,7 +703,7 @@ void get_sesslist(struct sesslist *list, int allocate) p++; } - list->sessions = smalloc((list->nsessions + 1) * sizeof(char *)); + list->sessions = snewn(list->nsessions + 1, char *); list->sessions[0] = "Default Settings"; p = list->buffer; i = 1;