* Implement a different way to delete a password from the cache.
[alpine.git] / pith / conf.h
blobc8225fe27f8a8df9cc97546f6f33365af44d7cba
1 /*
2 * $Id: conf.h 1155 2008-08-21 18:33:21Z hubert@u.washington.edu $
4 * ========================================================================
5 * Copyright 2013-2022 Eduardo Chappa
6 * Copyright 2006-2008 University of Washington
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * ========================================================================
17 #ifndef PITH_CONFIG_INCLUDED
18 #define PITH_CONFIG_INCLUDED
21 #include "../pith/conftype.h"
22 #include "../pith/remtype.h"
23 #include "../pith/state.h"
24 #include "../pith/pattern.h"
25 #include "../pith/color.h"
28 #ifndef DF_REMOTE_ABOOK_VALIDITY
29 #define DF_REMOTE_ABOOK_VALIDITY "5"
30 #endif
31 #ifndef DF_GOTO_DEFAULT_RULE
32 #define DF_GOTO_DEFAULT_RULE "inbox-or-folder-in-recent-collection"
33 #endif
34 #ifndef DF_INCOMING_STARTUP
35 #define DF_INCOMING_STARTUP "first-unseen"
36 #endif
37 #ifndef DF_PRUNING_RULE
38 #define DF_PRUNING_RULE "ask-ask"
39 #endif
40 #ifndef DF_REOPEN_RULE
41 #define DF_REOPEN_RULE "ask-no-n"
42 #endif
43 #ifndef DF_THREAD_DISP_STYLE
44 #define DF_THREAD_DISP_STYLE "struct"
45 #endif
46 #ifndef DF_THREAD_INDEX_STYLE
47 #define DF_THREAD_INDEX_STYLE "exp"
48 #endif
49 #ifndef DF_THREAD_MORE_CHAR
50 #define DF_THREAD_MORE_CHAR ">"
51 #endif
52 #ifndef DF_THREAD_EXP_CHAR
53 #define DF_THREAD_EXP_CHAR "."
54 #endif
55 #ifndef DF_THREAD_LASTREPLY_CHAR
56 #define DF_THREAD_LASTREPLY_CHAR "\\"
57 #endif
58 #ifndef DF_MAILDROPCHECK
59 #define DF_MAILDROPCHECK "60"
60 #endif
61 #ifndef DF_MAXREMSTREAM
62 #define DF_MAXREMSTREAM "3"
63 #endif
64 #ifndef DF_VIEW_MARGIN_RIGHT
65 #define DF_VIEW_MARGIN_RIGHT "4"
66 #endif
67 #ifndef DF_QUOTE_SUPPRESSION
68 #define DF_QUOTE_SUPPRESSION "0"
69 #endif
70 #ifndef DF_DEADLETS
71 #define DF_DEADLETS "1"
72 #endif
73 #ifndef DF_NMW_WIDTH
74 #define DF_NMW_WIDTH "80"
75 #endif
78 #define VAR_PERSONAL_NAME vars[V_PERSONAL_NAME].current_val.p
79 #define FIX_PERSONAL_NAME vars[V_PERSONAL_NAME].fixed_val.p
80 #define COM_PERSONAL_NAME vars[V_PERSONAL_NAME].cmdline_val.p
81 #define VAR_USER_ID vars[V_USER_ID].current_val.p
82 #define COM_USER_ID vars[V_USER_ID].cmdline_val.p
83 #define VAR_USER_DOMAIN vars[V_USER_DOMAIN].current_val.p
84 #define VAR_SMTP_SERVER vars[V_SMTP_SERVER].current_val.l
85 #define FIX_SMTP_SERVER vars[V_SMTP_SERVER].fixed_val.l
86 #define COM_SMTP_SERVER vars[V_SMTP_SERVER].cmdline_val.l
87 #define GLO_SMTP_SERVER vars[V_SMTP_SERVER].global_val.l
88 #define VAR_INBOX_PATH vars[V_INBOX_PATH].current_val.p
89 #define GLO_INBOX_PATH vars[V_INBOX_PATH].global_val.p
90 #define VAR_INCOMING_FOLDERS vars[V_INCOMING_FOLDERS].current_val.l
91 #define VAR_FOLDER_SPEC vars[V_FOLDER_SPEC].current_val.l
92 #define GLO_FOLDER_SPEC vars[V_FOLDER_SPEC].global_val.l
93 #define VAR_NEWS_SPEC vars[V_NEWS_SPEC].current_val.l
94 #define VAR_ARCHIVED_FOLDERS vars[V_ARCHIVED_FOLDERS].current_val.l
95 #define VAR_PRUNED_FOLDERS vars[V_PRUNED_FOLDERS].current_val.l
96 #define GLO_PRUNED_FOLDERS vars[V_PRUNED_FOLDERS].global_val.l
97 #define VAR_DEFAULT_FCC vars[V_DEFAULT_FCC].current_val.p
98 #define GLO_DEFAULT_FCC vars[V_DEFAULT_FCC].global_val.p
99 #define VAR_DEFAULT_SAVE_FOLDER vars[V_DEFAULT_SAVE_FOLDER].current_val.p
100 #define GLO_DEFAULT_SAVE_FOLDER vars[V_DEFAULT_SAVE_FOLDER].global_val.p
101 #define VAR_POSTPONED_FOLDER vars[V_POSTPONED_FOLDER].current_val.p
102 #define GLO_POSTPONED_FOLDER vars[V_POSTPONED_FOLDER].global_val.p
103 #define VAR_MAIL_DIRECTORY vars[V_MAIL_DIRECTORY].current_val.p
104 #define GLO_MAIL_DIRECTORY vars[V_MAIL_DIRECTORY].global_val.p
105 #define VAR_READ_MESSAGE_FOLDER vars[V_READ_MESSAGE_FOLDER].current_val.p
106 #define GLO_READ_MESSAGE_FOLDER vars[V_READ_MESSAGE_FOLDER].global_val.p
107 #define VAR_FORM_FOLDER vars[V_FORM_FOLDER].current_val.p
108 #define GLO_FORM_FOLDER vars[V_FORM_FOLDER].global_val.p
109 #define VAR_TRASH_FOLDER vars[V_TRASH_FOLDER].current_val.p
110 #define GLO_TRASH_FOLDER vars[V_TRASH_FOLDER].global_val.p
111 #define VAR_SIGNATURE_FILE vars[V_SIGNATURE_FILE].current_val.p
112 #define GLO_SIGNATURE_FILE vars[V_SIGNATURE_FILE].global_val.p
113 #define VAR_LITERAL_SIG vars[V_LITERAL_SIG].current_val.p
114 #define VAR_GLOB_ADDRBOOK vars[V_GLOB_ADDRBOOK].current_val.l
115 #define VAR_ADDRESSBOOK vars[V_ADDRESSBOOK].current_val.l
116 #define GLO_ADDRESSBOOK vars[V_ADDRESSBOOK].global_val.l
117 #define FIX_ADDRESSBOOK vars[V_ADDRESSBOOK].fixed_val.l
118 #define VAR_FEATURE_LIST vars[V_FEATURE_LIST].current_val.l
119 #define VAR_INIT_CMD_LIST vars[V_INIT_CMD_LIST].current_val.l
120 #define GLO_INIT_CMD_LIST vars[V_INIT_CMD_LIST].global_val.l
121 #define COM_INIT_CMD_LIST vars[V_INIT_CMD_LIST].cmdline_val.l
122 #define VAR_COMP_HDRS vars[V_COMP_HDRS].current_val.l
123 #define GLO_COMP_HDRS vars[V_COMP_HDRS].global_val.l
124 #define VAR_CUSTOM_HDRS vars[V_CUSTOM_HDRS].current_val.l
125 #define VAR_VIEW_HEADERS vars[V_VIEW_HEADERS].current_val.l
126 #define VAR_VIEW_MARGIN_LEFT vars[V_VIEW_MARGIN_LEFT].current_val.p
127 #define GLO_VIEW_MARGIN_LEFT vars[V_VIEW_MARGIN_LEFT].global_val.p
128 #define VAR_VIEW_MARGIN_RIGHT vars[V_VIEW_MARGIN_RIGHT].current_val.p
129 #define GLO_VIEW_MARGIN_RIGHT vars[V_VIEW_MARGIN_RIGHT].global_val.p
130 #define VAR_QUOTE_SUPPRESSION vars[V_QUOTE_SUPPRESSION].current_val.p
131 #define GLO_QUOTE_SUPPRESSION vars[V_QUOTE_SUPPRESSION].global_val.p
132 #ifndef _WINDOWS
133 #define VAR_COLOR_STYLE vars[V_COLOR_STYLE].current_val.p
134 #define GLO_COLOR_STYLE vars[V_COLOR_STYLE].global_val.p
135 #endif
136 #if !defined(_WINDOWS) || defined(WINDOWS_UNIXSSL_CERTS)
137 #define VAR_SSLCAPATH vars[V_SSLCAPATH].current_val.l
138 #define GLO_SSLCAPATH vars[V_SSLCAPATH].global_val.l
139 #define VAR_SSLCAFILE vars[V_SSLCAFILE].current_val.l
140 #define GLO_SSLCAFILE vars[V_SSLCAFILE].global_val.l
141 #define VAR_SSLUSERCAPATH vars[V_USERSSLCAPATH].current_val.l
142 #define GLO_SSLUSERCAPATH vars[V_USERSSLCAPATH].global_val.l
143 #define VAR_SSLUSERCAFILE vars[V_USERSSLCAFILE].current_val.l
144 #define GLO_SSLUSERCAFILE vars[V_USERSSLCAFILE].global_val.l
145 #define VAR_SSLCIPHERS vars[V_SSLCIPHERS].current_val.p
146 #endif
147 #define VAR_INDEX_COLOR_STYLE vars[V_INDEX_COLOR_STYLE].current_val.p
148 #define GLO_INDEX_COLOR_STYLE vars[V_INDEX_COLOR_STYLE].global_val.p
149 #define VAR_TITLEBAR_COLOR_STYLE vars[V_TITLEBAR_COLOR_STYLE].current_val.p
150 #define GLO_TITLEBAR_COLOR_STYLE vars[V_TITLEBAR_COLOR_STYLE].global_val.p
151 #define VAR_SAVED_MSG_NAME_RULE vars[V_SAVED_MSG_NAME_RULE].current_val.p
152 #define GLO_SAVED_MSG_NAME_RULE vars[V_SAVED_MSG_NAME_RULE].global_val.p
153 #define VAR_FCC_RULE vars[V_FCC_RULE].current_val.p
154 #define GLO_FCC_RULE vars[V_FCC_RULE].global_val.p
155 #define VAR_SORT_KEY vars[V_SORT_KEY].current_val.p
156 #define GLO_SORT_KEY vars[V_SORT_KEY].global_val.p
157 #define COM_SORT_KEY vars[V_SORT_KEY].cmdline_val.p
158 #define VAR_AB_SORT_RULE vars[V_AB_SORT_RULE].current_val.p
159 #define GLO_AB_SORT_RULE vars[V_AB_SORT_RULE].global_val.p
160 #define VAR_FLD_SORT_RULE vars[V_FLD_SORT_RULE].current_val.p
161 #define GLO_FLD_SORT_RULE vars[V_FLD_SORT_RULE].global_val.p
162 #ifndef _WINDOWS
163 #define VAR_CHAR_SET vars[V_CHAR_SET].current_val.p
164 #define GLO_CHAR_SET vars[V_CHAR_SET].global_val.p
165 #define VAR_OLD_CHAR_SET vars[V_OLD_CHAR_SET].current_val.p
166 #define VAR_KEY_CHAR_SET vars[V_KEY_CHAR_SET].current_val.p
167 #endif /* ! _WINDOWS */
168 #define VAR_POST_CHAR_SET vars[V_POST_CHAR_SET].current_val.p
169 #define GLO_POST_CHAR_SET vars[V_POST_CHAR_SET].global_val.p
170 #define VAR_UNK_CHAR_SET vars[V_UNK_CHAR_SET].current_val.p
171 #define VAR_EDITOR vars[V_EDITOR].current_val.l
172 #define GLO_EDITOR vars[V_EDITOR].global_val.l
173 #define VAR_SPELLER vars[V_SPELLER].current_val.p
174 #define GLO_SPELLER vars[V_SPELLER].global_val.p
175 #ifdef _WINDOWS
176 #define VAR_DICTIONARY vars[V_DICTIONARY].current_val.l
177 #define GLO_DICTIONARY vars[V_DICTIONARY].global_val.l
178 #endif /* _WINDOWS */
179 #define VAR_FILLCOL vars[V_FILLCOL].current_val.p
180 #define GLO_FILLCOL vars[V_FILLCOL].global_val.p
181 #define VAR_DEADLETS vars[V_DEADLETS].current_val.p
182 #define GLO_DEADLETS vars[V_DEADLETS].global_val.p
183 #define VAR_REPLY_STRING vars[V_REPLY_STRING].current_val.p
184 #define GLO_REPLY_STRING vars[V_REPLY_STRING].global_val.p
185 #define VAR_WORDSEPS vars[V_WORDSEPS].current_val.l
186 #define VAR_QUOTE_REPLACE_STRING vars[V_QUOTE_REPLACE_STRING].current_val.p
187 #define GLO_QUOTE_REPLACE_STRING vars[V_QUOTE_REPLACE_STRING].global_val.p
188 #define VAR_REPLY_INTRO vars[V_REPLY_INTRO].current_val.p
189 #define GLO_REPLY_INTRO vars[V_REPLY_INTRO].global_val.p
190 #define VAR_EMPTY_HDR_MSG vars[V_EMPTY_HDR_MSG].current_val.p
191 #define GLO_EMPTY_HDR_MSG vars[V_EMPTY_HDR_MSG].global_val.p
192 #define VAR_IMAGE_VIEWER vars[V_IMAGE_VIEWER].current_val.p
193 #define GLO_IMAGE_VIEWER vars[V_IMAGE_VIEWER].global_val.p
194 #define VAR_USE_ONLY_DOMAIN_NAME vars[V_USE_ONLY_DOMAIN_NAME].current_val.p
195 #define GLO_USE_ONLY_DOMAIN_NAME vars[V_USE_ONLY_DOMAIN_NAME].global_val.p
196 #define VAR_PRINTER vars[V_PRINTER].current_val.p
197 #define GLO_PRINTER vars[V_PRINTER].global_val.p
198 #define VAR_PERSONAL_PRINT_COMMAND vars[V_PERSONAL_PRINT_COMMAND].current_val.l
199 #define GLO_PERSONAL_PRINT_COMMAND vars[V_PERSONAL_PRINT_COMMAND].global_val.l
200 #define VAR_PERSONAL_PRINT_CATEGORY vars[V_PERSONAL_PRINT_CATEGORY].current_val.p
201 #define GLO_PERSONAL_PRINT_CATEGORY vars[V_PERSONAL_PRINT_CATEGORY].global_val.p
202 #define VAR_STANDARD_PRINTER vars[V_STANDARD_PRINTER].current_val.l
203 #define GLO_STANDARD_PRINTER vars[V_STANDARD_PRINTER].global_val.l
204 #define FIX_STANDARD_PRINTER vars[V_STANDARD_PRINTER].fixed_val.l
205 #define VAR_LAST_TIME_PRUNE_QUESTION vars[V_LAST_TIME_PRUNE_QUESTION].current_val.p
206 #define VAR_LAST_VERS_USED vars[V_LAST_VERS_USED].current_val.p
207 #define VAR_BUGS_FULLNAME vars[V_BUGS_FULLNAME].current_val.p
208 #define GLO_BUGS_FULLNAME vars[V_BUGS_FULLNAME].global_val.p
209 #define VAR_BUGS_ADDRESS vars[V_BUGS_ADDRESS].current_val.p
210 #define GLO_BUGS_ADDRESS vars[V_BUGS_ADDRESS].global_val.p
211 #define VAR_BUGS_EXTRAS vars[V_BUGS_EXTRAS].current_val.p
212 #define GLO_BUGS_EXTRAS vars[V_BUGS_EXTRAS].global_val.p
213 #define VAR_SUGGEST_FULLNAME vars[V_SUGGEST_FULLNAME].current_val.p
214 #define GLO_SUGGEST_FULLNAME vars[V_SUGGEST_FULLNAME].global_val.p
215 #define VAR_SUGGEST_ADDRESS vars[V_SUGGEST_ADDRESS].current_val.p
216 #define GLO_SUGGEST_ADDRESS vars[V_SUGGEST_ADDRESS].global_val.p
217 #define VAR_LOCAL_FULLNAME vars[V_LOCAL_FULLNAME].current_val.p
218 #define GLO_LOCAL_FULLNAME vars[V_LOCAL_FULLNAME].global_val.p
219 #define VAR_LOCAL_ADDRESS vars[V_LOCAL_ADDRESS].current_val.p
220 #define GLO_LOCAL_ADDRESS vars[V_LOCAL_ADDRESS].global_val.p
221 #define VAR_FORCED_ABOOK_ENTRY vars[V_FORCED_ABOOK_ENTRY].current_val.l
222 #define VAR_KBLOCK_PASSWD_COUNT vars[V_KBLOCK_PASSWD_COUNT].current_val.p
223 #define GLO_KBLOCK_PASSWD_COUNT vars[V_KBLOCK_PASSWD_COUNT].global_val.p
224 #define VAR_STATUS_MSG_DELAY vars[V_STATUS_MSG_DELAY].current_val.p
225 #define GLO_STATUS_MSG_DELAY vars[V_STATUS_MSG_DELAY].global_val.p
226 #define VAR_ACTIVE_MSG_INTERVAL vars[V_ACTIVE_MSG_INTERVAL].current_val.p
227 #define GLO_ACTIVE_MSG_INTERVAL vars[V_ACTIVE_MSG_INTERVAL].global_val.p
228 #define GLO_SENDMAIL_PATH vars[V_SENDMAIL_PATH].global_val.p
229 #define FIX_SENDMAIL_PATH vars[V_SENDMAIL_PATH].fixed_val.p
230 #define COM_SENDMAIL_PATH vars[V_SENDMAIL_PATH].cmdline_val.p
231 #define VAR_OPER_DIR vars[V_OPER_DIR].current_val.p
232 #define GLO_OPER_DIR vars[V_OPER_DIR].global_val.p
233 #define FIX_OPER_DIR vars[V_OPER_DIR].fixed_val.p
234 #define COM_OPER_DIR vars[V_OPER_DIR].cmdline_val.p
235 #define VAR_DISPLAY_FILTERS vars[V_DISPLAY_FILTERS].current_val.l
236 #define VAR_SEND_FILTER vars[V_SEND_FILTER].current_val.l
237 #define GLO_SEND_FILTER vars[V_SEND_FILTER].global_val.l
238 #define VAR_ALT_ADDRS vars[V_ALT_ADDRS].current_val.l
239 #define VAR_KEYWORDS vars[V_KEYWORDS].current_val.l
240 #define VAR_KW_COLORS vars[V_KW_COLORS].current_val.l
241 #define VAR_KW_BRACES vars[V_KW_BRACES].current_val.p
242 #define GLO_KW_BRACES vars[V_KW_BRACES].global_val.p
243 #define VAR_OPENING_SEP vars[V_OPENING_SEP].current_val.p
244 #define GLO_OPENING_SEP vars[V_OPENING_SEP].global_val.p
245 #define VAR_ABOOK_FORMATS vars[V_ABOOK_FORMATS].current_val.l
246 #define VAR_INDEX_FORMAT vars[V_INDEX_FORMAT].current_val.p
247 #define VAR_OVERLAP vars[V_OVERLAP].current_val.p
248 #define GLO_OVERLAP vars[V_OVERLAP].global_val.p
249 #define VAR_MAXREMSTREAM vars[V_MAXREMSTREAM].current_val.p
250 #define GLO_MAXREMSTREAM vars[V_MAXREMSTREAM].global_val.p
251 #define VAR_PERMLOCKED vars[V_PERMLOCKED].current_val.l
252 #define VAR_MARGIN vars[V_MARGIN].current_val.p
253 #define GLO_MARGIN vars[V_MARGIN].global_val.p
254 #define VAR_MAILCHECK vars[V_MAILCHECK].current_val.p
255 #define GLO_MAILCHECK vars[V_MAILCHECK].global_val.p
256 #define VAR_MAILCHECKNONCURR vars[V_MAILCHECKNONCURR].current_val.p
257 #define GLO_MAILCHECKNONCURR vars[V_MAILCHECKNONCURR].global_val.p
258 #define VAR_MAILDROPCHECK vars[V_MAILDROPCHECK].current_val.p
259 #define GLO_MAILDROPCHECK vars[V_MAILDROPCHECK].global_val.p
260 #define VAR_NNTPRANGE vars[V_NNTPRANGE].current_val.p
261 #define GLO_NNTPRANGE vars[V_NNTPRANGE].global_val.p
262 #define VAR_NEWSRC_PATH vars[V_NEWSRC_PATH].current_val.p
263 #define GLO_NEWSRC_PATH vars[V_NEWSRC_PATH].global_val.p
264 #define VAR_NEWS_ACTIVE_PATH vars[V_NEWS_ACTIVE_PATH].current_val.p
265 #define GLO_NEWS_ACTIVE_PATH vars[V_NEWS_ACTIVE_PATH].global_val.p
266 #define VAR_NEWS_SPOOL_DIR vars[V_NEWS_SPOOL_DIR].current_val.p
267 #define GLO_NEWS_SPOOL_DIR vars[V_NEWS_SPOOL_DIR].global_val.p
268 #define VAR_DISABLE_DRIVERS vars[V_DISABLE_DRIVERS].current_val.l
269 #define VAR_DISABLE_AUTHS vars[V_DISABLE_AUTHS].current_val.l
270 #define VAR_REMOTE_ABOOK_METADATA vars[V_REMOTE_ABOOK_METADATA].current_val.p
271 #define VAR_REMOTE_ABOOK_HISTORY vars[V_REMOTE_ABOOK_HISTORY].current_val.p
272 #define GLO_REMOTE_ABOOK_HISTORY vars[V_REMOTE_ABOOK_HISTORY].global_val.p
273 #define VAR_REMOTE_ABOOK_VALIDITY vars[V_REMOTE_ABOOK_VALIDITY].current_val.p
274 #define GLO_REMOTE_ABOOK_VALIDITY vars[V_REMOTE_ABOOK_VALIDITY].global_val.p
275 #define GLO_ENCRYPTION_RANGE vars[V_ENCRYPTION_RANGE].global_val.p
276 #define VAR_ENCRYPTION_RANGE vars[V_ENCRYPTION_RANGE].current_val.p
277 /* Elm style save is obsolete in Pine 3.81 (see saved msg name rule) */
278 #define VAR_ELM_STYLE_SAVE vars[V_ELM_STYLE_SAVE].current_val.p
279 #define GLO_ELM_STYLE_SAVE vars[V_ELM_STYLE_SAVE].global_val.p
280 /* Header in reply is obsolete in Pine 3.83 (see feature list) */
281 #define VAR_HEADER_IN_REPLY vars[V_HEADER_IN_REPLY].current_val.p
282 #define GLO_HEADER_IN_REPLY vars[V_HEADER_IN_REPLY].global_val.p
283 /* Feature level is obsolete in Pine 3.83 (see feature list) */
284 #define VAR_FEATURE_LEVEL vars[V_FEATURE_LEVEL].current_val.p
285 #define GLO_FEATURE_LEVEL vars[V_FEATURE_LEVEL].global_val.p
286 /* Old style reply is obsolete in Pine 3.83 (see feature list) */
287 #define VAR_OLD_STYLE_REPLY vars[V_OLD_STYLE_REPLY].current_val.p
288 #define GLO_OLD_STYLE_REPLY vars[V_OLD_STYLE_REPLY].global_val.p
289 /* Save by sender is obsolete in Pine 3.83 (see saved msg name rule) */
290 #define VAR_SAVE_BY_SENDER vars[V_SAVE_BY_SENDER].current_val.p
291 #define GLO_SAVE_BY_SENDER vars[V_SAVE_BY_SENDER].global_val.p
292 #define VAR_NNTP_SERVER vars[V_NNTP_SERVER].current_val.l
293 #define FIX_NNTP_SERVER vars[V_NNTP_SERVER].fixed_val.l
294 #ifdef ENABLE_LDAP
295 #define VAR_LDAP_SERVERS vars[V_LDAP_SERVERS].current_val.l
296 #endif
297 #define VAR_RSS_NEWS vars[V_RSS_NEWS].current_val.p
298 #define VAR_RSS_WEATHER vars[V_RSS_WEATHER].current_val.p
299 #define VAR_WP_INDEXHEIGHT vars[V_WP_INDEXHEIGHT].current_val.p
300 #define VAR_WP_INDEXLINES vars[V_WP_INDEXLINES].current_val.p
301 #define GLO_WP_INDEXHEIGHT vars[V_WP_INDEXHEIGHT].global_val.p
302 #define VAR_WP_AGGSTATE vars[V_WP_AGGSTATE].current_val.p
303 #define GLO_WP_AGGSTATE vars[V_WP_AGGSTATE].global_val.p
304 #define VAR_WP_STATE vars[V_WP_STATE].current_val.p
305 #define GLO_WP_STATE vars[V_WP_STATE].global_val.p
306 #define VAR_WP_COLUMNS vars[V_WP_COLUMNS].current_val.p
307 #define VAR_UPLOAD_CMD vars[V_UPLOAD_CMD].current_val.p
308 #define VAR_UPLOAD_CMD_PREFIX vars[V_UPLOAD_CMD_PREFIX].current_val.p
309 #define VAR_DOWNLOAD_CMD vars[V_DOWNLOAD_CMD].current_val.p
310 #define VAR_DOWNLOAD_CMD_PREFIX vars[V_DOWNLOAD_CMD_PREFIX].current_val.p
311 #define VAR_GOTO_DEFAULT_RULE vars[V_GOTO_DEFAULT_RULE].current_val.p
312 #define GLO_GOTO_DEFAULT_RULE vars[V_GOTO_DEFAULT_RULE].global_val.p
313 #define VAR_MAILCAP_PATH vars[V_MAILCAP_PATH].current_val.p
314 #define VAR_MIMETYPE_PATH vars[V_MIMETYPE_PATH].current_val.p
315 #define VAR_FIFOPATH vars[V_FIFOPATH].current_val.p
316 #define VAR_NMW_WIDTH vars[V_NMW_WIDTH].current_val.p
317 #define GLO_NMW_WIDTH vars[V_NMW_WIDTH].global_val.p
318 #define VAR_USERINPUTTIMEO vars[V_USERINPUTTIMEO].current_val.p
319 #define GLO_USERINPUTTIMEO vars[V_USERINPUTTIMEO].global_val.p
320 #define VAR_TCPOPENTIMEO vars[V_TCPOPENTIMEO].current_val.p
321 #define VAR_TCPREADWARNTIMEO vars[V_TCPREADWARNTIMEO].current_val.p
322 #define VAR_TCPWRITEWARNTIMEO vars[V_TCPWRITEWARNTIMEO].current_val.p
323 #define VAR_TCPQUERYTIMEO vars[V_TCPQUERYTIMEO].current_val.p
324 #define VAR_QUITQUERYTIMEO vars[V_QUITQUERYTIMEO].current_val.p
325 #define VAR_RSHOPENTIMEO vars[V_RSHOPENTIMEO].current_val.p
326 #define VAR_RSHPATH vars[V_RSHPATH].current_val.p
327 #define VAR_RSHCMD vars[V_RSHCMD].current_val.p
328 #define VAR_SSHOPENTIMEO vars[V_SSHOPENTIMEO].current_val.p
329 #define VAR_INCCHECKTIMEO vars[V_INCCHECKTIMEO].current_val.p
330 #define GLO_INCCHECKTIMEO vars[V_INCCHECKTIMEO].global_val.p
331 #define VAR_INCCHECKINTERVAL vars[V_INCCHECKINTERVAL].current_val.p
332 #define GLO_INCCHECKINTERVAL vars[V_INCCHECKINTERVAL].global_val.p
333 #define VAR_INC2NDCHECKINTERVAL vars[V_INC2NDCHECKINTERVAL].current_val.p
334 #define GLO_INC2NDCHECKINTERVAL vars[V_INC2NDCHECKINTERVAL].global_val.p
335 #define VAR_INCCHECKLIST vars[V_INCCHECKLIST].current_val.l
336 #define VAR_SSHPATH vars[V_SSHPATH].current_val.p
337 #define GLO_SSHPATH vars[V_SSHPATH].global_val.p
338 #define VAR_SSHCMD vars[V_SSHCMD].current_val.p
339 #define GLO_SSHCMD vars[V_SSHCMD].global_val.p
340 #define VAR_NEW_VER_QUELL vars[V_NEW_VER_QUELL].current_val.p
341 #define VAR_BROWSER vars[V_BROWSER].current_val.l
342 #define VAR_INCOMING_STARTUP vars[V_INCOMING_STARTUP].current_val.p
343 #define GLO_INCOMING_STARTUP vars[V_INCOMING_STARTUP].global_val.p
344 #define VAR_PRUNING_RULE vars[V_PRUNING_RULE].current_val.p
345 #define GLO_PRUNING_RULE vars[V_PRUNING_RULE].global_val.p
346 #define VAR_REOPEN_RULE vars[V_REOPEN_RULE].current_val.p
347 #define GLO_REOPEN_RULE vars[V_REOPEN_RULE].global_val.p
348 #define VAR_THREAD_DISP_STYLE vars[V_THREAD_DISP_STYLE].current_val.p
349 #define GLO_THREAD_DISP_STYLE vars[V_THREAD_DISP_STYLE].global_val.p
350 #define VAR_THREAD_INDEX_STYLE vars[V_THREAD_INDEX_STYLE].current_val.p
351 #define GLO_THREAD_INDEX_STYLE vars[V_THREAD_INDEX_STYLE].global_val.p
352 #define VAR_THREAD_MORE_CHAR vars[V_THREAD_MORE_CHAR].current_val.p
353 #define GLO_THREAD_MORE_CHAR vars[V_THREAD_MORE_CHAR].global_val.p
354 #define VAR_THREAD_EXP_CHAR vars[V_THREAD_EXP_CHAR].current_val.p
355 #define GLO_THREAD_EXP_CHAR vars[V_THREAD_EXP_CHAR].global_val.p
356 #define VAR_THREAD_LASTREPLY_CHAR vars[V_THREAD_LASTREPLY_CHAR].current_val.p
357 #define GLO_THREAD_LASTREPLY_CHAR vars[V_THREAD_LASTREPLY_CHAR].global_val.p
358 #define VAR_HISTORY vars[V_HISTORY].current_val.l
360 #if defined(DOS) || defined(OS2)
361 #define VAR_FILE_DIR vars[V_FILE_DIR].current_val.p
362 #define GLO_FILE_DIR vars[V_FILE_DIR].current_val.p
363 #define VAR_FOLDER_EXTENSION vars[V_FOLDER_EXTENSION].current_val.p
364 #define GLO_FOLDER_EXTENSION vars[V_FOLDER_EXTENSION].global_val.p
366 #ifdef _WINDOWS
367 #define VAR_FONT_NAME vars[V_FONT_NAME].current_val.p
368 #define VAR_FONT_SIZE vars[V_FONT_SIZE].current_val.p
369 #define VAR_FONT_STYLE vars[V_FONT_STYLE].current_val.p
370 #define VAR_FONT_CHAR_SET vars[V_FONT_CHAR_SET].current_val.p
371 #define VAR_PRINT_FONT_NAME vars[V_PRINT_FONT_NAME].current_val.p
372 #define VAR_PRINT_FONT_SIZE vars[V_PRINT_FONT_SIZE].current_val.p
373 #define VAR_PRINT_FONT_STYLE vars[V_PRINT_FONT_STYLE].current_val.p
374 #define VAR_PRINT_FONT_CHAR_SET vars[V_PRINT_FONT_CHAR_SET].current_val.p
375 #define VAR_WINDOW_POSITION vars[V_WINDOW_POSITION].current_val.p
376 #define VAR_CURSOR_STYLE vars[V_CURSOR_STYLE].current_val.p
377 #endif /* _WINDOWS */
378 #endif /* DOS or OS2 */
380 #define VAR_NORM_FORE_COLOR vars[V_NORM_FORE_COLOR].current_val.p
381 #define GLO_NORM_FORE_COLOR vars[V_NORM_FORE_COLOR].global_val.p
382 #define VAR_NORM_BACK_COLOR vars[V_NORM_BACK_COLOR].current_val.p
383 #define GLO_NORM_BACK_COLOR vars[V_NORM_BACK_COLOR].global_val.p
384 #define VAR_REV_FORE_COLOR vars[V_REV_FORE_COLOR].current_val.p
385 #define GLO_REV_FORE_COLOR vars[V_REV_FORE_COLOR].global_val.p
386 #define VAR_REV_BACK_COLOR vars[V_REV_BACK_COLOR].current_val.p
387 #define GLO_REV_BACK_COLOR vars[V_REV_BACK_COLOR].global_val.p
388 #define VAR_TITLE_FORE_COLOR vars[V_TITLE_FORE_COLOR].current_val.p
389 #define GLO_TITLE_FORE_COLOR vars[V_TITLE_FORE_COLOR].global_val.p
390 #define VAR_TITLE_BACK_COLOR vars[V_TITLE_BACK_COLOR].current_val.p
391 #define GLO_TITLE_BACK_COLOR vars[V_TITLE_BACK_COLOR].global_val.p
392 #define VAR_TITLECLOSED_FORE_COLOR vars[V_TITLECLOSED_FORE_COLOR].current_val.p
393 #define GLO_TITLECLOSED_FORE_COLOR vars[V_TITLECLOSED_FORE_COLOR].global_val.p
394 #define VAR_TITLECLOSED_BACK_COLOR vars[V_TITLECLOSED_BACK_COLOR].current_val.p
395 #define GLO_TITLECLOSED_BACK_COLOR vars[V_TITLECLOSED_BACK_COLOR].global_val.p
396 #define VAR_FOLDER_FORE_COLOR vars[V_FOLDER_FORE_COLOR].current_val.p
397 #define GLO_FOLDER_FORE_COLOR vars[V_FOLDER_FORE_COLOR].global_val.p
398 #define VAR_FOLDER_BACK_COLOR vars[V_FOLDER_BACK_COLOR].current_val.p
399 #define GLO_FOLDER_BACK_COLOR vars[V_FOLDER_BACK_COLOR].global_val.p
400 #define VAR_DIRECTORY_FORE_COLOR vars[V_DIRECTORY_FORE_COLOR].current_val.p
401 #define GLO_DIRECTORY_FORE_COLOR vars[V_DIRECTORY_FORE_COLOR].global_val.p
402 #define VAR_DIRECTORY_BACK_COLOR vars[V_DIRECTORY_BACK_COLOR].current_val.p
403 #define GLO_DIRECTORY_BACK_COLOR vars[V_DIRECTORY_BACK_COLOR].global_val.p
404 #define VAR_FOLDER_LIST_FORE_COLOR vars[V_FOLDER_LIST_FORE_COLOR].current_val.p
405 #define GLO_FOLDER_LIST_FORE_COLOR vars[V_FOLDER_LIST_FORE_COLOR].global_val.p
406 #define VAR_FOLDER_LIST_BACK_COLOR vars[V_FOLDER_LIST_BACK_COLOR].current_val.p
407 #define GLO_FOLDER_LIST_BACK_COLOR vars[V_FOLDER_LIST_BACK_COLOR].global_val.p
408 #define VAR_STATUS_FORE_COLOR vars[V_STATUS_FORE_COLOR].current_val.p
409 #define VAR_STATUS_BACK_COLOR vars[V_STATUS_BACK_COLOR].current_val.p
410 #define VAR_HEADER_GENERAL_FORE_COLOR vars[V_HEADER_GENERAL_FORE_COLOR].current_val.p
411 #define VAR_HEADER_GENERAL_BACK_COLOR vars[V_HEADER_GENERAL_BACK_COLOR].current_val.p
412 #define VAR_IND_PLUS_FORE_COLOR vars[V_IND_PLUS_FORE_COLOR].current_val.p
413 #define GLO_IND_PLUS_FORE_COLOR vars[V_IND_PLUS_FORE_COLOR].global_val.p
414 #define VAR_IND_PLUS_BACK_COLOR vars[V_IND_PLUS_BACK_COLOR].current_val.p
415 #define GLO_IND_PLUS_BACK_COLOR vars[V_IND_PLUS_BACK_COLOR].global_val.p
416 #define VAR_IND_IMP_FORE_COLOR vars[V_IND_IMP_FORE_COLOR].current_val.p
417 #define GLO_IND_IMP_FORE_COLOR vars[V_IND_IMP_FORE_COLOR].global_val.p
418 #define VAR_IND_IMP_BACK_COLOR vars[V_IND_IMP_BACK_COLOR].current_val.p
419 #define GLO_IND_IMP_BACK_COLOR vars[V_IND_IMP_BACK_COLOR].global_val.p
420 #define VAR_IND_DEL_FORE_COLOR vars[V_IND_DEL_FORE_COLOR].current_val.p
421 #define VAR_IND_DEL_BACK_COLOR vars[V_IND_DEL_BACK_COLOR].current_val.p
422 #define VAR_IND_ANS_FORE_COLOR vars[V_IND_ANS_FORE_COLOR].current_val.p
423 #define GLO_IND_ANS_FORE_COLOR vars[V_IND_ANS_FORE_COLOR].global_val.p
424 #define VAR_IND_ANS_BACK_COLOR vars[V_IND_ANS_BACK_COLOR].current_val.p
425 #define GLO_IND_ANS_BACK_COLOR vars[V_IND_ANS_BACK_COLOR].global_val.p
426 #define VAR_IND_NEW_FORE_COLOR vars[V_IND_NEW_FORE_COLOR].current_val.p
427 #define GLO_IND_NEW_FORE_COLOR vars[V_IND_NEW_FORE_COLOR].global_val.p
428 #define VAR_IND_NEW_BACK_COLOR vars[V_IND_NEW_BACK_COLOR].current_val.p
429 #define GLO_IND_NEW_BACK_COLOR vars[V_IND_NEW_BACK_COLOR].global_val.p
430 #define VAR_IND_REC_FORE_COLOR vars[V_IND_REC_FORE_COLOR].current_val.p
431 #define VAR_IND_REC_BACK_COLOR vars[V_IND_REC_BACK_COLOR].current_val.p
432 #define VAR_IND_FWD_FORE_COLOR vars[V_IND_FWD_FORE_COLOR].current_val.p
433 #define VAR_IND_FWD_BACK_COLOR vars[V_IND_FWD_BACK_COLOR].current_val.p
434 #define VAR_IND_UNS_FORE_COLOR vars[V_IND_UNS_FORE_COLOR].current_val.p
435 #define VAR_IND_UNS_BACK_COLOR vars[V_IND_UNS_BACK_COLOR].current_val.p
436 #define VAR_IND_OP_FORE_COLOR vars[V_IND_OP_FORE_COLOR].current_val.p
437 #define GLO_IND_OP_FORE_COLOR vars[V_IND_OP_FORE_COLOR].global_val.p
438 #define VAR_IND_OP_BACK_COLOR vars[V_IND_OP_BACK_COLOR].current_val.p
439 #define GLO_IND_OP_BACK_COLOR vars[V_IND_OP_BACK_COLOR].global_val.p
440 #define VAR_IND_SUBJ_FORE_COLOR vars[V_IND_SUBJ_FORE_COLOR].current_val.p
441 #define VAR_IND_SUBJ_BACK_COLOR vars[V_IND_SUBJ_BACK_COLOR].current_val.p
442 #define VAR_IND_FROM_FORE_COLOR vars[V_IND_FROM_FORE_COLOR].current_val.p
443 #define VAR_IND_FROM_BACK_COLOR vars[V_IND_FROM_BACK_COLOR].current_val.p
444 #define VAR_IND_HIPRI_FORE_COLOR vars[V_IND_HIPRI_FORE_COLOR].current_val.p
445 #define VAR_IND_HIPRI_BACK_COLOR vars[V_IND_HIPRI_BACK_COLOR].current_val.p
446 #define VAR_IND_LOPRI_FORE_COLOR vars[V_IND_LOPRI_FORE_COLOR].current_val.p
447 #define VAR_IND_LOPRI_BACK_COLOR vars[V_IND_LOPRI_BACK_COLOR].current_val.p
448 #define VAR_IND_ARR_FORE_COLOR vars[V_IND_ARR_FORE_COLOR].current_val.p
449 #define VAR_IND_ARR_BACK_COLOR vars[V_IND_ARR_BACK_COLOR].current_val.p
450 #define VAR_KEYLABEL_FORE_COLOR vars[V_KEYLABEL_FORE_COLOR].current_val.p
451 #define VAR_KEYLABEL_BACK_COLOR vars[V_KEYLABEL_BACK_COLOR].current_val.p
452 #define VAR_KEYNAME_FORE_COLOR vars[V_KEYNAME_FORE_COLOR].current_val.p
453 #define VAR_KEYNAME_BACK_COLOR vars[V_KEYNAME_BACK_COLOR].current_val.p
454 #define VAR_SLCTBL_FORE_COLOR vars[V_SLCTBL_FORE_COLOR].current_val.p
455 #define VAR_SLCTBL_BACK_COLOR vars[V_SLCTBL_BACK_COLOR].current_val.p
456 #define VAR_METAMSG_FORE_COLOR vars[V_METAMSG_FORE_COLOR].current_val.p
457 #define GLO_METAMSG_FORE_COLOR vars[V_METAMSG_FORE_COLOR].global_val.p
458 #define VAR_METAMSG_BACK_COLOR vars[V_METAMSG_BACK_COLOR].current_val.p
459 #define GLO_METAMSG_BACK_COLOR vars[V_METAMSG_BACK_COLOR].global_val.p
460 #define VAR_QUOTE1_FORE_COLOR vars[V_QUOTE1_FORE_COLOR].current_val.p
461 #define GLO_QUOTE1_FORE_COLOR vars[V_QUOTE1_FORE_COLOR].global_val.p
462 #define VAR_QUOTE1_BACK_COLOR vars[V_QUOTE1_BACK_COLOR].current_val.p
463 #define GLO_QUOTE1_BACK_COLOR vars[V_QUOTE1_BACK_COLOR].global_val.p
464 #define VAR_QUOTE2_FORE_COLOR vars[V_QUOTE2_FORE_COLOR].current_val.p
465 #define GLO_QUOTE2_FORE_COLOR vars[V_QUOTE2_FORE_COLOR].global_val.p
466 #define VAR_QUOTE2_BACK_COLOR vars[V_QUOTE2_BACK_COLOR].current_val.p
467 #define GLO_QUOTE2_BACK_COLOR vars[V_QUOTE2_BACK_COLOR].global_val.p
468 #define VAR_QUOTE3_FORE_COLOR vars[V_QUOTE3_FORE_COLOR].current_val.p
469 #define GLO_QUOTE3_FORE_COLOR vars[V_QUOTE3_FORE_COLOR].global_val.p
470 #define VAR_QUOTE3_BACK_COLOR vars[V_QUOTE3_BACK_COLOR].current_val.p
471 #define GLO_QUOTE3_BACK_COLOR vars[V_QUOTE3_BACK_COLOR].global_val.p
472 #define VAR_INCUNSEEN_FORE_COLOR vars[V_INCUNSEEN_FORE_COLOR].current_val.p
473 #define VAR_INCUNSEEN_BACK_COLOR vars[V_INCUNSEEN_BACK_COLOR].current_val.p
474 #define VAR_SIGNATURE_FORE_COLOR vars[V_SIGNATURE_FORE_COLOR].current_val.p
475 #define GLO_SIGNATURE_FORE_COLOR vars[V_SIGNATURE_FORE_COLOR].global_val.p
476 #define VAR_SIGNATURE_BACK_COLOR vars[V_SIGNATURE_BACK_COLOR].current_val.p
477 #define GLO_SIGNATURE_BACK_COLOR vars[V_SIGNATURE_BACK_COLOR].global_val.p
478 #define VAR_PROMPT_FORE_COLOR vars[V_PROMPT_FORE_COLOR].current_val.p
479 #define VAR_PROMPT_BACK_COLOR vars[V_PROMPT_BACK_COLOR].current_val.p
480 #define VAR_VIEW_HDR_COLORS vars[V_VIEW_HDR_COLORS].current_val.l
481 #define VAR_INDEX_TOKEN_COLORS vars[V_INDEX_TOKEN_COLORS].current_val.l
482 #define VAR_HTML_DIRECTORY vars[V_HTML_DIRECTORY].current_val.p
483 #define GLO_HTML_DIRECTORY vars[V_HTML_DIRECTORY].global_val.p
484 #ifdef SMIME
485 #define VAR_PUBLICCERT_DIR vars[V_PUBLICCERT_DIR].current_val.p
486 #define GLO_PUBLICCERT_DIR vars[V_PUBLICCERT_DIR].global_val.p
487 #define VAR_PRIVATEKEY_DIR vars[V_PRIVATEKEY_DIR].current_val.p
488 #define GLO_PRIVATEKEY_DIR vars[V_PRIVATEKEY_DIR].global_val.p
489 #define VAR_CACERT_DIR vars[V_CACERT_DIR].current_val.p
490 #define GLO_CACERT_DIR vars[V_CACERT_DIR].global_val.p
491 #define VAR_PUBLICCERT_CONTAINER vars[V_PUBLICCERT_CONTAINER].current_val.p
492 #define VAR_PRIVATEKEY_CONTAINER vars[V_PRIVATEKEY_CONTAINER].current_val.p
493 #define VAR_CACERT_CONTAINER vars[V_CACERT_CONTAINER].current_val.p
494 #endif /* SMIME */
498 * Define some bitmap operations for manipulating features.
501 #define _BITCHAR(bit) ((bit) / 8)
502 #define _BITBIT(bit) (1 << ((bit) % 8))
504 /* is bit set? */
505 #define bitnset(bit,map) (((map)[_BITCHAR(bit)] & _BITBIT(bit)) ? 1 : 0)
506 /* set bit */
507 #define setbitn(bit,map) ((map)[_BITCHAR(bit)] |= _BITBIT(bit))
508 /* clear bit */
509 #define clrbitn(bit,map) ((map)[_BITCHAR(bit)] &= ~_BITBIT(bit))
512 /* Feature list support */
513 /* Is feature "feature" turned on? */
514 #define F_ON(feature,ps) (bitnset((feature),(ps)->feature_list))
515 #define F_OFF(feature,ps) (!F_ON(feature,ps))
516 #define F_TURN_ON(feature,ps) (setbitn((feature),(ps)->feature_list))
517 #define F_TURN_OFF(feature,ps) (clrbitn((feature),(ps)->feature_list))
518 /* turn off or on depending on value */
519 #define F_SET(feature,ps,value) ((value) ? F_TURN_ON((feature),(ps)) \
520 : F_TURN_OFF((feature),(ps)))
523 * Save message rules. if these grow, widen pine
524 * struct's save_msg_rule...
526 #define SAV_RULE_DEFLT 0
527 #define SAV_RULE_LAST 1
528 #define SAV_RULE_FROM 2
529 #define SAV_RULE_NICK_FROM_DEF 3
530 #define SAV_RULE_NICK_FROM 4
531 #define SAV_RULE_FCC_FROM_DEF 5
532 #define SAV_RULE_FCC_FROM 6
533 #define SAV_RULE_RN_FROM_DEF 7
534 #define SAV_RULE_RN_FROM 8
535 #define SAV_RULE_SENDER 9
536 #define SAV_RULE_NICK_SENDER_DEF 10
537 #define SAV_RULE_NICK_SENDER 11
538 #define SAV_RULE_FCC_SENDER_DEF 12
539 #define SAV_RULE_FCC_SENDER 13
540 #define SAV_RULE_RN_SENDER_DEF 14
541 #define SAV_RULE_RN_SENDER 15
542 #define SAV_RULE_RECIP 16
543 #define SAV_RULE_NICK_RECIP_DEF 17
544 #define SAV_RULE_NICK_RECIP 18
545 #define SAV_RULE_FCC_RECIP_DEF 19
546 #define SAV_RULE_FCC_RECIP 20
547 #define SAV_RULE_RN_RECIP_DEF 21
548 #define SAV_RULE_RN_RECIP 22
549 #define SAV_RULE_REPLYTO 23
550 #define SAV_RULE_NICK_REPLYTO_DEF 24
551 #define SAV_RULE_NICK_REPLYTO 25
552 #define SAV_RULE_FCC_REPLYTO_DEF 26
553 #define SAV_RULE_FCC_REPLYTO 27
554 #define SAV_RULE_RN_REPLYTO_DEF 28
555 #define SAV_RULE_RN_REPLYTO 29
558 * Fcc rules. if these grow, widen pine
559 * struct's fcc_rule...
561 #define FCC_RULE_DEFLT 0
562 #define FCC_RULE_RECIP 1
563 #define FCC_RULE_LAST 2
564 #define FCC_RULE_NICK 3
565 #define FCC_RULE_NICK_RECIP 4
566 #define FCC_RULE_CURRENT 5
569 * Addrbook sorting rules. if these grow, widen pine
570 * struct's ab_sort_rule...
572 #define AB_SORT_RULE_FULL_LISTS 0
573 #define AB_SORT_RULE_FULL 1
574 #define AB_SORT_RULE_NICK_LISTS 2
575 #define AB_SORT_RULE_NICK 3
576 #define AB_SORT_RULE_NONE 4
579 * Incoming startup rules. if these grow, widen pine
580 * struct's inc_startup_rule and reset_startup_rule().
582 #define IS_FIRST_UNSEEN 0
583 #define IS_FIRST_RECENT 1
584 #define IS_FIRST_IMPORTANT 2
585 #define IS_FIRST_IMPORTANT_OR_UNSEEN 3
586 #define IS_FIRST_IMPORTANT_OR_RECENT 4
587 #define IS_FIRST 5
588 #define IS_LAST 6
589 #define IS_NOTSET 7 /* for reset version */
592 * Pruning rules. If these grow, widen pruning_rule.
594 #define PRUNE_ASK_AND_ASK 0
595 #define PRUNE_ASK_AND_NO 1
596 #define PRUNE_YES_AND_ASK 2
597 #define PRUNE_YES_AND_NO 3
598 #define PRUNE_NO_AND_ASK 4
599 #define PRUNE_NO_AND_NO 5
602 * Folder reopen rules. If these grow, widen reopen_rule.
604 #define REOPEN_YES_YES 0
605 #define REOPEN_YES_ASK_Y 1
606 #define REOPEN_YES_ASK_N 2
607 #define REOPEN_YES_NO 3
608 #define REOPEN_ASK_ASK_Y 4
609 #define REOPEN_ASK_ASK_N 5
610 #define REOPEN_ASK_NO_Y 6
611 #define REOPEN_ASK_NO_N 7
612 #define REOPEN_NO_NO 8
615 * Goto default rules.
617 #define GOTO_INBOX_RECENT_CLCTN 0
618 #define GOTO_INBOX_FIRST_CLCTN 1
619 #define GOTO_LAST_FLDR 2
620 #define GOTO_FIRST_CLCTN 3
621 #define GOTO_FIRST_CLCTN_DEF_INBOX 4
624 * Thread display styles. If these grow, widen thread_disp_rule.
626 #define THREAD_NONE 0
627 #define THREAD_STRUCT 1
628 #define THREAD_MUTTLIKE 2
629 #define THREAD_INDENT_SUBJ1 3
630 #define THREAD_INDENT_SUBJ2 4
631 #define THREAD_INDENT_FROM1 5
632 #define THREAD_INDENT_FROM2 6
633 #define THREAD_STRUCT_FROM 7
636 * Thread index styles. If these grow, widen thread_index_rule.
638 #define THRDINDX_EXP 0
639 #define THRDINDX_COLL 1
640 #define THRDINDX_SEP 2
641 #define THRDINDX_SEP_AUTO 3
644 * Titlebar color styles. If these grow, widen titlebar_color_style.
646 #define TBAR_COLOR_DEFAULT 0
647 #define TBAR_COLOR_INDEXLINE 1
648 #define TBAR_COLOR_REV_INDEXLINE 2
651 * PC-Pine update registry modes
653 #ifdef _WINDOWS
654 #define UREG_NORMAL 0
655 #define UREG_ALWAYS_SET 1
656 #define UREG_NEVER_SET 2
657 #endif
661 * Folder list sort rules
663 #define FLD_SORT_ALPHA 0
664 #define FLD_SORT_ALPHA_DIR_LAST 1
665 #define FLD_SORT_ALPHA_DIR_FIRST 2
669 * Color styles
671 #define COL_NONE 0
672 #define COL_TERMDEF 1
673 #define COL_ANSI8 2
674 #define COL_ANSI16 3
675 #define COL_ANSI256 4
678 /* styles for apply_rev_color() */
679 #define IND_COL_FLIP 0
680 #define IND_COL_REV 1
681 #define IND_COL_FG 2
682 #define IND_COL_FG_NOAMBIG 3
683 #define IND_COL_BG 4
684 #define IND_COL_BG_NOAMBIG 5
689 * Macros to help set numeric pinerc variables. Defined here are the
690 * allowed min and max values as well as the name of the var as it
691 * should be displayed in error messages.
693 #define Q_SUPP_LIMIT (4)
694 #define Q_DEL_ALL (-10)
695 #define SVAR_OVERLAP(ps,n,e,el) strtoval((ps)->VAR_OVERLAP, \
696 &(n), 0, 20, 0, (e), \
697 (el), \
698 "Viewer-Overlap")
699 #define SVAR_MAXREMSTREAM(ps,n,e,el) strtoval((ps)->VAR_MAXREMSTREAM, \
700 &(n), 0, 15, 0, (e), \
701 (el), \
702 "Max-Remote-Connections")
703 #define SVAR_MARGIN(ps,n,e,el) strtoval((ps)->VAR_MARGIN, \
704 &(n), 0, 20, 0, (e), \
705 (el), \
706 "Scroll-Margin")
707 #define SVAR_FILLCOL(ps,n,e,el) strtoval((ps)->VAR_FILLCOL, \
708 &(n), 0, MAX_FILLCOL, 0, (e), \
709 (el), \
710 "Composer-Wrap-Column")
711 #define SVAR_QUOTE_SUPPRESSION(ps,n,e,el) strtoval((ps)->VAR_QUOTE_SUPPRESSION, \
712 &(n), -(Q_SUPP_LIMIT-1), \
713 1000, Q_DEL_ALL, (e), \
714 (el), \
715 "Quote-Suppression-Threshold")
716 #define SVAR_DEADLETS(ps,n,e,el) strtoval((ps)->VAR_DEADLETS, \
717 &(n), 0, 9, 0, (e), \
718 (el), \
719 "Dead-Letter-Files")
720 #define SVAR_MSGDLAY(ps,n,e,el) strtoval((ps)->VAR_STATUS_MSG_DELAY, \
721 &(n), -10, 30, 0, (e), \
722 (el), \
723 "Status-Message-Delay")
724 #define SVAR_ACTIVEINTERVAL(ps,n,e,el) strtoval((ps)->VAR_ACTIVE_MSG_INTERVAL, \
725 &(n), 0, 20, 0, (e), \
726 (el), \
727 "Active-Msg-Updates-Per-Second")
728 #define SVAR_MAILCHK(ps,n,e,el) strtoval((ps)->VAR_MAILCHECK, \
729 &(n), 15, 30000, 0, (e), \
730 (el), \
731 "Mail-Check-Interval")
732 #define SVAR_MAILCHKNONCURR(ps,n,e,el) strtoval((ps)->VAR_MAILCHECKNONCURR, \
733 &(n), 15, 30000, 0, (e), \
734 (el), \
735 "Mail-Check-Interval-Noncurrent")
736 #define SVAR_AB_HIST(ps,n,e,el) strtoval((ps)->VAR_REMOTE_ABOOK_HISTORY, \
737 &(n), 0, 100, 0, (e), \
738 (el), \
739 "Remote-Abook-History")
740 #define SVAR_AB_VALID(ps,n,e,el) strtoval((ps)->VAR_REMOTE_ABOOK_VALIDITY, \
741 &(n), -1, 30000, 0, (e), \
742 (el), \
743 "Remote-Abook-Validity")
744 #define SVAR_USER_INPUT(ps,n,e,el) strtoval((ps)->VAR_USERINPUTTIMEO, \
745 &(n), 0, 1000, 0, (e), \
746 (el), \
747 "User-Input-Timeout")
748 #define SVAR_TCP_OPEN(ps,n,e,el) strtoval((ps)->VAR_TCPOPENTIMEO, \
749 &(n), 5, 30000, 5, (e), \
750 (el), \
751 "Tcp-Open-Timeout")
752 #define SVAR_TCP_READWARN(ps,n,e,el) strtoval((ps)->VAR_TCPREADWARNTIMEO, \
753 &(n), 5, 30000, 5, (e), \
754 (el), \
755 "Tcp-Read-Warning-Timeout")
756 #define SVAR_TCP_WRITEWARN(ps,n,e,el) strtoval((ps)->VAR_TCPWRITEWARNTIMEO, \
757 &(n), 5, 30000, 0, (e), \
758 (el), \
759 "Tcp-Write-Warning-Timeout")
760 #define SVAR_TCP_QUERY(ps,n,e,el) strtoval((ps)->VAR_TCPQUERYTIMEO, \
761 &(n), 5, 30000, 0, (e), \
762 (el), \
763 "Tcp-Query-Timeout")
764 #define SVAR_QUIT_QUERY_TIMEO(ps,n,e,el) strtoval((ps)->VAR_QUITQUERYTIMEO, \
765 &(n), 0, 30000, 0, (e), \
766 (el), \
767 "Reopen-Folder-Timeout")
768 #define SVAR_RSH_OPEN(ps,n,e,el) strtoval((ps)->VAR_RSHOPENTIMEO, \
769 &(n), 5, 30000, 0, (e), \
770 (el), \
771 "Rsh-Open-Timeout")
772 #define SVAR_SSH_OPEN(ps,n,e,el) strtoval((ps)->VAR_SSHOPENTIMEO, \
773 &(n), 5, 30000, 0, (e), \
774 (el), \
775 "Ssh-Open-Timeout")
776 #define SVAR_INC_CHECK_TIMEO(ps,n,e,el) strtoval((ps)->VAR_INCCHECKTIMEO, \
777 &(n), 1, 30000, 1, (e), \
778 (el), \
779 "Incoming-Check-Timeout")
780 #define SVAR_INC_CHECK_INTERV(ps,n,e,el) strtoval((ps)->VAR_INCCHECKINTERVAL, \
781 &(n), 15, 30000, 0, (e), \
782 (el), \
783 "Incoming-Check-Interval")
785 #define SVAR_INC_2NDCHECK_INTERV(ps,n,e,el) strtoval((ps)->VAR_INC2NDCHECKINTERVAL, \
786 &(n), 15, 30000, 0, (e), \
787 (el), \
788 "Incoming-Secondary-Check-Interval")
790 #define SVAR_NNTPRANGE(ps,n,e,el) strtolval((ps)->VAR_NNTPRANGE, \
791 &(n), 0L, 30000L, 0L, (e), \
792 (el), \
793 "Nntp-Range")
794 #define SVAR_MAILDCHK(ps,n,e,el) strtolval((ps)->VAR_MAILDROPCHECK, \
795 &(n), 60L, 30000L, 0L, (e), \
796 (el), \
797 "Maildrop-Check-Minimum")
798 #define SVAR_NMW_WIDTH(ps,n,e,el) strtoval((ps)->VAR_NMW_WIDTH, \
799 &(n), 20, 170, 0, (e), \
800 (el), \
801 "NewMail-Window-Width")
804 /*----------------------------------------------------------------------
805 struct for pruning old Fcc, usually "sent-mail" folders.
806 ----*/
807 struct sm_folder {
808 char *name;
809 int month_num;
813 #define PVAL(v,w) ((v) ? (((w) == Main) ? (v)->main_user_val.p : \
814 (v)->post_user_val.p) : NULL)
815 #define APVAL(v,w) ((v) ? (((w) == Main) ? &(v)->main_user_val.p : \
816 &(v)->post_user_val.p) : NULL)
817 #define LVAL(v,w) ((v) ? (((w) == Main) ? (v)->main_user_val.l : \
818 (v)->post_user_val.l) : NULL)
819 #define ALVAL(v,w) ((v) ? (((w) == Main) ? &(v)->main_user_val.l : \
820 &(v)->post_user_val.l) : NULL)
823 /* use shortname if present, else regular long name */
824 #define S_OR_L(v) (((v) && (v)->shortname) ? (v)->shortname : \
825 ((v) ? (v)->name : NULL))
829 * Flags for write_pinerc
831 #define WRP_NONE 0
832 #define WRP_NOUSER 0x01
833 #define WRP_PRESERV_WRITTEN 0x02
836 #define ALL_EXCEPT "all-except"
837 #define INHERIT "INHERIT"
838 #define HIDDEN_PREF "Normally Hidden Preferences"
839 #define WYSE_PRINTER "attached-to-wyse"
840 #define METASTR "\nremote-abook-metafile="
843 #define CONF_TXT_T char
846 /* exported prototypes */
847 void init_init_vars(struct pine *);
848 void init_pinerc(struct pine *, char **);
849 void init_vars(struct pine *, void (*)(struct pine *, char **));
850 char *feature_list_section(FEATURE_S *);
851 FEATURE_S *feature_list(int);
852 int feature_list_index(int);
853 int feature_list_id(char *);
854 char *feature_list_name(int);
855 struct variable *var_from_name(char *);
856 HelpType feature_list_help(int);
857 void process_feature_list(struct pine *, char **, int , int, int);
858 void cur_rule_value(struct variable *, int, int);
859 NAMEVAL_S *save_msg_rules(int);
860 NAMEVAL_S *fcc_rules(int);
861 NAMEVAL_S *ab_sort_rules(int);
862 NAMEVAL_S *col_style(int);
863 NAMEVAL_S *index_col_style(int);
864 NAMEVAL_S *titlebar_col_style(int);
865 NAMEVAL_S *fld_sort_rules(int);
866 NAMEVAL_S *incoming_startup_rules(int);
867 NAMEVAL_S *startup_rules(int);
868 NAMEVAL_S *pruning_rules(int);
869 NAMEVAL_S *reopen_rules(int);
870 NAMEVAL_S *thread_disp_styles(int);
871 NAMEVAL_S *thread_index_styles(int);
872 NAMEVAL_S *goto_rules(int);
873 NAMEVAL_S *pat_fldr_types(int);
874 NAMEVAL_S *inabook_fldr_types(int);
875 NAMEVAL_S *filter_types(int);
876 NAMEVAL_S *role_repl_types(int);
877 NAMEVAL_S *role_forw_types(int);
878 NAMEVAL_S *role_comp_types(int);
879 NAMEVAL_S *role_status_types(int);
880 NAMEVAL_S *msg_state_types(int);
881 #ifdef ENABLE_LDAP
882 NAMEVAL_S *ldap_search_rules(int);
883 NAMEVAL_S *ldap_search_types(int);
884 NAMEVAL_S *ldap_search_scope(int);
885 #endif
886 void set_current_val(struct variable *, int, int);
887 void set_news_spec_current_val(int, int);
888 void set_feature_list_current_val(struct variable *);
889 char *expand_variables(char *, size_t, char *, int);
890 void init_error(struct pine *, int, int, int, char *);
891 void read_pinerc(PINERC_S *, struct variable *, ParsePinerc);
892 int write_pinerc(struct pine *, EditWhich, int);
893 void quit_to_edit_msg(PINERC_S *);
894 int var_in_pinerc(char *);
895 void dump_global_conf(void);
896 void dump_new_pinerc(char *);
897 int set_variable(int, char *, int, int, EditWhich);
898 int set_variable_list(int, char **, int, EditWhich);
899 void set_current_color_vals(struct pine *);
900 int var_defaults_to_rev(struct variable *);
901 void set_custom_spec_colors(struct pine *);
902 SPEC_COLOR_S *spec_color_from_var(char *, int);
903 SPEC_COLOR_S *spec_colors_from_varlist(char **, int);
904 char *var_from_spec_color(SPEC_COLOR_S *);
905 char **varlist_from_spec_colors(SPEC_COLOR_S *);
906 void update_posting_charset(struct pine *, int);
907 int test_old_growth_bits(struct pine *, int);
908 int feature_gets_an_x(struct pine *, struct variable *, FEATURE_S *, char **, EditWhich);
909 int longest_feature_comment(struct pine *, EditWhich);
910 void toggle_feature(struct pine *, struct variable *, FEATURE_S *, int, EditWhich);
911 int feature_in_list(char **, char *);
912 int test_feature(char **, char *, int);
913 void set_feature(char ***, char *, int);
914 int reset_character_set_stuff(char **);
915 void parse_printer(char *, char **, char **, char **, char **, char **, char **);
916 int copy_pinerc(char *, char *, char **);
917 int copy_abook(char *, char *, char **);
918 HelpType config_help(int, int);
919 int printer_value_check_and_adjust(void);
920 char **get_supported_options(void);
921 unsigned reset_startup_rule(MAILSTREAM *);
922 void free_pinerc_lines(PINERC_LINE **);
923 void panic1(char *, char *);
924 #if !defined(_WINDOWS) || defined(WINDOWS_UNIXSSL_CERTS)
925 void set_system_certs_path(struct pine *);
926 void set_system_certs_container(struct pine *);
927 void set_user_certs_path(struct pine *);
928 void set_user_certs_container(struct pine *);
929 #endif
931 /* mandatory to implement prototypes */
932 int set_input_timeout(int);
933 int get_input_timeout(void);
935 /* decide what to do: return 0 to continue, nonzero to abort pinerc write */
936 int unexpected_pinerc_change(void);
939 #endif /* PITH_CONFIG_INCLUDED */