1 /*
2  * Copyright (c) 1993-2017, 2019 Paul Mattes.
3  * Copyright (c) 1990, Jeff Sparkes.
4  * Copyright (c) 1989, Georgia Tech Research Corporation (GTRC), Atlanta,
5  *  GA 30332.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *     * Redistributions of source code must retain the above copyright
12  *       notice, this list of conditions and the following disclaimer.
13  *     * Redistributions in binary form must reproduce the above copyright
14  *       notice, this list of conditions and the following disclaimer in the
15  *       documentation and/or other materials provided with the distribution.
16  *     * Neither the names of Paul Mattes, Jeff Sparkes, GTRC nor their
17  *       contributors may be used to endorse or promote products derived
18  *       from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY PAUL MATTES, JEFF SPARKES AND GTRC "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PAUL MATTES, JEFF SPARKES OR
24  * GTRC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
25  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
29  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 /*
34  *	resources.c
35  *		Resource definitions for x3270.
36  */
37 
38 #include "globals.h"
39 #include "appres.h"
40 #include "resources.h"
41 #include "xappres.h"
42 
43 #include <X11/StringDefs.h>
44 
45 #include "resourcesc.h"
46 
47 #define offset(field)		XtOffset(AppResptr, field)
48 XtResource resources[] = {
49     { ResSaveLines, ClsSaveLines, XtRInt, sizeof(int),
50       offset(interactive.save_lines), XtRString, "4096" },
51     { ResUnlockDelayMs, ClsUnlockDelayMs, XtRInt, sizeof(int),
52       offset(unlock_delay_ms), XtRString, "350" },
53     { ResScriptPort, ClsScriptPort, XtRString, sizeof(String),
54       offset(script_port), XtRString, 0 },
55     { ResHttpd, ClsHttpd, XtRString, sizeof(String),
56       offset(httpd_port), XtRString, 0 },
57     { ResLoginMacro, ClsLoginMacro, XtRString, sizeof(String),
58       offset(login_macro), XtRString, 0 },
59     { ResOversize, ClsOversize, XtRString, sizeof(char *),
60       offset(oversize), XtRString, 0 },
61     { ResConfDir, ClsConfDir, XtRString, sizeof(char *),
62       offset(conf_dir), XtRString, LIBX3270DIR },
63     { ResModel, ClsModel, XtRString, sizeof(char *),
64       offset(model), XtRString, "3279-4-E" },
65     { ResKeymap, ClsKeymap, XtRString, sizeof(char *),
66       offset(interactive.key_map), XtRString, 0 },
67     { ResComposeMap, ClsComposeMap, XtRString, sizeof(char *),
68       offset(interactive.compose_map), XtRString, "latin1" },
69     { ResHostsFile, ClsHostsFile, XtRString, sizeof(char *),
70       offset(hostsfile), XtRString, 0 },
71     { ResPort, ClsPort, XtRString, sizeof(char *),
72       offset(port), XtRString, "telnet" },
73     { ResCharset, ClsCharset, XtRString, sizeof(char *),
74       offset(charset), XtRString, 0 },
75     { ResCodePage, ClsCodePage, XtRString, sizeof(char *),
76       offset(codepage), XtRString, 0 },
77     { ResSbcsCgcsgid, ClsSbcsCgcsgid, XtRString, sizeof(char *),
78       offset(sbcs_cgcsgid), XtRString, 0 },
79     { ResTermName, ClsTermName, XtRString, sizeof(char *),
80       offset(termname), XtRString, 0 },
81     { ResDevName, ClsDevName, XtRString, sizeof(char *),
82       offset(devname), XtRString, 0 },
83     { ResUser, ClsUser, XtRString, sizeof(char *),
84       offset(user), XtRString, 0 },
85     { ResMacros, ClsMacros, XtRString, sizeof(char *),
86       offset(macros), XtRString, 0 },
87     { ResTraceDir, ClsTraceDir, XtRString, sizeof(char *),
88       offset(trace_dir), XtRString, "/tmp" },
89     { ResTraceFile, ClsTraceFile, XtRString, sizeof(char *),
90       offset(trace_file), XtRString, 0 },
91     { ResTraceFileSize, ClsTraceFileSize, XtRString, sizeof(char *),
92       offset(trace_file_size), XtRString, 0 },
93     { ResScreenTraceFile, ClsScreenTraceFile, XtRString, sizeof(char *),
94       offset(screentrace.file), XtRString, 0 },
95     { ResScreenTraceTarget, ClsScreenTraceTarget, XtRString, sizeof(char *),
96       offset(screentrace.target), XtRString, 0 },
97     { ResScreenTraceType, ClsScreenTraceType, XtRString, sizeof(char *),
98       offset(screentrace.type), XtRString, 0 },
99     { ResConnectFileName, ClsConnectFileName, XtRString, sizeof(String),
100       offset(connectfile_name), XtRString, "~/.x3270connect" },
101     { ResIdleCommand, ClsIdleCommand, XtRString, sizeof(String),
102       offset(idle_command), XtRString, 0 },
103     { ResIdleTimeout, ClsIdleTimeout, XtRString, sizeof(String),
104       offset(idle_timeout), XtRString, 0 },
105     { ResProxy, ClsProxy, XtRString, sizeof(String),
106       offset(proxy), XtRString, 0 },
107     { ResHostname, ClsHostname, XtRString, sizeof(String),
108       offset(hostname), XtRString, 0 },
109     { ResMaxRecent, ClsMaxRecent, XtRInt, sizeof(int),
110       offset(max_recent), XtRString, "5" },
111     { ResSuppressActions, ClsSuppressActions, XtRString, sizeof(String),
112       offset(suppress_actions), XtRString, 0 },
113     { ResCrosshairColor, ClsCrosshairColor, XtRString, sizeof(String),
114       offset(interactive.crosshair_color), XtRString, "purple" },
115     { ResConnectTimeout, ClsConnectTimeout, XtRInt, sizeof(int),
116       offset(connect_timeout), XtRString, "0" },
117     { ResConsole, ClsConsole, XtRString, sizeof(char *),
118       offset(interactive.console), XtRString, 0 },
119     { ResNopSeconds, ClsNopSeconds, XtRInt, sizeof(int),
120       offset(nop_seconds), XtRString, "0" },
121     { ResMinVersion, ClsMinVersion, XtRString, sizeof(String),
122       offset(min_version), XtRString, 0 },
123 
124     { ResErase, ClsErase, XtRString, sizeof(char *),
125       offset(linemode.erase), XtRString, "^?" },
126     { ResKill, ClsKill, XtRString, sizeof(char *),
127       offset(linemode.kill), XtRString, "^U" },
128     { ResWerase, ClsWerase, XtRString, sizeof(char *),
129       offset(linemode.werase), XtRString, "^W" },
130     { ResRprnt, ClsRprnt, XtRString, sizeof(char *),
131       offset(linemode.rprnt), XtRString, "^R" },
132     { ResLnext, ClsLnext, XtRString, sizeof(char *),
133       offset(linemode.lnext), XtRString, "^V" },
134     { ResIntr, ClsIntr, XtRString, sizeof(char *),
135       offset(linemode.intr), XtRString, "^C" },
136     { ResQuit, ClsQuit, XtRString, sizeof(char *),
137       offset(linemode.quit), XtRString, "^\\" },
138     { ResEof, ClsEof, XtRString, sizeof(char *),
139       offset(linemode.eof), XtRString, "^D" },
140 
141     { ResPrinterLu, ClsPrinterLu, XtRString, sizeof(char *),
142       offset(interactive.printer_lu), XtRString, 0 },
143     { ResDbcsCgcsgid, ClsDbcsCgcsgid, XtRString, sizeof(char *),
144       offset(dbcs_cgcsgid), XtRString, 0 },
145     { ResAcceptHostname, ClsAcceptHostname, XtRString, sizeof(char *),
146       offset(tls.accept_hostname), XtRString, 0 },
147     { ResCaDir, ClsCaDir, XtRString, sizeof(char *),
148       offset(tls.ca_dir), XtRString, 0 },
149     { ResCaFile, ClsCaFile, XtRString, sizeof(char *),
150       offset(tls.ca_file), XtRString, 0 },
151     { ResCertFile, ClsCertFile, XtRString, sizeof(char *),
152       offset(tls.cert_file), XtRString, 0 },
153     { ResCertFileType, ClsCertFileType, XtRString, sizeof(char *),
154       offset(tls.cert_file_type), XtRString, 0 },
155     { ResChainFile, ClsChainFile, XtRString, sizeof(char *),
156       offset(tls.chain_file), XtRString, 0 },
157     { ResKeyFile, ClsKeyFile, XtRString, sizeof(char *),
158       offset(tls.key_file), XtRString, 0 },
159     { ResKeyFileType, ClsKeyFileType, XtRString, sizeof(char *),
160       offset(tls.key_file_type), XtRString, 0 },
161     { ResKeyPasswd, ClsKeyPasswd, XtRString, sizeof(char *),
162       offset(tls.key_passwd), XtRString, 0 },
163 
164     { ResFtAllocation, ClsFtAllocation, XtRString, sizeof(char *),
165       offset(ft.allocation), XtRString, 0 },
166     { ResFtAvblock, ClsFtAvblock, XtRInt, sizeof(int),
167       offset(ft.avblock), XtRString, "0" },
168     { ResFtBlksize, ClsFtBlksize, XtRInt, sizeof(int),
169       offset(ft.blksize), XtRString, "0" },
170     { ResFtBufferSize, ClsFtBufferSize, XtRInt, sizeof(int),
171       offset(ft.dft_buffer_size), XtRString, STR(DFT_BUF) },
172     { ResFtCr, ClsFtCr, XtRString, sizeof(char *),
173       offset(ft.cr), XtRString, 0 },
174     { ResFtDirection, ClsFtDirection, XtRString, sizeof(char *),
175       offset(ft.direction), XtRString, 0 },
176     { ResFtExist, ClsFtExist, XtRString, sizeof(char *),
177       offset(ft.exist), XtRString, 0 },
178     { ResFtHost, ClsFtHost, XtRString, sizeof(char *),
179       offset(ft.host), XtRString, 0 },
180     { ResFtHostFile, ClsFtHostFile, XtRString, sizeof(char *),
181       offset(ft.host_file), XtRString, 0 },
182     { ResFtLocalFile, ClsFtLocalFile, XtRString, sizeof(char *),
183       offset(ft.local_file), XtRString, 0 },
184     { ResFtLrecl, ClsFtLrecl, XtRInt, sizeof(int),
185       offset(ft.lrecl), XtRString, "0" },
186     { ResFtMode, ClsFtMode, XtRString, sizeof(char *),
187       offset(ft.mode), XtRString, 0 },
188     { ResFtPrimarySpace, ClsFtPrimarySpace, XtRInt, sizeof(int),
189       offset(ft.primary_space), XtRString, "0" },
190     { ResFtRecfm, ClsFtRecfm, XtRString, sizeof(char *),
191       offset(ft.recfm), XtRString, 0 },
192     { ResFtRemap, ClsFtRemap, XtRString, sizeof(char *),
193       offset(ft.remap), XtRString, 0 },
194     { ResFtSecondarySpace, ClsFtSecondarySpace, XtRInt, sizeof(int),
195       offset(ft.secondary_space), XtRString, "0" },
196 };
197 #undef offset
198 
199 Cardinal num_resources = XtNumber(resources);
200 
201 #define offset(field)	XtOffset(xappresptr_t, field)
202 #define boffset(field)	XtOffset(xappresptr_t, bools.field)
203 #define btoffset(index)	boffset(toggle[index])
204 XtResource xresources[] = {
205     { XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
206       offset(foreground), XtRString, "XtDefaultForeground" },
207     { XtNbackground, XtCBackground, XtRPixel, sizeof(Pixel),
208       offset(background), XtRString, "XtDefaultBackground" },
209     { ResNormalCursor, ClsNormalCursor, XtRCursor, sizeof(Cursor),
210       offset(normal_mcursor), XtRString, "top_left_arrow" },
211     { ResWaitCursor, ClsWaitCursor, XtRCursor, sizeof(Cursor),
212       offset(wait_mcursor), XtRString, "watch" },
213     { ResLockedCursor, ClsLockedCursor, XtRCursor, sizeof(Cursor),
214       offset(locked_mcursor), XtRString, "X_cursor" },
215 
216     { ResColorBackground, ClsColorBackground, XtRString, sizeof(String),
217       offset(colorbg_name), XtRString, "black" },
218     { ResSelectBackground, ClsSelectBackground, XtRString, sizeof(String),
219       offset(selbg_name), XtRString, "dim gray" },
220     { ResNormalColor, ClsNormalColor, XtRString, sizeof(String),
221       offset(normal_name), XtRString, "green" },
222     { ResInputColor, ClsInputColor, XtRString, sizeof(String),
223       offset(select_name), XtRString, "green" },
224     { ResBoldColor, ClsBoldColor, XtRString, sizeof(String),
225       offset(bold_name), XtRString, "green" },
226     { ResCursorColor, ClsCursorColor, XtRString, sizeof(String),
227       offset(cursor_color_name), XtRString, "red" },
228     { ResKeypad, ClsKeypad, XtRString, sizeof(String),
229       offset(keypad), XtRString, KpRight },
230     { ResKeypadOn, ClsKeypadOn, XtRBoolean, sizeof(Boolean),
231       offset(keypad_on), XtRString, ResFalse },
232     { ResAplCircledAlpha, ClsAplCircledAlpha, XtRBoolean, sizeof(Boolean),
233       offset(apl_circled_alpha), XtRString, ResFalse },
234     { ResInvertKeypadShift, ClsInvertKeypadShift, XtRBoolean, sizeof(Boolean),
235       offset(invert_kpshift), XtRString, ResFalse },
236     { ResActiveIcon, ClsActiveIcon, XtRBoolean, sizeof(Boolean),
237       offset(active_icon), XtRString, ResFalse },
238     { ResLabelIcon, ClsLabelIcon, XtRBoolean, sizeof(Boolean),
239       offset(label_icon), XtRString, ResFalse },
240     { ResKeypadBackground, ClsKeypadBackground, XtRString, sizeof(String),
241       offset(keypadbg_name), XtRString, "grey70" },
242     { ResEmulatorFont, ClsEmulatorFont, XtRString, sizeof(char *),
243       offset(efontname), XtRString, 0 },
244     { ResUseCursorColor, ClsUseCursorColor, XtRBoolean, sizeof(Boolean),
245       offset(use_cursor_color), XtRString, ResFalse },
246     { ResVisualSelect, ClsVisualSelect, XtRBoolean, sizeof(Boolean),
247       offset(visual_select), XtRString, ResFalse },
248     { ResSuppressHost, ClsSuppressHost, XtRBoolean, sizeof(Boolean),
249       offset(suppress_host), XtRString, ResFalse },
250     { ResSuppressFontMenu, ClsSuppressFontMenu, XtRBoolean, sizeof(Boolean),
251       offset(suppress_font_menu), XtRString, ResFalse },
252     { ResAllowResize, ClsAllowResize, XtRBoolean, sizeof(Boolean),
253       offset(allow_resize), XtRString, ResTrue },
254     { ResNoOther, ClsNoOther, XtRBoolean, sizeof(Boolean),
255       offset(no_other), XtRString, ResFalse },
256     { ResBellVolume, ClsBellVolume, XtRInt, sizeof(int),
257       offset(bell_volume), XtRString, "0" },
258     { ResCharClass, ClsCharClass, XtRString, sizeof(char *),
259       offset(char_class), XtRString, 0 },
260     { ResModifiedSelColor, ClsModifiedSelColor, XtRInt, sizeof(int),
261       offset(modified_sel_color), XtRString, "10" },
262     { ResVisualSelectColor, ClsVisualSelectColor, XtRInt, sizeof(int),
263       offset(visual_select_color), XtRString, "6" },
264     { ResIconFont, ClsIconFont, XtRString, sizeof(char *),
265       offset(icon_font), XtRString, "nil2" },
266     { ResIconLabelFont, ClsIconLabelFont, XtRString, sizeof(char *),
267       offset(icon_label_font), XtRString, "8x13" },
268     { ResFixedSize, ClsFixedSize, XtRString, sizeof(char *),
269       offset(fixed_size), XtRString, 0 },
270     { ResColorScheme, ClsColorScheme, XtRString, sizeof(String),
271       offset(color_scheme), XtRString, "default" },
272     { ResInputMethod, ClsInputMethod, XtRString, sizeof(char *),
273       offset(input_method), XtRString, 0 },
274     { ResPreeditType, ClsPreeditType, XtRString, sizeof(char *),
275       offset(preedit_type), XtRString, PT_OVER_THE_SPOT "+1" },
276     { ResDpi, ClsDpi, XtRString, sizeof(char *),
277       offset(dpi), XtRString, 0 },
278     { ResXQuartzHack, ClsXQuartzHack, XtRBoolean, sizeof(Boolean),
279       offset(xquartz_hack), XtRString, "false" },
280 
281 #if defined(USE_APP_DEFAULTS) /*[*/
282     { ResAdVersion, ClsAdVersion, XtRString, sizeof(char *),
283       offset(ad_version), XtRString, 0 },
284 #endif /*]*/
285 
286     { ResMono, ClsMono, XtRBoolean, sizeof(Boolean),
287       boffset(interactive.mono), XtRString, ResFalse },
288     { ResMenuBar, ClsMenuBar, XtRBoolean, sizeof(Boolean),
289       boffset(interactive.menubar), XtRString, ResTrue },
290     { ResVisualBell, ClsVisualBell, XtRBoolean, sizeof(Boolean),
291       boffset(interactive.visual_bell), XtRString, ResFalse },
292     { ResOnce, ClsOnce, XtRBoolean, sizeof(Boolean),
293       boffset(once), XtRString, ResFalse },
294     { ResScripted, ClsScripted, XtRBoolean, sizeof(Boolean),
295       boffset(scripted), XtRString, ResFalse },
296     { ResModifiedSel, ClsModifiedSel, XtRBoolean, sizeof(Boolean),
297       boffset(modified_sel), XtRString, ResFalse },
298     { ResUnlockDelay, ClsUnlockDelay, XtRBoolean, sizeof(Boolean),
299       boffset(unlock_delay), XtRString, ResTrue },
300     { ResBindLimit, ClsBindLimit, XtRBoolean, sizeof(Boolean),
301       boffset(bind_limit), XtRString, ResTrue },
302     { ResBindUnlock, ClsBindUnlock, XtRBoolean, sizeof(Boolean),
303       boffset(bind_unlock), XtRString, ResFalse },
304     { ResNewEnviron, ClsNewEnviron, XtRBoolean, sizeof(Boolean),
305       boffset(new_environ), XtRString, ResTrue },
306     { ResSocket, ClsSocket, XtRBoolean, sizeof(Boolean),
307       boffset(socket), XtRString, ResFalse },
308     { ResReconnect, ClsReconnect, XtRBoolean, sizeof(Boolean),
309       boffset(interactive.reconnect), XtRString, ResFalse },
310     { ResDoConfirms, ClsDoConfirms, XtRBoolean, sizeof(Boolean),
311       boffset(interactive.do_confirms), XtRString, ResTrue },
312     { ResNumericLock, ClsNumericLock, XtRBoolean, sizeof(Boolean),
313       boffset(numeric_lock), XtRString, ResFalse },
314     { ResSecure, ClsSecure, XtRBoolean, sizeof(Boolean),
315       boffset(secure), XtRString, ResFalse },
316     { ResOerrLock, ClsOerrLock, XtRBoolean, sizeof(Boolean),
317       boffset(oerr_lock), XtRString, ResTrue },
318     { ResDebugTracing, ClsDebugTracing, XtRBoolean, sizeof(Boolean),
319       boffset(debug_tracing), XtRString, ResTrue },
320     { ResDisconnectClear, ClsDisconnectClear, XtRBoolean, sizeof(Boolean),
321       boffset(disconnect_clear), XtRString, ResFalse },
322     { ResHighlightBold, ClsHighlightBold, XtRBoolean, sizeof(Boolean),
323       boffset(highlight_bold), XtRString, ResFalse },
324     { ResBsdTm, ClsBsdTm, XtRBoolean, sizeof(Boolean),
325       boffset(bsd_tm), XtRString, ResFalse },
326     { ResTraceMonitor, ClsTraceMonitor, XtRBoolean, sizeof(Boolean),
327       boffset(trace_monitor), XtRString, ResTrue },
328     { ResIdleCommandEnabled, ClsIdleCommandEnabled, XtRBoolean, sizeof(Boolean),
329       boffset(idle_command_enabled), XtRString, ResFalse },
330     { ResNvtMode, ClsNvtMode, XtRBoolean, sizeof(Boolean),
331       boffset(nvt_mode), XtRString, ResFalse },
332     { ResScriptPortOnce, ClsScriptPortOnce, XtRBoolean, sizeof(Boolean),
333       boffset(script_port_once), XtRString, ResFalse },
334     { ResUtf8, ClsUtf8, XtRBoolean, sizeof(Boolean),
335       boffset(utf8), XtRString, ResFalse },
336 
337     { ResMonoCase, ClsMonoCase, XtRBoolean, sizeof(Boolean),
338       btoffset(MONOCASE), XtRString, ResFalse },
339     { ResAltCursor, ClsAltCursor, XtRBoolean, sizeof(Boolean),
340       btoffset(ALT_CURSOR), XtRString, ResFalse },
341     { ResCursorBlink, ClsCursorBlink, XtRBoolean, sizeof(Boolean),
342       btoffset(CURSOR_BLINK), XtRString, ResFalse },
343     { ResShowTiming, ClsShowTiming, XtRBoolean, sizeof(Boolean),
344       btoffset(SHOW_TIMING), XtRString, ResFalse },
345     { ResTrace, ClsTrace, XtRBoolean, sizeof(Boolean),
346       btoffset(TRACING), XtRString, ResFalse },
347     { ResScrollBar, ClsScrollBar, XtRBoolean, sizeof(Boolean),
348       btoffset(SCROLL_BAR), XtRString, ResTrue },
349     { ResLineWrap, ClsLineWrap, XtRBoolean, sizeof(Boolean),
350       btoffset(LINE_WRAP), XtRString, ResTrue },
351     { ResBlankFill, ClsBlankFill, XtRBoolean, sizeof(Boolean),
352       btoffset(BLANK_FILL), XtRString, ResTrue },
353     { ResScreenTrace, ClsScreenTrace, XtRBoolean, sizeof(Boolean),
354       btoffset(SCREEN_TRACE), XtRString, ResFalse },
355     { ResMarginedPaste, ClsMarginedPaste, XtRBoolean, sizeof(Boolean),
356       btoffset(MARGINED_PASTE), XtRString, ResFalse },
357     { ResRectangleSelect, ClsRectangleSelect, XtRBoolean, sizeof(Boolean),
358       btoffset(RECTANGLE_SELECT), XtRString, ResFalse },
359     { ResCrosshair, ClsCrosshair, XtRBoolean, sizeof(Boolean),
360       btoffset(CROSSHAIR), XtRString, ResFalse },
361     { ResVisibleControl, ClsVisibleControl, XtRBoolean, sizeof(Boolean),
362       btoffset(VISIBLE_CONTROL), XtRString, ResFalse },
363     { ResAidWait, ClsAidWait, XtRBoolean, sizeof(Boolean),
364       btoffset(AID_WAIT), XtRString, ResTrue },
365     { ResOverlayPaste, ClsOverlayPaste, XtRBoolean, sizeof(Boolean),
366       btoffset(OVERLAY_PASTE), XtRString, ResFalse },
367     { ResTypeahead, ClsTypeahead, XtRBoolean, sizeof(Boolean),
368       btoffset(TYPEAHEAD), XtRString, ResTrue },
369     { ResAplMode, ClsAplMode, XtRBoolean, sizeof(Boolean),
370       btoffset(APL_MODE), XtRString, ResFalse },
371     { ResAlwaysInsert, ClsAlwaysInsert, XtRBoolean, sizeof(Boolean),
372       btoffset(ALWAYS_INSERT), XtRString, ResFalse },
373     { ResRightToLeftMode, ClsRightToLeftMode, XtRBoolean, sizeof(Boolean),
374       btoffset(RIGHT_TO_LEFT), XtRString, ResFalse },
375     { ResReverseInputMode, ClsReverseInputMode, XtRBoolean, sizeof(Boolean),
376       btoffset(REVERSE_INPUT), XtRString, ResFalse },
377     { ResInsertMode, ClsInsertMode, XtRBoolean, sizeof(Boolean),
378       btoffset(INSERT_MODE), XtRString, ResFalse },
379 
380     { ResIcrnl, ClsIcrnl, XtRBoolean, sizeof(Boolean),
381       boffset(linemode.icrnl), XtRString, ResTrue },
382     { ResInlcr, ClsInlcr, XtRBoolean, sizeof(Boolean),
383       boffset(linemode.inlcr), XtRString, ResFalse },
384     { ResOnlcr, ClsOnlcr, XtRBoolean, sizeof(Boolean),
385       boffset(linemode.onlcr), XtRString, ResTrue },
386 
387     { ResStartTls, ClsStartTls, XtRBoolean, sizeof(Boolean),
388       boffset(tls.starttls), XtRString, ResTrue },
389     { ResVerifyHostCert, ClsVerifyHostCert, XtRBoolean, sizeof(Boolean),
390       boffset(tls.verify_host_cert), XtRString, ResTrue },
391 };
392 
393 Cardinal num_xresources = XtNumber(xresources);
394