Should fix Debian bug #192674: another gcc complaint about
[u/mdw/putty] / terminal.c
index bcf202e..5f6cdb1 100644 (file)
@@ -321,8 +321,15 @@ void term_reconfig(Terminal *term, Config *cfg)
        term->alt_wrap = term->wrap = term->cfg.wrap_mode;
     if (reset_decom)
        term->alt_om = term->dec_om = term->cfg.dec_om;
-    if (reset_bce)
+    if (reset_bce) {
        term->use_bce = term->cfg.bce;
+       if (term->use_bce)
+           term->erase_char = (' ' | ATTR_ASCII |
+                               (term->curr_attr &
+                                (ATTR_FGMASK | ATTR_BGMASK)));
+       else
+           term->erase_char = ERASE_CHAR;
+    }
     if (reset_blink)
        term->blink_is_real = term->cfg.blinktext;
     if (reset_charclass)
@@ -2604,7 +2611,8 @@ void term_out(Terminal *term)
                                 */
                                break;
                              case 20:
-                               if (term->ldisc) {
+                               if (term->ldisc &&
+                                   !term->cfg.no_remote_qtitle) {
                                    p = get_window_title(term->frontend, TRUE);
                                    len = strlen(p);
                                    ldisc_send(term->ldisc, "\033]L", 3, 0);
@@ -2613,7 +2621,8 @@ void term_out(Terminal *term)
                                }
                                break;
                              case 21:
-                               if (term->ldisc) {
+                               if (term->ldisc &&
+                                   !term->cfg.no_remote_qtitle) {
                                    p = get_window_title(term->frontend,FALSE);
                                    len = strlen(p);
                                    ldisc_send(term->ldisc, "\033]l", 3, 0);
@@ -4511,7 +4520,7 @@ void term_key(Terminal *term, Key_Sym keysym, wchar_t *text, size_t tlen,
              case PK_END:      xkey = 'E'; break;
              case PK_PAGEUP:   xkey = 'I'; break;
              case PK_PAGEDOWN: xkey = 'G'; break;
-             default: break; /* else gcc warns `enum value not used' */
+             default: xkey=0; break; /* else gcc warns `enum value not used'*/
            }
            p += sprintf((char *) p, "\x1B%c", xkey);
            goto done;
@@ -4524,7 +4533,7 @@ void term_key(Terminal *term, Key_Sym keysym, wchar_t *text, size_t tlen,
          case PK_END:      code = 4; break;
          case PK_PAGEUP:   code = 5; break;
          case PK_PAGEDOWN: code = 6; break;
-         default: break; /* else gcc warns `enum value not used' */
+         default: code = 0; break; /* else gcc warns `enum value not used' */
        }
        p += sprintf((char *) p, "\x1B[%d~", code);
        goto done;
@@ -4568,7 +4577,7 @@ void term_key(Terminal *term, Key_Sym keysym, wchar_t *text, size_t tlen,
          case PK_RIGHT: xkey = 'C'; break;
          case PK_LEFT:  xkey = 'D'; break;
          case PK_REST:  xkey = 'G'; break; /* centre key on number pad */
-         default: break; /* else gcc warns `enum value not used' */
+         default: xkey = 0; break; /* else gcc warns `enum value not used' */
        }
        if (term->vt52_mode)
            p += sprintf((char *) p, "\x1B%c", xkey);