Miscellaneous fixes to finish up `remove-statics'. rlogin.c had a
[u/mdw/putty] / settings.c
index 47524db..ed9007d 100644 (file)
@@ -20,16 +20,26 @@ static const struct keyval ciphernames[] = {
     { "des",       CIPHER_DES }
 };
 
-static void gpps(void *handle, char *name, char *def, char *val, int len)
+static void gpps(void *handle, const char *name, const char *def,
+                char *val, int len)
 {
     if (!read_setting_s(handle, name, val, len)) {
-       strncpy(val, def, len);
+       char *pdef;
+
+       pdef = platform_default_s(name);
+       if (pdef) {
+           strncpy(val, pdef, len);
+       } else {
+           strncpy(val, def, len);
+       }
+
        val[len - 1] = '\0';
     }
 }
 
 static void gppi(void *handle, char *name, int def, int *i)
 {
+    def = platform_default_i(name, def);
     *i = read_setting_i(handle, name, def);
 }
 
@@ -150,6 +160,8 @@ void save_settings(char *section, int do_host, Config * cfg)
 
     /* proxy settings */
     write_setting_s(sesskey, "ProxyExcludeList", cfg->proxy_exclude_list);
+    write_setting_i(sesskey, "ProxyDNS", cfg->proxy_dns);
+    write_setting_i(sesskey, "ProxyLocalhost", cfg->even_proxy_localhost);
     write_setting_i(sesskey, "ProxyType", cfg->proxy_type);
     write_setting_s(sesskey, "ProxyHost", cfg->proxy_host);
     write_setting_i(sesskey, "ProxyPort", cfg->proxy_port);
@@ -281,6 +293,7 @@ void save_settings(char *section, int do_host, Config * cfg)
     write_setting_i(sesskey, "BlinkText", cfg->blinktext);
     write_setting_i(sesskey, "X11Forward", cfg->x11_forward);
     write_setting_s(sesskey, "X11Display", cfg->x11_display);
+    write_setting_i(sesskey, "X11AuthType", cfg->x11_auth);
     write_setting_i(sesskey, "LocalPortAcceptAll", cfg->lport_acceptall);
     write_setting_i(sesskey, "RemotePortAcceptAll", cfg->rport_acceptall);
     {
@@ -319,11 +332,17 @@ void save_settings(char *section, int do_host, Config * cfg)
 
 void load_settings(char *section, int do_host, Config * cfg)
 {
-    int i;
-    char prot[10];
     void *sesskey;
 
     sesskey = open_settings_r(section);
+    load_open_settings(sesskey, do_host, cfg);
+    close_settings_r(sesskey);
+}
+
+void load_open_settings(void *sesskey, int do_host, Config *cfg)
+{
+    int i;
+    char prot[10];
 
     cfg->ssh_subsys = 0;              /* FIXME: load this properly */
     cfg->remote_cmd_ptr = cfg->remote_cmd;
@@ -359,13 +378,7 @@ void load_settings(char *section, int do_host, Config * cfg)
      * single command in its own pterm), but I don't think it's a
      * sane default, unfortunately.
      */
-    gppi(sesskey, "CloseOnExit",
-#ifdef _WINDOWS
-         COE_NORMAL,
-#else
-         COE_ALWAYS,
-#endif
-         &cfg->close_on_exit);
+    gppi(sesskey, "CloseOnExit", COE_NORMAL, &cfg->close_on_exit);
     gppi(sesskey, "WarnOnClose", 1, &cfg->warn_on_close);
     {
        /* This is two values for backward compatibility with 0.50/0.51 */
@@ -383,6 +396,8 @@ void load_settings(char *section, int do_host, Config * cfg)
     /* proxy settings */
     gpps(sesskey, "ProxyExcludeList", "", cfg->proxy_exclude_list,
         sizeof(cfg->proxy_exclude_list));
+    gppi(sesskey, "ProxyDNS", PROXYDNS_AUTO, &i); cfg->proxy_dns = i;
+    gppi(sesskey, "ProxyLocalhost", 0, &cfg->even_proxy_localhost);
     gppi(sesskey, "ProxyType", PROXY_NONE, &i); cfg->proxy_type = i;
     gpps(sesskey, "ProxyHost", "proxy", cfg->proxy_host,
         sizeof(cfg->proxy_host));
@@ -482,15 +497,9 @@ void load_settings(char *section, int do_host, Config * cfg)
     gpps(sesskey, "WinTitle", "", cfg->wintitle, sizeof(cfg->wintitle));
     gppi(sesskey, "TermWidth", 80, &cfg->width);
     gppi(sesskey, "TermHeight", 24, &cfg->height);
-#ifdef _WINDOWS
-    gpps(sesskey, "Font", "Courier New", cfg->font, sizeof(cfg->font));
-#else
-    gpps(sesskey, "Font", "fixed", cfg->font, sizeof(cfg->font));
-#endif
+    gpps(sesskey, "Font", "XXX", cfg->font, sizeof(cfg->font));
     gppi(sesskey, "FontIsBold", 0, &cfg->fontisbold);
-#ifdef _WINDOWS
-    gppi(sesskey, "FontCharSet", ANSI_CHARSET, &cfg->fontcharset);
-#endif
+    gppi(sesskey, "FontCharSet", 0, &cfg->fontcharset);
     gppi(sesskey, "FontHeight", 10, &cfg->fontheight);
 #ifdef _WINDOWS
     if (cfg->fontheight < 0) {
@@ -510,7 +519,7 @@ void load_settings(char *section, int do_host, Config * cfg)
     gppi(sesskey, "TryPalette", 0, &cfg->try_palette);
     gppi(sesskey, "BoldAsColour", 1, &cfg->bold_colour);
     for (i = 0; i < 22; i++) {
-       static char *defaults[] = {
+       static const char *const defaults[] = {
            "187,187,187", "255,255,255", "0,0,0", "85,85,85", "0,0,0",
            "0,255,0", "0,0,0", "85,85,85", "187,0,0", "255,85,85",
            "0,187,0", "85,255,85", "187,187,0", "255,255,85", "0,0,187",
@@ -527,22 +536,13 @@ void load_settings(char *section, int do_host, Config * cfg)
            cfg->colours[i][2] = c2;
        }
     }
-#ifndef _WINDOWS
-    /* Non-raw cut and paste of line-drawing chars works badly on the
-     * current Unix stub implementation of the Unicode functions.
-     * So I'm going to temporarily set the default to raw mode so
-     * that the failure mode isn't quite so drastically horrid.
-     * When Unicode comes in, this can all be put right. */
-    gppi(sesskey, "RawCNP", 1, &cfg->rawcnp);
-#else
     gppi(sesskey, "RawCNP", 0, &cfg->rawcnp);
-#endif
     gppi(sesskey, "PasteRTF", 0, &cfg->rtf_paste);
     gppi(sesskey, "MouseIsXterm", 0, &cfg->mouse_is_xterm);
     gppi(sesskey, "RectSelect", 0, &cfg->rect_select);
     gppi(sesskey, "MouseOverride", 1, &cfg->mouse_override);
     for (i = 0; i < 256; i += 32) {
-       static char *defaults[] = {
+       static const char *const defaults[] = {
            "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
            "0,1,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1",
            "1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2",
@@ -584,6 +584,7 @@ void load_settings(char *section, int do_host, Config * cfg)
     gppi(sesskey, "X11Forward", 0, &cfg->x11_forward);
     gpps(sesskey, "X11Display", "localhost:0", cfg->x11_display,
         sizeof(cfg->x11_display));
+    gppi(sesskey, "X11AuthType", X11_MIT, &cfg->x11_auth);
 
     gppi(sesskey, "LocalPortAcceptAll", 0, &cfg->lport_acceptall);
     gppi(sesskey, "RemotePortAcceptAll", 0, &cfg->rport_acceptall);
@@ -627,8 +628,6 @@ void load_settings(char *section, int do_host, Config * cfg)
     gppi(sesskey, "ScrollbarOnLeft", 0, &cfg->scrollbar_on_left);
     gpps(sesskey, "BoldFont", "", cfg->boldfont, sizeof(cfg->boldfont));
     gppi(sesskey, "ShadowBoldOffset", 1, &cfg->shadowboldoffset);
-
-    close_settings_r(sesskey);
 }
 
 void do_defaults(char *session, Config * cfg)