+ * We copy a bunch of stuff out of the Conf structure into local
+ * fields in the Terminal structure, to avoid the repeated tree234
+ * lookups which would be involved in fetching them from the former
+ * every time.
+ */
+void term_copy_stuff_from_conf(Terminal *term)
+{
+ term->ansi_colour = conf_get_int(term->conf, CONF_ansi_colour);
+ term->arabicshaping = conf_get_int(term->conf, CONF_arabicshaping);
+ term->beep = conf_get_int(term->conf, CONF_beep);
+ term->bellovl = conf_get_int(term->conf, CONF_bellovl);
+ term->bellovl_n = conf_get_int(term->conf, CONF_bellovl_n);
+ term->bellovl_s = conf_get_int(term->conf, CONF_bellovl_s);
+ term->bellovl_t = conf_get_int(term->conf, CONF_bellovl_t);
+ term->bidi = conf_get_int(term->conf, CONF_bidi);
+ term->bksp_is_delete = conf_get_int(term->conf, CONF_bksp_is_delete);
+ term->blink_cur = conf_get_int(term->conf, CONF_blink_cur);
+ term->blinktext = conf_get_int(term->conf, CONF_blinktext);
+ term->cjk_ambig_wide = conf_get_int(term->conf, CONF_cjk_ambig_wide);
+ term->conf_height = conf_get_int(term->conf, CONF_height);
+ term->conf_width = conf_get_int(term->conf, CONF_width);
+ term->crhaslf = conf_get_int(term->conf, CONF_crhaslf);
+ term->erase_to_scrollback = conf_get_int(term->conf, CONF_erase_to_scrollback);
+ term->funky_type = conf_get_int(term->conf, CONF_funky_type);
+ term->lfhascr = conf_get_int(term->conf, CONF_lfhascr);
+ term->logflush = conf_get_int(term->conf, CONF_logflush);
+ term->logtype = conf_get_int(term->conf, CONF_logtype);
+ term->mouse_override = conf_get_int(term->conf, CONF_mouse_override);
+ term->nethack_keypad = conf_get_int(term->conf, CONF_nethack_keypad);
+ term->no_alt_screen = conf_get_int(term->conf, CONF_no_alt_screen);
+ term->no_applic_c = conf_get_int(term->conf, CONF_no_applic_c);
+ term->no_applic_k = conf_get_int(term->conf, CONF_no_applic_k);
+ term->no_dbackspace = conf_get_int(term->conf, CONF_no_dbackspace);
+ term->no_mouse_rep = conf_get_int(term->conf, CONF_no_mouse_rep);
+ term->no_remote_charset = conf_get_int(term->conf, CONF_no_remote_charset);
+ term->no_remote_resize = conf_get_int(term->conf, CONF_no_remote_resize);
+ term->no_remote_wintitle = conf_get_int(term->conf, CONF_no_remote_wintitle);
+ term->rawcnp = conf_get_int(term->conf, CONF_rawcnp);
+ term->rect_select = conf_get_int(term->conf, CONF_rect_select);
+ term->remote_qtitle_action = conf_get_int(term->conf, CONF_remote_qtitle_action);
+ term->rxvt_homeend = conf_get_int(term->conf, CONF_rxvt_homeend);
+ term->scroll_on_disp = conf_get_int(term->conf, CONF_scroll_on_disp);
+ term->scroll_on_key = conf_get_int(term->conf, CONF_scroll_on_key);
+ term->xterm_256_colour = conf_get_int(term->conf, CONF_xterm_256_colour);
+
+ /*
+ * Parse the control-character escapes in the configured
+ * answerback string.
+ */
+ {
+ char *answerback = conf_get_str(term->conf, CONF_answerback);
+ int maxlen = strlen(answerback);
+
+ term->answerback = snewn(maxlen, char);
+ term->answerbacklen = 0;
+
+ while (*answerback) {
+ char *n;
+ char c = ctrlparse(answerback, &n);
+ if (n) {
+ term->answerback[term->answerbacklen++] = c;
+ answerback = n;
+ } else {
+ term->answerback[term->answerbacklen++] = *answerback++;
+ }
+ }
+ }
+}
+
+/*