1 /*
2  *  Project   : tin - a Usenet reader
3  *  Module    : extern.h
4  *  Author    : I. Lea
5  *  Created   : 1991-04-01
6  *  Updated   : 2020-12-02
7  *  Notes     :
8  *
9  * Copyright (c) 1997-2021 Iain Lea <iain@bricbrac.de>
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  *
16  * 1. Redistributions of source code must retain the above copyright notice,
17  *    this list of conditions and the following disclaimer.
18  *
19  * 2. Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in the
21  *    documentation and/or other materials provided with the distribution.
22  *
23  * 3. Neither the name of the copyright holder nor the names of its
24  *    contributors may be used to endorse or promote products derived from
25  *    this software without specific prior written permission.
26  *
27  * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37  * POSSIBILITY OF SUCH DAMAGE.
38  */
39 
40 
41 #ifndef EXTERN_H
42 #	define EXTERN_H 1
43 
44 /*
45  * Library prototypes
46  */
47 
48 #ifndef RFC2046_H
49 #	include <rfc2046.h>
50 #endif /* !RFC2046_H */
51 #ifndef KEYMAP_H
52 #	include "keymap.h"
53 #endif /* !KEYMAP_H */
54 
55 /*
56  * The prototypes bracketed by DECL_xxxx ifdef's are used to get moderately
57  * clean compiles on systems with pre-ANSI/POSIX headers when compiler
58  * warnings are enabled. (Not all of the functions are ANSI or POSIX).
59  */
60 #ifdef DECL__FLSBUF
61 	extern int _flsbuf(int, FILE *);
62 #endif /* DECL__FLSBUF */
63 #ifdef DECL_ALARM
64 	extern unsigned alarm(unsigned);
65 #endif /* DECL_ALARM */
66 #ifdef DECL_ATOI
67 	extern int atoi(const char *);
68 #endif /* DECL_ATOI */
69 #ifdef DECL_ATOL
70 	extern long atol(const char *);
71 #endif /* DECL_ATOL */
72 #ifdef HAVE_ATOLL
73 #	ifdef DECL_ATOLL
74 		extern long long atoll(const char *);
75 #	endif /* DECL_ATOLL */
76 #else
77 #	if defined(HAVE_ATOQ) && defined(DECL_ATOQ)
78 		 extern long long atoq(const char *);
79 #	endif /* HAVE_ATOQ && DECL_ATOQ */
80 #endif /* HAVE_ATOLL */
81 #ifndef HAVE_MEMCPY
82 #	ifdef DECL_BCOPY
83 		extern int bcopy(char *, char *, int);
84 #	endif /* DECL_BCOPY */
85 #endif /* !HAVE_MEMCPY */
86 
87 #if 0 /* trouble on Linux/gcc 3.1 */
88 #	ifdef DECL_BZERO /* FD_ZERO() might use this */
89 		extern void bzero(char *, int);
90 #	endif /* DECL_BZERO */
91 #endif /* 0 */
92 
93 #ifdef DECL_CALLOC
94 	extern void *calloc(size_t, size_t);
95 #endif /* DECL_CALLOC */
96 #ifdef DECL_FCHMOD
97 	extern int fchmod(int, mode_t);
98 #endif /* DECL_FCHMOD */
99 #ifdef DECL_FCLOSE
100 	extern int fclose(FILE *);
101 #endif /* DECL_FCLOSE */
102 #ifdef DECL_FDOPEN
103 	extern FILE *fdopen(int, const char *);
104 #endif /* DECL_FDOPEN */
105 #ifdef DECL_FFLUSH
106 	extern int fflush(FILE *);
107 #endif /* DECL_FFLUSH */
108 #ifdef DECL_FGETC
109 	extern int fgetc(FILE *);
110 #endif /* DECL_FGETC */
111 #if defined(DECL_FILENO) && !defined(fileno)
112 	extern int fileno(FILE *);
113 #endif /* DECL_FILENO && !fileno */
114 #ifdef DECL_FPRINTF
115 	extern int fprintf(FILE *, const char *, ...);
116 #endif /* DECL_FPRINTF */
117 #ifdef DECL_FPUTC
118 	extern int fputc(int, FILE *);
119 #endif /* DECL_FPUTC */
120 #ifdef DECL_FPUTS
121 	extern int fputs(const char *, FILE *);
122 #endif /* DECL_FPUTS */
123 #ifdef DECL_FREAD
124 	extern size_t fread(void *, size_t, size_t, FILE *);
125 #endif /* DECL_FREAD */
126 #ifdef DECL_FREE
127 	extern void free(void *);
128 #endif /* DECL_FREE */
129 #ifdef DECL_FSEEK
130 	extern int fseek(FILE *, long, int);
131 #endif /* DECL_FSEEK */
132 #ifdef DECL_FWRITE
133 	extern size_t fwrite(void *, size_t, size_t, FILE *);
134 #endif /* DECL_FWRITE */
135 #ifdef DECL_GETCWD
136 	extern char *getcwd(char *, size_t);
137 #endif /* DECL_GETCWD */
138 #ifdef DECL_GETENV
139 	extern char *getenv(const char *);
140 #endif /* DECL_GETENV */
141 #ifdef DECL_GETHOSTBYNAME
142 	extern struct hostent *gethostbyname(const char *);
143 #endif /* DECL_GETHOSTBYNAME */
144 #ifdef DECL_GETHOSTNAME
145 	extern int gethostname(char *, size_t);
146 #endif /* DECL_GETHOSTNAME */
147 #ifdef DECL_GETLOGIN
148 	extern char *getlogin(void);
149 #endif /* DECL_GETLOGIN */
150 #ifdef DECL_GETOPT
151 	extern int getopt(int, char * const*, const char *);
152 #endif /* DECL_GETOPT */
153 #ifdef DECL_GETPWNAM
154 	extern struct passwd *getpwnam(const char *);
155 #endif /* DECL_GETPWNAM */
156 #ifdef DECL_GETSERVBYNAME
157 	extern struct servent *getservbyname(const char *, const char *);
158 #endif /* DECL_GETSERVBYNAME */
159 #ifdef DECL_GETWD
160 	extern char *getwd(char *);
161 #endif /* DECL_GETWD */
162 
163 #if 0 /* doesn't match prototype in proto.h */
164 #	ifdef DECL_HEAPSORT
165 	extern int heapsort(void *, size_t, size_t, int (*)(t_comptype*, t_comptype*));
166 #	endif /* DECL_HEAPSORT */
167 #endif /* 0 */
168 
169 #ifdef DECL_INET_ADDR
170 	extern unsigned long inet_addr(const char *);
171 #endif /* DECL_INET_ADDR */
172 
173 #if 0 /* breaks gcc 3.0 -std=c89 on SuSE 7.1 */
174 #	ifdef DECL_INET_ATON
175 		extern int inet_aton(const char *, struct in_addr *);
176 #	endif /* DECL_INET_ATON */
177 #endif /* 0 */
178 
179 #ifdef DECL_IOCTL
180 	extern int ioctl(int, int, void *);
181 #endif /* DECL_IOCTL */
182 #if defined(DECL_ISASCII) && !defined(isascii)
183 	extern int isascii(int);
184 #endif /* DECL_ISASCII && !isascii */
185 #ifdef DECL_KILL
186 	extern int kill(pid_t, int);
187 #endif /* DECL_KILL */
188 #ifdef DECL_MALLOC
189 	extern void *malloc(size_t);
190 #endif /* DECL_MALLOC */
191 #ifdef DECL_MEMSET
192 	extern void *memset(void *, int, size_t);
193 #endif /* DECL_MEMSET */
194 #ifdef DECL_MKSTEMP
195 	extern int mkstemp(char *);
196 #endif /* DECL_MKSTEMP */
197 #ifdef DECL_MKTEMP
198 	extern char *mktemp(char *);
199 #endif /* DECL_MKTEMP */
200 #ifdef DECL_PCLOSE
201 	extern int pclose(FILE *);
202 #endif /* DECL_PCLOSE */
203 #ifdef DECL_PERROR
204 	extern void perror(const char *);
205 #endif /* DECL_PERROR */
206 #ifdef DECL_POPEN
207 	extern FILE *popen(const char *, const char *);
208 #endif /* DECL_POPEN */
209 #ifdef DECL_PRINTF
210 	extern int printf(const char *, ...);
211 #endif /* DECL_PRINTF */
212 #ifdef DECL_PUTENV
213 	extern int putenv(char *);
214 #endif /* DECL_PUTENV */
215 #ifdef DECL_QSORT
216 	extern void qsort(void *, size_t, size_t, int (*)(t_comptype*, t_comptype*));
217 #endif /* DECL_QSORT */
218 #ifdef DECL_REALLOC
219 	extern void *realloc(void *, size_t);
220 #endif /* DECL_REALLOC */
221 #ifdef DECL_RENAME
222 	extern int rename(const char *, const char *);
223 #endif /* DECL_RENAME */
224 #ifdef DECL_REWIND
225 	extern void rewind(FILE *);
226 #endif /* DECL_REWIND */
227 #ifdef DECL_SELECT
228 	extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
229 #endif /* DECL_SELECT */
230 #ifdef DECL_SETENV
231 	extern int setenv(const char *, const char *, int);
232 #endif /* DECL_SETENV */
233 #ifdef DECL_SOCKET
234 	extern int socket(int, int, int);
235 #endif /* DECL_SOCKET */
236 #ifdef DECL_SNPRINTF
237 	extern int snprintf(char *, size_t, const char *, ...);
238 #endif /* DECL_SNPRINTF */
239 #ifdef DECL_SSCANF
240 	extern int sscanf(const char *, const char *, ...);
241 #endif /* DECL_SSCANF */
242 #ifdef DECL_STRCASECMP
243 	extern int strcasecmp(const char *, const char *);
244 #endif /* DECL_STRCASECMP */
245 #ifdef DECL_STRCHR
246 	extern char *strchr(const char *, int);
247 #endif /* DECL_STRCHR */
248 #ifdef DECL_STRRCHR
249 	extern char *strrchr(const char *, int);
250 #endif /* DECL_STRRCHR */
251 #ifdef DECL_STRFTIME
252 	extern int strftime(char *, int, char *, struct tm *);
253 #endif /* DECL_STRFTIME */
254 #ifdef DECL_STRNCASECMP
255 	extern int strncasecmp(const char *, const char *, size_t);
256 #endif /* DECL_STRNCASECMP */
257 #ifdef DECL_STRSEP
258 	extern char *strsep(char **, const char *);
259 #endif /* DECL_STRSEP */
260 #ifdef DECL_STRTOL
261 	extern long strtol(const char *, char **, int);
262 #endif /* DECL_STRTOL */
263 #ifdef DECL_STRTOLL
264 	extern long long strtoll(const char *, char **, int);
265 #endif /* DECL_STRTOLL */
266 #ifdef DECL_SYSTEM
267 	extern int system(const char *);
268 #endif /* DECL_SYSTEM */
269 #ifdef DECL_TMPFILE
270 	extern FILE *tmpfile(void);
271 #endif /* DECL_TMPFILE */
272 #ifdef DECL_TGETENT
273 	extern int tgetent(char *, char *);
274 #endif /* DECL_TGETENT */
275 #ifdef DECL_TGETFLAG
276 	extern int tgetflag(char *);
277 #endif /* DECL_TGETFLAG */
278 #if defined(DECL_TGETNUM)
279 	extern int tgetnum(char *);
280 #endif /* DECL_TGETNUM */
281 #ifdef DECL_TGETSTR
282 	extern char *tgetstr(char *, char **);
283 #endif /* DECL_TGETSTR */
284 #ifdef DECL_TGOTO
285 	extern char *tgoto(char *, int, int);
286 #endif /* DECL_TGOTO */
287 #ifdef DECL_TIGETFLAG
288 	extern int tigetflag(char *);
289 #endif /* DECL_TIGETFLAG */
290 #if defined(DECL_TIGETNUM)
291 	extern int tigetnum(char *);
292 #endif /* DECL_TGETNUM */
293 #ifdef DECL_TIGETSTR
294 	extern char *tigetstr(char *);
295 #endif /* DECL_TIGETSTR */
296 #ifdef DECL_TIME
297 	extern time_t time(time_t *);
298 #endif /* DECL_TIME */
299 #if defined(DECL_TOLOWER) && !defined(tolower)
300 	extern int tolower(int);
301 #endif /* DECL_TOLOWER && !tolower */
302 #if defined(DECL_TOUPPER) && !defined(toupper)
303 	extern int toupper(int);
304 #endif /* DECL_TOUPPER && !toupper */
305 #ifdef DECL_TPARM
306 	extern char *tparm(const char *, ...);
307 #endif /* DECL_TPARM */
308 #ifdef DECL_TPUTS
309 	extern int tputs(char *, int, OutcPtr);
310 #endif /* DECL_TPUTS */
311 #ifdef DECL_UNGETC
312 	extern int ungetc(int, FILE *);
313 #endif /* DECL_UNGETC */
314 
315 #if 0 /* SUSv2 changed that to "int usleep(unsigned long)" */
316 #	ifdef DECL_USLEEP
317 		extern void usleep(unsigned long);
318 #	endif /* DECL_USLEEP */
319 #endif /* 0 */
320 
321 #ifdef DECL_VSNPRINTF
322 	extern int vsnprintf(char *, size_t, const char *, va_list);
323 #endif /* DECL_VSNPRINTF */
324 #if 0 /* some (most?) systems have "int vsprintf(char *, const char *, va_list)" */
325 #	ifdef DECL_VSPRINTF
326 	extern int vsprintf(char *, char *, va_list);
327 #	endif /* DECL_VSPRINTF */
328 #endif /* 0 */
329 
330 #ifdef __CYGWIN__
331 	extern int __declspec(dllimport) optind;
332 	extern char __declspec(dllimport) *optarg;
333 #else
334 	extern int optind;
335 	extern char *optarg;
336 #endif /* __CYGWIN__ */
337 
338 /*
339  * Local variables
340  */
341 
342 /* This fixes ambiguities on platforms that don't distinguish extern case */
343 #ifdef CASE_PROBLEM
344 #	define txt_help_B	txt_help_BIGB
345 #	define txt_help_D	txt_help_BIGD
346 #	define txt_help_I	txt_help_BIGI
347 #	define txt_help_K	txt_help_BIGK
348 #	define txt_help_L	txt_help_BIGL
349 #	define txt_help_M	txt_help_BIGM
350 #	define txt_help_Q	txt_help_BIGQ
351 #	define txt_help_S	txt_help_BIGS
352 #	define txt_help_T	txt_help_BIGT
353 #	define txt_help_U	txt_help_BIGU
354 #	define txt_help_W	txt_help_BIGW
355 #	define txt_help_X	txt_help_BIGX
356 #	define txt_help_p_S	txt_help_p_BIGS
357 #	define txt_help_t_K	txt_help_t_BIGK
358 #	define txt_help_p_U	txt_help_p_BIGU
359 #	define txt_help_thd_C	txt_help_thd_BIGC
360 #endif /* CASE_PROBLEM */
361 
362 extern char *OPT_CHAR_list[];
363 extern char *OPT_STRING_list[];
364 extern char *nntp_server;
365 extern char *tin_progname;
366 extern char active_times_file[PATH_LEN];
367 extern char article_name[PATH_LEN];
368 extern char bug_addr[LEN];
369 extern char bug_nntpserver1[PATH_LEN];
370 extern char bug_nntpserver2[PATH_LEN];
371 extern char cvers[LEN];
372 extern char dead_article[PATH_LEN];
373 extern char dead_articles[PATH_LEN];
374 extern char default_organization[PATH_LEN];
375 extern char default_signature[PATH_LEN];
376 extern char global_attributes_file[PATH_LEN];
377 extern char global_config_file[PATH_LEN];
378 extern char homedir[PATH_LEN];
379 extern char index_maildir[PATH_LEN];
380 extern char index_newsdir[PATH_LEN];
381 extern char index_savedir[PATH_LEN];
382 extern char inewsdir[PATH_LEN];
383 extern char local_attributes_file[PATH_LEN];
384 extern char local_config_file[PATH_LEN];
385 extern char filter_file[PATH_LEN];
386 extern char local_input_history_file[PATH_LEN];
387 extern char local_newsgroups_file[PATH_LEN];
388 extern char local_newsrctable_file[PATH_LEN];
389 extern char lock_file[PATH_LEN];
390 extern char mail_news_user[LEN];
391 extern char mailbox[PATH_LEN];
392 extern char mailer[PATH_LEN];
393 #ifdef HAVE_MH_MAIL_HANDLING
394 	extern char mail_active_file[PATH_LEN];
395 	extern char mailgroups_file[PATH_LEN];
396 #endif /* HAVE_MH_MAIL_HANDLING */
397 extern char newnewsrc[PATH_LEN];
398 extern char news_active_file[PATH_LEN];
399 extern char newsgroups_file[PATH_LEN];
400 extern char newsrc[PATH_LEN];
401 #ifndef NNTP_ONLY
402 	extern char novrootdir[PATH_LEN];
403 	extern char novfilename[NAME_LEN + 1];
404 #endif /* !NNTP_ONLY */
405 extern char page_header[LEN];
406 extern char posted_info_file[PATH_LEN];
407 extern char postponed_articles_file[PATH_LEN];
408 extern char rcdir[PATH_LEN];
409 extern char save_active_file[PATH_LEN];
410 extern char spooldir[PATH_LEN];
411 extern char subscriptions_file[PATH_LEN];
412 extern char overviewfmt_file[PATH_LEN];
413 extern char txt_help_bug_report[LEN];
414 extern char userid[PATH_LEN];
415 
416 extern char domain_name[];
417 
418 extern const char base64_alphabet[64];
419 
420 #ifdef USE_CANLOCK
421 	extern constext *txt_cancel_lock_algos[];
422 #endif /* USE_CANLOCK */
423 extern constext *content_encodings[];
424 extern constext *content_types[];
425 extern constext *txt_attrs[];
426 extern constext *txt_auto_cc_bcc_options[];
427 #ifdef HAVE_COLOR
428 	extern constext *txt_colors[];
429 	extern constext *txt_backcolors[];
430 #endif /* HAVE_COLOR */
431 extern constext *txt_confirm_choices[];
432 extern constext *txt_goto_next_unread_options[];
433 extern constext *txt_hide_uue_type[];
434 extern constext *txt_interactive_mailers[];
435 extern constext *txt_kill_level_type[];
436 #ifdef CHARSET_CONVERSION
437 	extern constext *txt_mime_charsets[];	/* supported charsets */
438 #endif /* CHARSET_CONVERSION */
439 extern constext *txt_mime_7bit_charsets[]; /* 7bit charsets */
440 extern constext *txt_mailbox_formats[];
441 extern constext *txt_marks[];
442 extern constext *txt_mime_encodings[];
443 #ifdef HAVE_UNICODE_NORMALIZATION
444 	extern constext *txt_normalization_forms[];
445 #endif /* HAVE_UNICODE_NORMALIZATION */
446 extern constext *txt_onoff[];
447 extern constext *txt_post_process_types[];
448 extern constext *txt_quick_ks_header_options[];
449 extern constext *txt_quote_style_type[];
450 extern constext *txt_show_from[];
451 extern constext *txt_sort_a_type[];	/* a=articles */
452 extern constext *txt_sort_t_type[];	/* t=threads */
453 extern constext *txt_strip_bogus_type[];
454 extern constext *txt_threading[];
455 extern constext *txt_thread_score_type[];
456 extern constext *txt_trim_article_body_options[];
457 extern constext *txt_wildcard_type[];
458 extern constext txt_1_resp[];
459 extern constext txt_7bit[];
460 extern constext txt_8bit[];
461 extern constext txt_active_file_is_empty[];
462 extern constext txt_all[];
463 extern constext txt_all_groups[];
464 extern constext txt_append_overwrite_quit[];
465 extern constext txt_art_cancel[];
466 extern constext txt_art_mailgroups[];
467 extern constext txt_art_newsgroups[];
468 extern constext txt_art_not_posted[];
469 extern constext txt_art_not_saved[];
470 extern constext txt_art_pager_com[];
471 extern constext txt_art_parent_killed[];
472 extern constext txt_art_parent_none[];
473 extern constext txt_art_parent_unavail[];
474 extern constext txt_art_posted[];
475 extern constext txt_art_rejected[];
476 extern constext txt_art_thread_regex_tag[];
477 extern constext txt_art_unavailable[];
478 extern constext txt_art_x_of_n[];
479 extern constext txt_article_cancelled[];
480 extern constext txt_article_plural[];
481 extern constext txt_article_reposted[];
482 extern constext txt_article_singular[];
483 extern constext txt_article_upper[];
484 extern constext txt_articles_mailed[];
485 #ifndef DISABLE_PRINTING
486 	extern constext txt_articles_printed[];
487 #endif /* !DISABLE_PRINTING */
488 #ifndef DONT_HAVE_PIPING
489 	extern constext txt_articles_piped[];
490 #endif /* !DONT_HAVE_PIPING */
491 extern constext txt_attach[];
492 extern constext txt_attach_charset[];
493 extern constext txt_attach_description[];
494 extern constext txt_attachment_lines[];
495 extern constext txt_attachment_menu[];
496 extern constext txt_attachment_menu_com[];
497 extern constext txt_attachment_no_name[];
498 extern constext txt_attachment_saved[];
499 extern constext txt_attachments_saved[];
500 extern constext txt_attachment_select[];
501 extern constext txt_attachment_tagged[];
502 extern constext txt_attachments_tagged[];
503 extern constext txt_attachment_untagged[];
504 extern constext txt_attach_unsup_charset[];
505 extern constext txt_attrib_menu_com[];
506 extern constext txt_attrib_no_scope[];
507 extern constext txt_uue[];
508 extern constext txt_at_s[];
509 #ifdef NNTP_ABLE
510 	extern constext txt_auth_failed[];
511 	extern constext txt_auth_failed_nopass[];
512 	extern constext txt_auth_pass[];
513 	extern constext txt_auth_user[];
514 	extern constext txt_auth_needed[];
515 	extern constext txt_authorization_fail[];
516 	extern constext txt_authorization_ok[];
517 #endif /* NNTP_ABLE */
518 extern constext txt_author_search_backwards[];
519 extern constext txt_author_search_forwards[];
520 extern constext txt_autoselecting_articles[];
521 extern constext txt_autosubscribed[];
522 extern constext txt_autosubscribing_groups[];
523 extern constext txt_bad_article[];
524 extern constext txt_bad_attrib[];
525 extern constext txt_bad_command[];
526 extern constext txt_base64[];
527 extern constext txt_base_article[];
528 extern constext txt_base_article_range[];
529 extern constext txt_batch_update_unavail[];
530 extern constext txt_begin_of_art[];
531 extern constext txt_begin_of_page[];
532 #ifdef NNTP_ABLE
533 	extern constext txt_caching_off[];
534 	extern constext txt_caching_on[];
535 #endif /* NNTP_ABLE */
536 extern constext txt_cancel_article[];
537 extern constext txt_cancelling_art[];
538 extern constext txt_cannot_create[];
539 extern constext txt_cannot_create_uniq_name[];
540 extern constext txt_cannot_find_base_art[];
541 extern constext txt_cannot_filter_on_path[];
542 #ifdef NNTP_ABLE
543 	extern constext txt_cannot_get_nntp_server_name[];
544 #endif /* NNTP_ABLE */
545 #if !defined(USE_CURSES) && !defined(USE_TERMINFO)
546 	extern constext txt_cannot_get_term_entry[];
547 #endif /* !USE_CURSES && !USE_TERMINFO */
548 extern constext txt_cannot_open[];
549 extern constext txt_cannot_open_for_saving[];
550 extern constext txt_cannot_post[];
551 extern constext txt_cannot_post_group[];
552 #ifdef NNTP_ABLE
553 	extern constext txt_cannot_retrieve[];
554 #endif /* NNTP_ABLE */
555 extern constext txt_cannot_write_to_directory[];
556 extern constext txt_catchup[];
557 extern constext txt_catchup_group[];
558 extern constext txt_catchup_all_read_groups[];
559 extern constext txt_catchup_despite_tags[];
560 extern constext txt_catchup_update_info[];
561 extern constext txt_caughtup[];
562 extern constext txt_check_article[];
563 extern constext txt_checking_for_news[];
564 extern constext txt_checking_new_groups[];
565 #if !defined(HAVE_LIBUU) && defined(HAVE_SUM) && !defined(DONT_HAVE_PIPING)
566 	extern constext txt_checksum_of_file[];
567 #endif /* !HAVE_LIBUU && && HAVE_SUM && !DONT_HAVE_PIPING */
568 extern constext txt_choose_post_process_type[];
569 #ifdef HAVE_COLOR
570 	extern constext txt_color_off[];
571 	extern constext txt_color_on[];
572 #endif /* HAVE_COLOR */
573 extern constext txt_command_failed[];
574 extern constext txt_cook_article_failed_exiting[];
575 extern constext txt_confirm_select_on_exit[];
576 #ifdef NNTP_ABLE
577 	extern constext txt_connecting[];
578 	extern constext txt_connecting_port[];
579 #endif /* NNTP_ABLE */
580 #if defined(NNTP_ABLE) && !defined(INET6)
581 	extern constext txt_connection_to[];
582 #endif /* NNTP_ABLE && !INET6 */
583 extern constext txt_copyright_notice[];
584 extern constext txt_cr[];
585 extern constext txt_creating_active[];
586 extern constext txt_creating_newsrc[];
587 extern constext txt_default[];
588 extern constext txt_delete_processed_files[];
589 extern constext txt_deleting[];
590 #ifdef NNTP_ABLE
591 	extern constext txt_disconnecting[];
592 #endif /* NNTP_ABLE */
593 extern constext txt_end_of_art[];
594 extern constext txt_end_of_arts[];
595 extern constext txt_end_of_attachments[];
596 extern constext txt_end_of_groups[];
597 extern constext txt_end_of_page[];
598 extern constext txt_end_of_scopes[];
599 extern constext txt_end_of_thread[];
600 extern constext txt_end_of_urls[];
601 extern constext txt_enter_getart_limit[];
602 extern constext txt_enter_message_id[];
603 extern constext txt_enter_next_thread[];
604 extern constext txt_enter_next_unread_art[];
605 extern constext txt_enter_next_unread_group[];
606 extern constext txt_enter_option_num[];
607 extern constext txt_enter_range[];
608 extern constext txt_error_approved[];
609 extern constext txt_error_asfail[];
610 extern constext txt_error_bad_approved[];
611 extern constext txt_error_bad_from[];
612 extern constext txt_error_bad_msgidfqdn[];
613 extern constext txt_error_bad_replyto[];
614 extern constext txt_error_bad_to[];
615 #ifndef NO_LOCKING
616 	extern constext txt_error_cant_unlock[];
617 	extern constext txt_error_couldnt_dotlock[];
618 	extern constext txt_error_couldnt_lock[];
619 #endif /* NO_LOCKING */
620 extern constext txt_error_copy_fp[];
621 extern constext txt_error_corrupted_file[];
622 extern constext txt_error_fseek[];
623 extern constext txt_error_followup_poster[];
624 extern constext txt_error_format_string[];
625 extern constext txt_error_gnksa_internal[];
626 extern constext txt_error_gnksa_langle[];
627 extern constext txt_error_gnksa_lparen[];
628 extern constext txt_error_gnksa_rparen[];
629 extern constext txt_error_gnksa_atsign[];
630 extern constext txt_error_gnksa_sgl_domain[];
631 extern constext txt_error_gnksa_inv_domain[];
632 extern constext txt_error_gnksa_ill_domain[];
633 extern constext txt_error_gnksa_unk_domain[];
634 extern constext txt_error_gnksa_fqdn[];
635 extern constext txt_error_gnksa_zero[];
636 extern constext txt_error_gnksa_length[];
637 extern constext txt_error_gnksa_hyphen[];
638 extern constext txt_error_gnksa_begnum[];
639 extern constext txt_error_gnksa_bad_lit[];
640 extern constext txt_error_gnksa_local_lit[];
641 extern constext txt_error_gnksa_rbracket[];
642 extern constext txt_error_gnksa_lp_missing[];
643 extern constext txt_error_gnksa_lp_invalid[];
644 extern constext txt_error_gnksa_lp_zero[];
645 extern constext txt_error_gnksa_rn_unq[];
646 extern constext txt_error_gnksa_rn_qtd[];
647 extern constext txt_error_gnksa_rn_enc[];
648 extern constext txt_error_gnksa_rn_encsyn[];
649 extern constext txt_error_gnksa_rn_paren[];
650 extern constext txt_error_gnksa_rn_invalid[];
651 extern constext txt_error_header_and_body_not_separate[];
652 extern constext txt_error_header_duplicate[];
653 extern constext txt_error_header_format[];
654 extern constext txt_error_header_line_bad_charset[];
655 extern constext txt_error_header_line_bad_encoding[];
656 extern constext txt_error_header_line_blank[];
657 extern constext txt_error_header_line_colon[];
658 extern constext txt_error_header_line_empty[];
659 extern constext txt_error_header_line_missing[];
660 extern constext txt_error_header_line_not_7bit[];
661 extern constext txt_error_header_line_space[];
662 extern constext txt_error_insecure_permissions[];
663 #if defined(HAVE_SETLOCALE) && !defined(NO_LOCALE)
664 	extern constext txt_error_locale[];
665 #endif /* HAVE_SETLOCALE && !NO_LOCALE */
666 extern constext txt_error_mime_end[];
667 extern constext txt_error_mime_start[];
668 extern constext txt_error_no_domain_name[];
669 extern constext txt_error_no_enter_permission[];
670 #ifdef NNTP_INEWS
671 	extern constext txt_error_no_from[];
672 #endif /* NNTP_INEWS */
673 extern constext txt_error_no_read_permission[];
674 extern constext txt_error_no_such_file[];
675 extern constext txt_error_no_write_permission[];
676 extern constext txt_error_newsgroups_poster[];
677 extern constext txt_error_passwd_missing[];
678 extern constext txt_error_plural[];
679 extern constext txt_error_server_has_no_listed_groups[];
680 extern constext txt_error_singular[];
681 #if defined(NNTP_ABLE) && defined(INET6)
682 	extern constext txt_error_socket_or_connect_problem[];
683 #endif /* NNTP_ABLE && INET6 */
684 #if defined(NNTP_ABLE) && defined(TLI) && !defined(INET6)
685 	extern constext txt_error_server_unavailable[];
686 	extern constext txt_error_topen[];
687 #endif /* NNTP_ABLE && TLI && !INET6 */
688 extern constext txt_error_unknown_dlevel[];
689 #if defined(NNTP_ABLE) && defined(HAVE_GETSERVBYNAME) && !defined(INET6)
690 	extern constext txt_error_unknown_service[];
691 #endif /* NNTP_ABLE && HAVE_GETSERVBYNAME && !INET6 */
692 extern constext txt_esc[];
693 extern constext txt_exiting[];
694 extern constext txt_external_mail_done[];
695 extern constext txt_extracting_shar[];
696 #ifdef NNTP_ABLE
697 	extern constext txt_failed_to_connect_to_server[];
698 #endif /* NNTP_ABLE */
699 extern constext txt_feed_pattern[];
700 extern constext txt_filesystem_full[];
701 extern constext txt_filesystem_full_backup[];
702 extern constext txt_filter_comment[];
703 extern constext txt_filter_file[];
704 extern constext txt_filter_global_rules[];
705 extern constext txt_filter_rule_created[];
706 extern constext txt_filter_score[];
707 extern constext txt_filter_score_help[];
708 extern constext txt_filter_text_type[];
709 extern constext txt_followup_newsgroups[];
710 extern constext txt_followup_poster[];
711 extern constext txt_forwarded[];
712 extern constext txt_forwarded_end[];
713 extern constext txt_from_line_only[];
714 extern constext txt_from_line_only_case[];
715 extern constext txt_full[];
716 #ifdef NNTP_ABLE
717 	extern constext txt_gethostbyname[];
718 #endif /* NNTP_ABLE */
719 #if defined(NNTP_ABLE) && !defined(INET6)
720 	extern constext txt_giving_up[];
721 #endif /* NNTP_ABLE && !INET6 */
722 extern constext txt_global[];
723 extern constext txt_group[];
724 extern constext txt_group_aliased[];
725 extern constext txt_group_bogus[];
726 extern constext txt_group_is_moderated[];
727 extern constext txt_group_plural[];
728 extern constext txt_group_rereading[];
729 extern constext txt_group_select_com[];
730 extern constext txt_group_selection[];
731 extern constext txt_group_singular[];
732 extern constext txt_grpdesc_disabled[];
733 extern constext txt_help_article_autokill[];
734 extern constext txt_help_article_autoselect[];
735 extern constext txt_help_article_browse_urls[];
736 extern constext txt_help_article_by_num[];
737 #ifndef NO_POSTING
738 	extern constext txt_help_article_cancel[];
739 	extern constext txt_help_article_followup[];
740 	extern constext txt_help_article_followup_no_quote[];
741 	extern constext txt_help_article_followup_with_header[];
742 	extern constext txt_help_article_repost[];
743 #endif /* !NO_POSTING */
744 extern constext txt_help_article_edit[];
745 extern constext txt_help_article_first_in_thread[];
746 extern constext txt_help_article_first_page[];
747 extern constext txt_help_article_last_in_thread[];
748 extern constext txt_help_article_last_page[];
749 extern constext txt_help_article_mark_thread_read[];
750 extern constext txt_help_article_next[];
751 extern constext txt_help_article_next_thread[];
752 extern constext txt_help_article_next_unread[];
753 extern constext txt_help_article_parent[];
754 #ifdef HAVE_PGP_GPG
755 	extern constext txt_help_article_pgp[];
756 #endif /* HAVE_PGP_GPG */
757 extern constext txt_help_article_prev[];
758 extern constext txt_help_article_prev_unread[];
759 extern constext txt_help_article_quick_kill[];
760 extern constext txt_help_article_quick_select[];
761 extern constext txt_help_article_quit_to_select_level[];
762 extern constext txt_help_article_reply[];
763 extern constext txt_help_article_reply_no_quote[];
764 extern constext txt_help_article_reply_with_header[];
765 extern constext txt_help_article_search_backwards[];
766 extern constext txt_help_article_search_forwards[];
767 extern constext txt_help_article_show_raw[];
768 extern constext txt_help_article_skip_quote[];
769 extern constext txt_help_article_toggle_formfeed[];
770 extern constext txt_help_article_toggle_headers[];
771 extern constext txt_help_article_toggle_highlight[];
772 extern constext txt_help_article_toggle_rot13[];
773 extern constext txt_help_article_toggle_tabwidth[];
774 extern constext txt_help_article_toggle_tex2iso[];
775 extern constext txt_help_article_toggle_uue[];
776 extern constext txt_help_article_view_attachments[];
777 extern constext txt_help_attachment_first[];
778 extern constext txt_help_attachment_goto[];
779 extern constext txt_help_attachment_last[];
780 #ifndef DONT_HAVE_PIPING
781 	extern constext txt_help_attachment_pipe[];
782 	extern constext txt_help_attachment_pipe_raw[];
783 #endif /* !DONT_HAVE_PIPING */
784 extern constext txt_help_attachment_save[];
785 extern constext txt_help_attachment_search_forwards[];
786 extern constext txt_help_attachment_search_backwards[];
787 extern constext txt_help_attachment_select[];
788 extern constext txt_help_attachment_tag[];
789 extern constext txt_help_attachment_tag_pattern[];
790 extern constext txt_help_attachment_toggle_tagged[];
791 extern constext txt_help_attachment_untag[];
792 extern constext txt_help_attachment_toggle_info_line[];
793 extern constext txt_help_attrib_first_opt[];
794 extern constext txt_help_attrib_goto_opt[];
795 extern constext txt_help_attrib_last_opt[];
796 extern constext txt_help_attrib_reset_attrib[];
797 extern constext txt_help_attrib_search_opt_backwards[];
798 extern constext txt_help_attrib_search_opt_forwards[];
799 extern constext txt_help_attrib_select[];
800 extern constext txt_help_attrib_toggle_attrib[];
801 extern constext txt_help_bug[];
802 extern constext txt_help_config_first_opt[];
803 extern constext txt_help_config_goto_opt[];
804 extern constext txt_help_config_last_opt[];
805 extern constext txt_help_config_scope_menu[];
806 extern constext txt_help_config_search_opt_backwards[];
807 extern constext txt_help_config_search_opt_forwards[];
808 extern constext txt_help_config_select[];
809 extern constext txt_help_config_toggle_attrib[];
810 extern constext txt_help_filter_comment[];
811 extern constext txt_help_filter_from[];
812 extern constext txt_help_filter_lines[];
813 extern constext txt_help_filter_msgid[];
814 extern constext txt_help_filter_subj[];
815 extern constext txt_help_filter_text[];
816 extern constext txt_help_filter_text_type[];
817 extern constext txt_help_filter_time[];
818 extern constext txt_help_global_article_range[];
819 extern constext txt_help_global_edit_filter[];
820 extern constext txt_help_global_esc[];
821 extern constext txt_help_global_help[];
822 extern constext txt_help_global_last_art[];
823 extern constext txt_help_global_line_down[];
824 extern constext txt_help_global_line_up[];
825 extern constext txt_help_global_lookup_art[];
826 extern constext txt_help_global_mail[];
827 extern constext txt_help_global_option_menu[];
828 extern constext txt_help_global_page_down[];
829 extern constext txt_help_global_page_up[];
830 #ifndef DONT_HAVE_PIPING
831 	extern constext txt_help_global_pipe[];
832 #endif /* !DONT_HAVE_PIPING */
833 #ifndef NO_POSTING
834 	extern constext txt_help_global_post[];
835 	extern constext txt_help_global_post_postponed[];
836 #endif /* !NO_POSTING */
837 extern constext txt_help_global_posting_history[];
838 extern constext txt_help_global_previous_menu[];
839 #ifndef DISABLE_PRINTING
840 	extern constext txt_help_global_print[];
841 #endif /* !DISABLE_PRINTING */
842 extern constext txt_help_global_quit_tin[];
843 extern constext txt_help_global_redraw_screen[];
844 extern constext txt_help_global_save[];
845 extern constext txt_help_global_auto_save[];
846 extern constext txt_help_global_scroll_down[];
847 extern constext txt_help_global_scroll_up[];
848 extern constext txt_help_global_search_auth_backwards[];
849 extern constext txt_help_global_search_auth_forwards[];
850 extern constext txt_help_global_search_body[];
851 extern constext txt_help_global_search_body_comment[];
852 extern constext txt_help_global_search_repeat[];
853 extern constext txt_help_global_search_subj_backwards[];
854 extern constext txt_help_global_search_subj_forwards[];
855 #ifndef NO_SHELL_ESCAPE
856 	extern constext txt_help_global_shell_escape[];
857 #endif /* !NO_SHELL_ESCAPE */
858 extern constext txt_help_global_tag[];
859 #ifdef HAVE_COLOR
860 	extern constext txt_help_global_toggle_color[];
861 #endif /* HAVE_COLOR */
862 extern constext txt_help_global_toggle_info_line[];
863 extern constext txt_help_global_toggle_inverse_video[];
864 extern constext txt_help_global_toggle_mini_help[];
865 extern constext txt_help_global_toggle_subj_display[];
866 extern constext txt_help_global_version[];
867 extern constext txt_help_group_catchup[];
868 extern constext txt_help_group_catchup_next[];
869 extern constext txt_help_group_first_thread[];
870 extern constext txt_help_group_last_thread[];
871 extern constext txt_help_group_list_thread[];
872 extern constext txt_help_group_mark_article_unread[];
873 extern constext txt_help_group_mark_thread_read[];
874 extern constext txt_help_group_mark_thread_unread[];
875 extern constext txt_help_mark_feed_read[];
876 extern constext txt_help_mark_feed_unread[];
877 extern constext txt_help_group_mark_unsel_art_read[];
878 extern constext txt_help_group_next[];
879 extern constext txt_help_group_prev[];
880 extern constext txt_help_group_reverse_thread_selection[];
881 extern constext txt_help_group_select_all[];
882 extern constext txt_help_group_select_thread[];
883 extern constext txt_help_group_select_thread_if_unread_selected[];
884 extern constext txt_help_group_select_thread_pattern[];
885 extern constext txt_help_group_tag_parts[];
886 extern constext txt_help_group_thread_by_num[];
887 extern constext txt_help_group_toggle_getart_limit[];
888 extern constext txt_help_group_toggle_read_articles[];
889 extern constext txt_help_group_toggle_thread_selection[];
890 extern constext txt_help_group_toggle_threading[];
891 extern constext txt_help_group_undo_thread_selection[];
892 extern constext txt_help_group_untag_thread[];
893 extern constext txt_help_kill_scope[];
894 extern constext txt_help_scope_add[];
895 extern constext txt_help_scope_del[];
896 extern constext txt_help_scope_edit_attrib_file[];
897 extern constext txt_help_scope_first_scope[];
898 extern constext txt_help_scope_goto_scope[];
899 extern constext txt_help_scope_last_scope[];
900 extern constext txt_help_scope_move[];
901 extern constext txt_help_scope_rename[];
902 extern constext txt_help_scope_select[];
903 extern constext txt_help_select_catchup[];
904 extern constext txt_help_select_catchup_next_unread[];
905 extern constext txt_help_select_first_group[];
906 extern constext txt_help_select_goto_group[];
907 extern constext txt_help_select_group_by_num[];
908 extern constext txt_help_select_group_range[];
909 extern constext txt_help_select_last_group[];
910 #ifdef NNTP_ABLE
911 	extern constext txt_help_select_lookup_group[];
912 	extern constext txt_help_select_lookup_group_comment[];
913 #endif /* NNTP_ABLE */
914 extern constext txt_help_select_mark_group_unread[];
915 extern constext txt_help_select_move_group[];
916 extern constext txt_help_select_next_unread_group[];
917 extern constext txt_help_select_quit[];
918 extern constext txt_help_select_quit_no_write[];
919 extern constext txt_help_select_read_group[];
920 extern constext txt_help_select_reset_newsrc[];
921 extern constext txt_help_select_scope[];
922 extern constext txt_help_select_search_group_backwards[];
923 extern constext txt_help_select_search_group_comment[];
924 extern constext txt_help_select_search_group_forwards[];
925 extern constext txt_help_select_subscribe[];
926 extern constext txt_help_select_subscribe_pattern[];
927 extern constext txt_help_select_sync_with_active[];
928 extern constext txt_help_select_toggle_descriptions[];
929 extern constext txt_help_select_toggle_read_groups[];
930 extern constext txt_help_select_unsubscribe[];
931 extern constext txt_help_select_unsubscribe_pattern[];
932 extern constext txt_help_select_sort_active[];
933 extern constext txt_help_select_yank_active[];
934 extern constext txt_help_thread_article_by_num[];
935 extern constext txt_help_thread_catchup[];
936 extern constext txt_help_thread_catchup_next_unread[];
937 extern constext txt_help_thread_first_article[];
938 extern constext txt_help_thread_last_article[];
939 extern constext txt_help_thread_mark_article_read[];
940 extern constext txt_help_thread_mark_article_unread[];
941 extern constext txt_help_thread_mark_thread_unread[];
942 extern constext txt_help_thread_read_article[];
943 extern constext txt_help_thread_tag_parts[];
944 extern constext txt_help_title_disp[];
945 extern constext txt_help_title_misc[];
946 extern constext txt_help_title_navi[];
947 extern constext txt_help_title_ops[];
948 extern constext txt_help_title_attachment_ops[];
949 extern constext txt_help_title_attrib_ops[];
950 extern constext txt_help_title_config_ops[];
951 extern constext txt_help_title_scope_ops[];
952 extern constext txt_help_title_url_ops[];
953 extern constext txt_help_url_first_url[];
954 extern constext txt_help_url_goto_url[];
955 extern constext txt_help_url_last_url[];
956 extern constext txt_help_url_search_forwards[];
957 extern constext txt_help_url_search_backwards[];
958 extern constext txt_help_url_select[];
959 extern constext txt_help_url_toggle_info_line[];
960 extern constext txt_incomplete[];
961 extern constext txt_index_page_com[];
962 extern constext txt_info_add_kill[];
963 extern constext txt_info_add_select[];
964 extern constext txt_info_all_parts_tagged[];
965 extern constext txt_info_all_parts_untagged[];
966 extern constext txt_info_do_postpone[];
967 extern constext txt_info_enter_valid_character[];
968 extern constext txt_info_missing_part[];
969 extern constext txt_info_nopostponed[];
970 extern constext txt_info_not_multipart_message[];
971 extern constext txt_info_not_subscribed[];
972 extern constext txt_info_no_write[];
973 extern constext txt_info_no_previous_expression[];
974 extern constext txt_info_postponed[];
975 extern constext txt_info_x_conversion_note[];
976 extern constext txt_invalid_from[];
977 #if defined(MULTIBYTE_ABLE) && !defined(NO_LOCALE)
978 	extern constext txt_invalid_multibyte_sequence[];
979 #endif /* MULTIBYTE_ABLE && !NO_LOCALE */
980 extern constext txt_inverse_off[];
981 extern constext txt_inverse_on[];
982 extern constext txt_is_mailbox[];
983 extern constext txt_is_tex_encoded[];
984 extern constext txt_keymap_missing_key[];
985 extern constext txt_keymap_invalid_key[];
986 extern constext txt_keymap_invalid_name[];
987 extern constext txt_keymap_upgraded[];
988 extern constext txt_kill_from[];
989 extern constext txt_kill_lines[];
990 extern constext txt_kill_menu[];
991 extern constext txt_kill_msgid[];
992 extern constext txt_kill_scope[];
993 extern constext txt_kill_subj[];
994 extern constext txt_kill_text[];
995 extern constext txt_kill_time[];
996 extern constext txt_last[];
997 extern constext txt_last_resp[];
998 extern constext txt_lines[];
999 #ifdef NNTP_ABLE
1000 	extern constext txt_lookup_func_not_available[];
1001 	extern constext txt_lookup_func_not_nntp[];
1002 	extern constext txt_lookup_show_group[];
1003 	extern constext txt_lookup_show_groups[];
1004 #endif /* NNTP_ABLE */
1005 extern constext txt_mail[];
1006 extern constext txt_mailbox[];
1007 extern constext txt_mail_art_to[];
1008 extern constext txt_mail_log_to[];
1009 extern constext txt_mail_bug_report[];
1010 extern constext txt_mail_bug_report_confirm[];
1011 extern constext txt_mailed[];
1012 extern constext txt_mailing_to[];
1013 extern constext txt_mail_save_active_head[];
1014 extern constext txt_mark[];
1015 extern constext txt_mark_arts_read[];
1016 extern constext txt_mark_art_read[];
1017 extern constext txt_mark_group_read[];
1018 extern constext txt_mark_thread_read[];
1019 extern constext txt_marked_as_read[];
1020 extern constext txt_marked_as_unread[];
1021 extern constext txt_marked_arts_as_read[];
1022 extern constext txt_marked_arts_as_unread[];
1023 extern constext txt_matching_cmd_line_groups[];
1024 extern constext txt_mini_attachment_1[];
1025 extern constext txt_mini_attachment_2[];
1026 extern constext txt_mini_attachment_3[];
1027 extern constext txt_mini_group_1[];
1028 extern constext txt_mini_group_2[];
1029 extern constext txt_mini_group_3[];
1030 extern constext txt_mini_info_1[];
1031 extern constext txt_mini_info_2[];
1032 extern constext txt_mini_page_1[];
1033 extern constext txt_mini_page_2[];
1034 extern constext txt_mini_page_3[];
1035 extern constext txt_mini_scope_1[];
1036 extern constext txt_mini_scope_2[];
1037 extern constext txt_mini_select_1[];
1038 extern constext txt_mini_select_2[];
1039 extern constext txt_mini_select_3[];
1040 extern constext txt_mini_thread_1[];
1041 extern constext txt_mini_thread_2[];
1042 extern constext txt_mini_url_1[];
1043 extern constext txt_mini_url_2[];
1044 extern constext txt_more[];
1045 extern constext txt_moving[];
1046 extern constext txt_msgid_line_last[];
1047 extern constext txt_msgid_line_only[];
1048 extern constext txt_msgid_refs_line[];
1049 extern constext txt_name[];
1050 extern constext txt_newsgroup[];
1051 extern constext txt_newsgroup_plural[];
1052 extern constext txt_newsgroup_position[];
1053 extern constext txt_newsgroup_singular[];
1054 extern constext txt_newsrc_again[];
1055 extern constext txt_newsrc_nogroups[];
1056 extern constext txt_newsrc_saved[];
1057 extern constext txt_next_resp[];
1058 extern constext txt_no[];
1059 extern constext txt_no_arts[];
1060 extern constext txt_no_arts_posted[];
1061 extern constext txt_no_attachments[];
1062 extern constext txt_no_description[];
1063 extern constext txt_no_filename[];
1064 extern constext txt_no_group[];
1065 extern constext txt_no_groups[];
1066 extern constext txt_no_groups_to_read[];
1067 extern constext txt_no_last_message[];
1068 extern constext txt_no_mail_address[];
1069 extern constext txt_no_marked_arts[];
1070 extern constext txt_no_match[];
1071 extern constext txt_no_more_groups[];
1072 extern constext txt_no_newsgroups[];
1073 extern constext txt_no_next_unread_art[];
1074 extern constext txt_no_prev_group[];
1075 extern constext txt_no_prev_search[];
1076 extern constext txt_no_prev_unread_art[];
1077 extern constext txt_no_responses[];
1078 extern constext txt_no_resps_in_thread[];
1079 extern constext txt_no_scopes[];
1080 extern constext txt_no_search_string[];
1081 extern constext txt_no_subject[];
1082 #ifndef USE_CURSES
1083 	extern constext txt_no_term_clear_eol[];
1084 	extern constext txt_no_term_clear_eos[];
1085 	extern constext txt_no_term_clearscreen[];
1086 	extern constext txt_no_term_cursor_motion[];
1087 	extern constext txt_no_term_set[];
1088 #endif /* !USE_CURSES */
1089 extern constext txt_no_viewer_found[];
1090 #ifdef NNTP_ABLE
1091 	extern constext txt_no_xover_support[];
1092 #endif /* NNTP_ABLE */
1093 extern constext txt_not_exist[];
1094 extern constext txt_not_in_active_file[];
1095 extern constext txt_nrctbl_create[];
1096 extern constext txt_nrctbl_default[];
1097 extern constext txt_nrctbl_info[];
1098 extern constext txt_only[];
1099 extern constext txt_option_not_enabled[];
1100 extern constext txt_options_menu[];
1101 extern constext txt_options_menu_com[];
1102 extern constext txt_out_of_memory[];
1103 extern constext txt_pcre_error_at[];
1104 extern constext txt_pcre_error_num[];
1105 extern constext txt_pcre_error_text[];
1106 extern constext txt_post_a_followup[];
1107 extern constext txt_post_error_ask_postpone[];
1108 extern constext txt_post_history_menu[];
1109 extern constext txt_post_newsgroups[];
1110 extern constext txt_post_processing[];
1111 extern constext txt_post_processing_finished[];
1112 extern constext txt_post_subject[];
1113 #ifdef NNTP_INEWS
1114 	extern constext txt_post_via_builtin_inews[];
1115 	extern constext txt_post_via_builtin_inews_only[];
1116 #endif /* NNTP_INEWS */
1117 extern constext txt_posted_info_file[];
1118 extern constext txt_posting[];
1119 extern constext txt_postpone_repost[];
1120 extern constext txt_prefix_hot[];
1121 extern constext txt_prefix_tagged[];
1122 extern constext txt_prefix_untagged[];
1123 #ifdef NNTP_ABLE
1124 	extern constext txt_prep_for_filter_on_path[];
1125 #endif /* NNTP_ABLE */
1126 extern constext txt_prompt_fup_ignore[];
1127 extern constext txt_prompt_unchanged_mail[];
1128 extern constext txt_prompt_see_postponed[];
1129 extern constext txt_quick_filter_kill[];
1130 extern constext txt_quick_filter_select[];
1131 extern constext txt_quit[];
1132 extern constext txt_quit_cancel[];
1133 extern constext txt_quit_despite_tags[];
1134 extern constext txt_quit_edit_post[];
1135 extern constext txt_quit_edit_postpone[];
1136 extern constext txt_quit_edit_save_kill[];
1137 extern constext txt_quit_edit_save_select[];
1138 extern constext txt_quit_edit_send[];
1139 extern constext txt_quit_edit_xpost[];
1140 extern constext txt_quit_no_write[];
1141 extern constext txt_quoted_printable[];
1142 extern constext txt_range_invalid[];
1143 extern constext txt_read_abort[];
1144 extern constext txt_read_exit[];
1145 extern constext txt_reading_article[];
1146 extern constext txt_reading_arts[];
1147 extern constext txt_reading_attributes_file[];
1148 extern constext txt_reading_config_file[];
1149 extern constext txt_reading_filter_file[];
1150 extern constext txt_reading_groups[];
1151 extern constext txt_reading_input_history_file[];
1152 extern constext txt_reading_keymap_file[];
1153 extern constext txt_reading_news_active_file[];
1154 extern constext txt_reading_news_newsrc_file[];
1155 extern constext txt_reading_newsgroups_file[];
1156 extern constext txt_reading_newsrc[];
1157 #ifdef NNTP_ABLE
1158 	extern constext txt_reconnect_to_news_server[];
1159 #endif /* NNTP_ABLE */
1160 extern constext txt_refs_line_only[];
1161 #ifdef HAVE_GETTIMEOFDAY
1162 	extern constext txt_remaining[];
1163 #endif /* HAVE_GETTIMEOFDAY */
1164 extern constext txt_remove_bogus[];
1165 extern constext txt_removed_rule[];
1166 extern constext txt_rename_error[];
1167 extern constext txt_reply_to_author[];
1168 extern constext txt_repost[];
1169 extern constext txt_repost_an_article[];
1170 extern constext txt_repost_group[];
1171 extern constext txt_reset_newsrc[];
1172 extern constext txt_resp_redirect[];
1173 extern constext txt_resp_to_poster[];
1174 extern constext txt_return_key[];
1175 extern constext txt_save[];
1176 extern constext txt_save_attachment[];
1177 extern constext txt_save_config[];
1178 extern constext txt_save_filename[];
1179 extern constext txt_saved[];
1180 extern constext txt_saved_group[];
1181 extern constext txt_saved_groupname[];
1182 extern constext txt_saved_nothing[];
1183 extern constext txt_saved_summary[];
1184 extern constext txt_saved_to[];
1185 extern constext txt_saved_to_range[];
1186 extern constext txt_saving[];
1187 extern constext txt_screen_init_failed[];
1188 #ifndef USE_CURSES
1189 	extern constext txt_screen_too_small[];
1190 #endif /* !USE_CURSES */
1191 extern constext txt_screen_too_small_exiting[];
1192 extern constext txt_scope_delete[];
1193 extern constext txt_scope_enter[];
1194 extern constext txt_scope_new_position[];
1195 extern constext txt_scope_new_position_is_global[];
1196 extern constext txt_scope_operation_not_allowed[];
1197 extern constext txt_scope_rename[];
1198 extern constext txt_scope_select[];
1199 extern constext txt_scopes_menu[];
1200 extern constext txt_scopes_menu_com[];
1201 extern constext txt_search_backwards[];
1202 extern constext txt_search_body[];
1203 extern constext txt_search_forwards[];
1204 extern constext txt_searching[];
1205 extern constext txt_searching_body[];
1206 extern constext txt_select_art[];
1207 extern constext txt_select_config_file_option[];
1208 extern constext txt_select_from[];
1209 extern constext txt_select_group[];
1210 extern constext txt_select_lines[];
1211 extern constext txt_select_menu[];
1212 extern constext txt_select_msgid[];
1213 extern constext txt_select_pattern[];
1214 extern constext txt_select_scope[];
1215 extern constext txt_select_subj[];
1216 extern constext txt_select_text[];
1217 extern constext txt_select_thread[];
1218 extern constext txt_select_time[];
1219 extern constext txt_send_bugreport[];
1220 #ifdef NNTP_ABLE
1221 	extern constext txt_server_name_in_file_env_var[];
1222 #endif /* NNTP_ABLE */
1223 extern constext txt_serverconfig_header[];
1224 extern constext txt_servers_active[];
1225 extern constext txt_skipping_newgroups[];
1226 extern constext txt_space[];
1227 extern constext txt_starting_command[];
1228 extern constext txt_stp_list_thread[];
1229 extern constext txt_stp_thread[];
1230 extern constext txt_subj_line_only[];
1231 extern constext txt_subj_line_only_case[];
1232 extern constext txt_subscribe_pattern[];
1233 extern constext txt_subscribed_num_groups[];
1234 extern constext txt_subscribed_to[];
1235 extern constext txt_subscribing[];
1236 extern constext txt_supersede_article[];
1237 extern constext txt_supersede_group[];
1238 extern constext txt_superseding_art[];
1239 extern constext txt_suspended_message[];
1240 extern constext txt_tab[];
1241 extern constext txt_tex[];
1242 extern constext txt_there_is_no_news[];
1243 extern constext txt_thread_upper[];
1244 extern constext txt_thread_com[];
1245 extern constext txt_thread_marked_as_deselected[];
1246 extern constext txt_thread_marked_as_selected[];
1247 #if 0 /* unused */
1248 	extern constext txt_thread_plural[];
1249 #endif /* 0 */
1250 extern constext txt_thread_singular[];
1251 extern constext txt_thread_x_of_n[];
1252 extern constext txt_threading_arts[];
1253 extern constext txt_time_default_days[];
1254 extern constext txt_tinrc_defaults[];
1255 extern constext txt_tinrc_filter[];
1256 extern constext txt_tinrc_header[];
1257 extern constext txt_tinrc_info_in_last_line[];
1258 extern constext txt_tinrc_newnews[];
1259 extern constext txt_toggled_high[];
1260 extern constext txt_toggled_rot13[];
1261 extern constext txt_toggled_tex2iso[];
1262 extern constext txt_toggled_tabwidth[];
1263 #if defined(NNTP_ABLE) && defined(HAVE_INET_NTOA) && !defined(INET6)
1264 	extern constext txt_trying[];
1265 #endif /* NNTP_ABLE && HAVE_INET_NTOA && !INET6 */
1266 #ifndef NO_LOCKING
1267 	extern constext txt_trying_dotlock[];
1268 	extern constext txt_trying_lock[];
1269 #endif /* NO_LOCKING */
1270 extern constext txt_type_h_for_help[];
1271 extern constext txt_unlimited_time[];
1272 extern constext txt_unread[];
1273 extern constext txt_unsubscribe_pattern[];
1274 extern constext txt_unsubscribed_num_groups[];
1275 extern constext txt_unsubscribed_to[];
1276 extern constext txt_unsubscribing[];
1277 extern constext txt_unthreading_arts[];
1278 extern constext txt_updated[];
1279 extern constext txt_updating[];
1280 extern constext txt_url_menu[];
1281 extern constext txt_url_menu_com[];
1282 extern constext txt_url_open[];
1283 extern constext txt_url_select[];
1284 extern constext txt_url_done[];
1285 extern constext txt_usage_catchup[];
1286 extern constext txt_usage_check_for_unread_news[];
1287 #ifdef DEBUG
1288 	extern constext txt_usage_debug[];
1289 #endif /* DEBUG */
1290 extern constext txt_usage_dont_check_new_newsgroups[];
1291 extern constext txt_usage_dont_save_files_on_quit[];
1292 extern constext txt_usage_dont_show_descriptions[];
1293 #ifdef NNTP_ABLE
1294 	extern constext txt_usage_force_authentication[];
1295 #ifdef INET6
1296 	extern constext txt_usage_force_ipv4[];
1297 	extern constext txt_usage_force_ipv6[];
1298 #endif /* INET6 */
1299 	extern constext txt_usage_newsserver[];
1300 	extern constext txt_usage_port[];
1301 	extern constext txt_usage_read_news_remotely[];
1302 #endif /* NNTP_ABLE */
1303 extern constext txt_usage_getart_limit[];
1304 extern constext txt_usage_help_information[];
1305 extern constext txt_usage_help_message[];
1306 extern constext txt_usage_index_newsdir[];
1307 extern constext txt_usage_update_index_files[];
1308 extern constext txt_usage_maildir[];
1309 extern constext txt_usage_mail_bugreport[];
1310 extern constext txt_usage_mail_new_news[];
1311 extern constext txt_usage_mail_new_news_to_user[];
1312 extern constext txt_usage_newsrc_file[];
1313 extern constext txt_usage_no_posting[];
1314 extern constext txt_usage_post_article[];
1315 extern constext txt_usage_post_postponed_arts[];
1316 extern constext txt_usage_read_saved_news[];
1317 extern constext txt_usage_savedir[];
1318 extern constext txt_usage_save_new_news[];
1319 extern constext txt_usage_start_if_unread_news[];
1320 extern constext txt_usage_tin[];
1321 #ifdef HAVE_COLOR
1322 	extern constext txt_usage_toggle_color[];
1323 #endif /* HAVE_COLOR */
1324 extern constext txt_usage_quickstart[];
1325 extern constext txt_usage_read_only_subscribed[];
1326 extern constext txt_usage_read_only_active[];
1327 extern constext txt_usage_verbose[];
1328 extern constext txt_usage_version[];
1329 extern constext txt_useful_without_batch_mode[];
1330 extern constext txt_useful_with_batch_mode[];
1331 extern constext txt_useful_with_batch_or_debug_mode[];
1332 extern constext txt_useless_combination[];
1333 extern constext txt_use_mime[];
1334 extern constext txt_value_out_of_range[];
1335 extern constext txt_view_attachment[];
1336 extern constext txt_warn_art_line_too_long[];
1337 extern constext txt_warn_article_unchanged[];
1338 extern constext txt_warn_blank_subject[];
1339 extern constext txt_warn_cancel[];
1340 #ifdef CHARSET_CONVERSION
1341 	extern constext txt_warn_charset_conversion[];
1342 #endif /* CHARSET_CONVERSION */
1343 extern constext txt_warn_downgrade[];
1344 extern constext txt_warn_encoding_and_external_inews[];
1345 #ifdef ALLOW_FWS_IN_NEWSGROUPLIST
1346 	extern constext txt_warn_header_line_comma[];
1347 	extern constext txt_warn_header_line_groups_contd[];
1348 #endif /* ALLOW_FWS_IN_NEWSGROUPLIST */
1349 extern constext txt_warn_example_hierarchy[];
1350 extern constext txt_warn_multiple_sigs[];
1351 extern constext txt_warn_newsrc[];
1352 extern constext txt_warn_not_all_arts_saved[];
1353 extern constext txt_warn_re_but_no_references[];
1354 extern constext txt_warn_references_but_no_re[];
1355 extern constext txt_warn_sig_too_long[];
1356 extern constext txt_warn_suspicious_mail[];
1357 extern constext txt_warn_update[];
1358 extern constext txt_warn_unrecognized_version[];
1359 extern constext txt_warn_wrong_sig_format[];
1360 extern constext txt_warn_xref_not_supported[];
1361 extern constext txt_writing_attributes_file[];
1362 extern constext txt_x_resp[];
1363 extern constext txt_yanked_groups[];
1364 extern constext txt_yanked_none[];
1365 extern constext txt_yanked_sub_groups[];
1366 extern constext txt_show_unread[];
1367 extern constext txt_yes[];
1368 extern constext txt_you_have_mail[];
1369 
1370 #ifndef DISABLE_PRINTING
1371 	extern constext txt_print[];
1372 	extern constext txt_printing[];
1373 #endif /* !DISABLE_PRINTING */
1374 
1375 #ifndef DONT_HAVE_PIPING
1376 	extern constext txt_no_command[];
1377 #endif /* !DONT_HAVE_PIPING */
1378 
1379 #ifndef HAVE_FASCIST_NEWSADMIN
1380 	extern constext txt_warn_followup_to_several_groups[];
1381 	extern constext txt_warn_grp_renamed[];
1382 	extern constext txt_warn_missing_followup_to[];
1383 	extern constext txt_warn_not_in_newsrc[];
1384 	extern constext txt_warn_not_valid_newsgroup[];
1385 #endif /* !HAVE_FASCIST_NEWSADMIN */
1386 
1387 #ifdef HAVE_LIBUU
1388 	extern constext txt_libuu_saved[];
1389 	extern constext txt_libuu_error_missing[];
1390 	extern constext txt_libuu_error_no_begin[];
1391 	extern constext txt_libuu_error_no_data[];
1392 	extern constext txt_libuu_error_unknown[];
1393 #endif /* HAVE_LIBUU */
1394 extern constext txt_uu_error_decode[];
1395 extern constext txt_uu_error_no_end[];
1396 extern constext txt_uu_success[];
1397 
1398 #if defined(NNTP_ABLE) && !defined(NNTP_ONLY)
1399 	extern constext txt_cannot_open_active_file[];
1400 #endif /* NNTP_ABLE && !NNTP_ONLY */
1401 
1402 #ifndef NO_SHELL_ESCAPE
1403 	extern constext txt_shell_command[];
1404 	extern constext txt_shell_escape[];
1405 #endif /* !NO_SHELL_ESCAPE */
1406 
1407 extern int *my_group;
1408 extern int NOTESLINES;
1409 extern int _hp_glitch;
1410 extern int attrib_file_offset;
1411 extern int cCOLS;
1412 extern int cLINES;
1413 extern int curr_line;
1414 extern int filter_file_offset;
1415 extern int input_context;
1416 extern int iso2asc_supported;
1417 extern int last_resp;
1418 extern int mark_offset;
1419 extern int max_active;
1420 extern int max_art;
1421 extern int max_base;
1422 extern int max_newnews;
1423 extern int max_save;
1424 extern int max_scope;
1425 extern int need_resize;
1426 extern int num_active;
1427 extern int num_newnews;
1428 extern int num_of_tagged_arts;
1429 extern int num_save;
1430 extern int num_scope;
1431 extern int signal_context;
1432 extern int srch_lineno;
1433 extern int system_status;
1434 extern int this_resp;
1435 extern int thread_basenote;
1436 extern int tin_errno;
1437 extern int top_art;
1438 extern int xcol;
1439 extern int xmouse;
1440 extern int xrow;
1441 
1442 extern unsigned short debug;
1443 
1444 extern t_artnum *base;
1445 
1446 extern signed long int read_newsrc_lines;
1447 
1448 extern size_t tabwidth;
1449 
1450 extern pid_t process_id;
1451 
1452 #ifdef USE_HEAPSORT
1453 	extern int tin_sort(void *, size_t, size_t, t_compfunc);
1454 	extern constext *txt_sort_functions[];
1455 	extern struct opttxt txt_sort_function;
1456 #endif /* USE_HEAPSORT */
1457 
1458 extern struct regex_cache strip_re_regex;
1459 extern struct regex_cache strip_was_regex;
1460 extern struct regex_cache uubegin_regex;
1461 extern struct regex_cache uubody_regex;
1462 extern struct regex_cache verbatim_begin_regex;
1463 extern struct regex_cache verbatim_end_regex;
1464 extern struct regex_cache url_regex;
1465 extern struct regex_cache mail_regex;
1466 extern struct regex_cache news_regex;
1467 extern struct regex_cache shar_regex;
1468 extern struct regex_cache slashes_regex;
1469 extern struct regex_cache stars_regex;
1470 extern struct regex_cache underscores_regex;
1471 extern struct regex_cache strokes_regex;
1472 #ifdef HAVE_COLOR
1473 	extern struct regex_cache extquote_regex;
1474 	extern struct regex_cache quote_regex;
1475 	extern struct regex_cache quote_regex2;
1476 	extern struct regex_cache quote_regex3;
1477 #endif /* HAVE_COLOR */
1478 
1479 extern struct t_article *arts;
1480 extern struct t_scope *scopes;
1481 extern struct t_cmdlineopts cmdline;
1482 extern struct t_config tinrc;
1483 extern struct t_filters glob_filter;
1484 extern struct t_group *active;
1485 extern struct t_group *curr_group;
1486 extern struct t_newnews *newnews;
1487 extern struct t_option option_table[];
1488 extern struct t_save *save;
1489 extern struct t_capabilities nntp_caps;
1490 
1491 extern t_bool *OPT_ON_OFF_list[];
1492 extern t_bool can_post;
1493 extern t_bool check_for_new_newsgroups;
1494 extern t_bool cmd_line;
1495 extern t_bool created_rcdir;
1496 extern t_bool dangerous_signal_exit; /* TRUE if SIGHUP, SIGTERM, SIGUSR1 */
1497 #ifdef NNTP_ABLE
1498 	extern t_bool did_reconnect;
1499 	extern t_bool reconnected_in_last_get_server;
1500 #endif /* NNTP_ABLE */
1501 extern t_bool disable_gnksa_domain_check;
1502 extern t_bool disable_sender;
1503 extern t_bool force_no_post;
1504 extern t_bool force_reread_active_file;
1505 #if defined(NNTP_ABLE) && defined(INET6)
1506 	extern t_bool force_ipv4;
1507 	extern t_bool force_ipv6;
1508 #endif /* NNTP_ABLE && INET6 */
1509 extern t_bool have_linescroll;
1510 extern t_bool list_active;
1511 extern t_bool newsrc_active;
1512 extern t_bool no_write;
1513 extern t_bool post_article_and_exit;
1514 extern t_bool post_postponed_and_exit;
1515 extern t_bool range_active;
1516 extern t_bool read_local_newsgroups_file;
1517 extern t_bool read_news_via_nntp;
1518 extern t_bool read_saved_news;
1519 extern t_bool reread_active_for_posted_arts;
1520 extern t_bool show_description;
1521 extern t_bool show_subject;
1522 extern t_bool batch_mode;
1523 extern int verbose;
1524 extern t_bool xref_supported;
1525 extern t_bool expensive_over_parse;
1526 
1527 extern t_function last_search;
1528 
1529 extern t_menu selmenu;
1530 extern t_menu grpmenu;
1531 extern t_menu *currmenu;
1532 
1533 extern t_openartinfo pgart;
1534 
1535 extern struct t_overview_fmt *ofmt;
1536 
1537 enum {
1538 	HIST_OTHER = 0,
1539 	HIST_ART_SEARCH,
1540 	HIST_AUTHOR_SEARCH,
1541 	HIST_GOTO_GROUP,
1542 	HIST_GROUP_SEARCH,
1543 	HIST_MAIL_ADDRESS,
1544 	HIST_MESSAGE_ID,
1545 	HIST_MOVE_GROUP,
1546 	HIST_PIPE_COMMAND,
1547 	HIST_POST_NEWSGROUPS,
1548 	HIST_POST_SUBJECT,
1549 	HIST_REGEX_PATTERN,
1550 	HIST_REPOST_GROUP,
1551 	HIST_SAVE_FILE,
1552 	HIST_SELECT_PATTERN,
1553 	HIST_SHELL_COMMAND,
1554 	HIST_SUBJECT_SEARCH,
1555 	HIST_CONFIG_SEARCH,
1556 	HIST_HELP_SEARCH,
1557 	HIST_URL
1558 };
1559 /* must always be the same as the highest HIST_ value except HIST_NONE */
1560 #define HIST_MAXNUM		HIST_URL
1561 #define HIST_NONE		(HIST_MAXNUM + 1)
1562 #define HIST_SIZE		15	/* # items in each history */
1563 
1564 extern int hist_last[HIST_MAXNUM + 1];
1565 extern int hist_pos[HIST_MAXNUM + 1];
1566 extern char *input_history[HIST_MAXNUM + 1][HIST_SIZE + 1];
1567 
1568 
1569 /* defines for GNKSA checking */
1570 /* success/undefined failure */
1571 #define GNKSA_OK			0
1572 #define GNKSA_INTERNAL_ERROR		1
1573 /* general syntax */
1574 #define GNKSA_LANGLE_MISSING		100
1575 #define GNKSA_LPAREN_MISSING		101
1576 #define GNKSA_RPAREN_MISSING		102
1577 #define GNKSA_ATSIGN_MISSING		103
1578 #define GNKSA_RANGLE_MISSING		104
1579 /* FQDN checks */
1580 #define GNKSA_SINGLE_DOMAIN		200
1581 #define GNKSA_INVALID_DOMAIN		201
1582 #define GNKSA_ILLEGAL_DOMAIN		202
1583 #define GNKSA_UNKNOWN_DOMAIN		203
1584 #define GNKSA_INVALID_FQDN_CHAR		204
1585 #define GNKSA_ZERO_LENGTH_LABEL		205
1586 #define GNKSA_ILLEGAL_LABEL_LENGTH	206
1587 #define GNKSA_ILLEGAL_LABEL_HYPHEN	207
1588 #define GNKSA_ILLEGAL_LABEL_BEGNUM	208
1589 #define GNKSA_BAD_DOMAIN_LITERAL	209
1590 #define GNKSA_LOCAL_DOMAIN_LITERAL	210
1591 #define GNKSA_RBRACKET_MISSING		211
1592 /* localpart checks */
1593 #define GNKSA_LOCALPART_MISSING		300
1594 #define GNKSA_INVALID_LOCALPART		301
1595 #define GNKSA_ZERO_LENGTH_LOCAL_WORD	302
1596 /* realname checks */
1597 #define GNKSA_ILLEGAL_UNQUOTED_CHAR	400
1598 #define GNKSA_ILLEGAL_QUOTED_CHAR	401
1599 #define GNKSA_ILLEGAL_ENCODED_CHAR	402
1600 #define GNKSA_BAD_ENCODE_SYNTAX		403
1601 #define GNKSA_ILLEGAL_PAREN_CHAR		404
1602 #define GNKSA_INVALID_REALNAME		405
1603 #define GNKSA_MISSING_REALNAME		406
1604 
1605 /* address types */
1606 #define GNKSA_ADDRTYPE_ROUTE	0
1607 #define GNKSA_ADDRTYPE_OLDSTYLE	1
1608 
1609 #ifndef DONT_HAVE_PIPING
1610 	extern constext txt_pipe[];
1611 	extern constext txt_pipe_to_command[];
1612 	extern constext txt_piping[];
1613 #else
1614 	extern constext txt_piping_not_enabled[];
1615 #endif /* !DONT_HAVE_PIPING */
1616 
1617 #ifdef FORGERY
1618 	extern constext txt_warn_cancel_forgery[];
1619 #else
1620 	extern constext txt_art_cannot_cancel[];
1621 	extern constext txt_error_sender_in_header_not_allowed[];
1622 #	ifdef NNTP_INEWS
1623 	extern constext txt_invalid_sender[];
1624 #	endif /* NNTP_INEWS */
1625 #endif /* FORGERY */
1626 
1627 extern t_bool word_highlight;
1628 #ifdef HAVE_COLOR
1629 	extern constext txt_tinrc_colors[];
1630 	extern int default_bcol;
1631 	extern int default_fcol;
1632 	extern t_bool use_color;
1633 #	ifdef USE_CURSES
1634 		extern constext txt_no_colorterm[];
1635 #	endif /* USE_CURSES */
1636 #endif /* HAVE_COLOR */
1637 
1638 #ifdef HAVE_FASCIST_NEWSADMIN
1639 	extern constext txt_error_followup_to_several_groups[];
1640 	extern constext txt_error_grp_renamed[];
1641 	extern constext txt_error_missing_followup_to[];
1642 	extern constext txt_error_not_valid_newsgroup[];
1643 #endif /* HAVE_FASCIST_NEWSADMIN */
1644 
1645 
1646 #ifndef ALLOW_FWS_IN_NEWSGROUPLIST
1647 	extern constext txt_error_header_line_comma[];
1648 	extern constext txt_error_header_line_groups_contd[];
1649 #endif /* !ALLOW_FWS_IN_NEWSGROUPLIST */
1650 
1651 #ifdef HAVE_PGP_GPG
1652 	extern constext txt_pgp_add[];
1653 	extern constext txt_pgp_mail[];
1654 	extern constext txt_pgp_news[];
1655 	extern constext txt_pgp_not_avail[];
1656 	extern constext txt_pgp_nothing[];
1657 #endif /* HAVE_PGP_GPG */
1658 
1659 #ifdef HAVE_SYS_UTSNAME_H
1660 	extern struct utsname system_info;
1661 #endif /* HAVE_SYS_UTSNAME_H */
1662 
1663 extern constext txt_art_deleted[];
1664 extern constext txt_art_undeleted[];
1665 extern constext txt_intro_page[];
1666 extern constext txt_processing_mail_arts[];
1667 extern constext txt_processing_saved_arts[];
1668 
1669 #ifdef HAVE_MH_MAIL_HANDLING
1670 	extern constext txt_reading_mail_active_file[];
1671 	extern constext txt_reading_mailgroups_file[];
1672 #endif /* HAVE_MH_MAIL_HANDLING */
1673 
1674 #ifndef NO_ETIQUETTE
1675 	extern constext txt_warn_posting_etiquette[];
1676 #endif /* NO_ETIQUETTE */
1677 
1678 #if !defined(USE_CURSES)
1679 	extern struct t_screen *screen;
1680 #endif /* !USE_CURSES */
1681 
1682 #ifdef NNTP_ABLE
1683 	extern constext txt_nntp_ok_goodbye[];
1684 	extern unsigned short nntp_tcp_port;
1685 	extern t_bool force_auth_on_conn_open;
1686 #endif /* NNTP_ABLE */
1687 
1688 extern struct opttxt txt_abbreviate_groupname;
1689 extern struct opttxt txt_add_posted_to_filter;
1690 extern struct opttxt txt_advertising;
1691 extern struct opttxt txt_alternative_handling;
1692 extern struct opttxt txt_art_marked_deleted;
1693 extern struct opttxt txt_art_marked_inrange;
1694 extern struct opttxt txt_art_marked_killed;
1695 extern struct opttxt txt_art_marked_read;
1696 extern struct opttxt txt_art_marked_read_selected;
1697 extern struct opttxt txt_art_marked_recent;
1698 extern struct opttxt txt_art_marked_return;
1699 extern struct opttxt txt_art_marked_selected;
1700 extern struct opttxt txt_art_marked_unread;
1701 extern struct opttxt txt_ask_for_metamail;
1702 extern struct opttxt txt_auto_cc_bcc;
1703 extern struct opttxt txt_auto_list_thread;
1704 extern struct opttxt txt_auto_reconnect;
1705 extern struct opttxt txt_auto_save;
1706 extern struct opttxt txt_auto_select;
1707 extern struct opttxt txt_delete_tmp_files;
1708 extern struct opttxt txt_batch_save;
1709 extern struct opttxt txt_beginner_level;
1710 extern struct opttxt txt_cache_overview_files;
1711 #ifdef USE_CANLOCK
1712 	extern struct opttxt txt_cancel_lock_algo;
1713 #endif /* USE_CANLOCK */
1714 extern struct opttxt txt_catchup_read_groups;
1715 #ifdef HAVE_COLOR
1716 	extern struct opttxt txt_color_options;
1717 #else
1718 	extern struct opttxt txt_highlight_options;
1719 #endif /* HAVE_COLOR */
1720 extern struct opttxt txt_confirm_choice;
1721 extern struct opttxt txt_date_format;
1722 extern struct opttxt txt_display_options;
1723 extern struct opttxt txt_draw_arrow;
1724 extern struct opttxt txt_editor_format;
1725 extern struct opttxt txt_expert_options;
1726 extern struct opttxt txt_fcc;
1727 extern struct opttxt txt_filter_days;
1728 extern struct opttxt txt_filtering_options;
1729 extern struct opttxt txt_followup_to;
1730 extern struct opttxt txt_force_screen_redraw;
1731 extern struct opttxt txt_from;
1732 extern struct opttxt txt_getart_limit;
1733 extern struct opttxt txt_getart_limit_options;
1734 extern struct opttxt txt_goto_next_unread;
1735 extern struct opttxt txt_group_catchup_on_exit;
1736 extern struct opttxt txt_group_format;
1737 extern struct opttxt txt_hide_uue;
1738 extern struct opttxt txt_inews_prog;
1739 extern struct opttxt txt_interactive_mailer;
1740 extern struct opttxt txt_inverse_okay;
1741 #ifdef HAVE_ISPELL
1742 	extern struct opttxt txt_ispell;
1743 #endif /* HAVE_ISPELL */
1744 extern struct opttxt txt_keep_dead_articles;
1745 extern struct opttxt txt_kill_level;
1746 extern struct opttxt txt_mail_8bit_header;
1747 extern struct opttxt txt_mail_address;
1748 extern struct opttxt txt_mail_mime_encoding;
1749 extern struct opttxt txt_mail_quote_format;
1750 extern struct opttxt txt_mailbox_format;
1751 extern struct opttxt txt_maildir;
1752 extern struct opttxt txt_mailing_list;
1753 extern struct opttxt txt_mailer_format;
1754 extern struct opttxt txt_mark_ignore_tags;
1755 extern struct opttxt txt_mark_saved_read;
1756 extern struct opttxt txt_mime_forward;
1757 extern struct opttxt txt_mime_types_to_save;
1758 extern struct opttxt txt_mono_markstar;
1759 extern struct opttxt txt_mono_markdash;
1760 extern struct opttxt txt_mono_markslash;
1761 extern struct opttxt txt_mono_markstroke;
1762 #ifndef CHARSET_CONVERSION
1763 	extern struct opttxt txt_mm_charset;
1764 #else
1765 #	ifdef NO_LOCALE
1766 		extern struct opttxt txt_mm_local_charset;
1767 #	endif /* NO_LOCALE */
1768 #endif /* CHARSET_CONVERSION */
1769 extern struct opttxt txt_metamail_prog;
1770 extern struct opttxt txt_news_headers_to_display;
1771 extern struct opttxt txt_news_headers_to_not_display;
1772 extern struct opttxt txt_news_quote_format;
1773 #if defined(HAVE_ALARM) && defined(SIGALRM)
1774 	extern struct opttxt txt_nntp_read_timeout_secs;
1775 #endif /* HAVE_ALARM && SIGALRM */
1776 extern struct opttxt txt_organization;
1777 extern struct opttxt txt_pos_first_unread;
1778 extern struct opttxt txt_post_8bit_header;
1779 extern struct opttxt txt_post_mime_encoding;
1780 extern struct opttxt txt_post_process_type;
1781 extern struct opttxt txt_post_process_view;
1782 extern struct opttxt txt_posted_articles_file;
1783 extern struct opttxt txt_posting_options;
1784 #ifndef DISABLE_PRINTING
1785 	extern struct opttxt txt_print_header;
1786 	extern struct opttxt txt_printer;
1787 #endif /* !DISABLE_PRINTING */
1788 extern struct opttxt txt_process_only_unread;
1789 extern struct opttxt txt_prompt_followupto;
1790 extern struct opttxt txt_quick_select_scope;
1791 extern struct opttxt txt_quick_select_header;
1792 extern struct opttxt txt_quick_select_case;
1793 extern struct opttxt txt_quick_select_expire;
1794 extern struct opttxt txt_quick_kill_scope;
1795 extern struct opttxt txt_quick_kill_header;
1796 extern struct opttxt txt_quick_kill_case;
1797 extern struct opttxt txt_quick_kill_expire;
1798 extern struct opttxt txt_quote_chars;
1799 extern struct opttxt txt_quote_style;
1800 extern struct opttxt txt_recent_time;
1801 extern struct opttxt txt_reread_active_file_secs;
1802 extern struct opttxt txt_savedir;
1803 extern struct opttxt txt_savefile;
1804 extern struct opttxt txt_saving_options;
1805 extern struct opttxt txt_score_limit_kill;
1806 extern struct opttxt txt_score_limit_select;
1807 extern struct opttxt txt_score_kill;
1808 extern struct opttxt txt_score_select;
1809 extern struct opttxt txt_scroll_lines;
1810 extern struct opttxt txt_select_format;
1811 extern struct opttxt txt_show_author;
1812 extern struct opttxt txt_show_description;
1813 extern struct opttxt txt_show_only_unread_arts;
1814 extern struct opttxt txt_show_only_unread_groups;
1815 extern struct opttxt txt_show_signatures;
1816 extern struct opttxt txt_sigdashes;
1817 extern struct opttxt txt_sigfile;
1818 extern struct opttxt txt_signature_repost;
1819 extern struct opttxt txt_slashes_regex;
1820 extern struct opttxt txt_sort_article_type;
1821 extern struct opttxt txt_sort_threads_type;
1822 extern struct opttxt txt_spamtrap_warning_addresses;
1823 extern struct opttxt txt_stars_regex;
1824 extern struct opttxt txt_start_editor_offset;
1825 #ifndef USE_CURSES
1826 	extern struct opttxt txt_strip_blanks;
1827 #endif /* !USE_CURSES */
1828 extern struct opttxt txt_strip_bogus;
1829 extern struct opttxt txt_strip_newsrc;
1830 extern struct opttxt txt_strip_re_regex;
1831 extern struct opttxt txt_strip_was_regex;
1832 extern struct opttxt txt_strokes_regex;
1833 extern struct opttxt txt_tex2iso_conv;
1834 extern struct opttxt txt_thread_articles;
1835 extern struct opttxt txt_thread_perc;
1836 extern struct opttxt txt_thread_catchup_on_exit;
1837 extern struct opttxt txt_thread_format;
1838 extern struct opttxt txt_thread_score;
1839 extern struct opttxt txt_trim_article_body;
1840 extern struct opttxt txt_underscores_regex;
1841 extern struct opttxt txt_unlink_article;
1842 extern struct opttxt txt_url_handler;
1843 extern struct opttxt txt_url_highlight;
1844 extern struct opttxt txt_use_mouse;
1845 #if defined(MULTIBYTE_ABLE) && !defined(NO_LOCALE)
1846 	extern struct opttxt txt_utf8_graphics;
1847 #endif /* MULTIBYTE_ABLE && !NO_LOCALE */
1848 extern struct opttxt txt_verbatim_begin_regex;
1849 extern struct opttxt txt_verbatim_end_regex;
1850 extern struct opttxt txt_verbatim_handling;
1851 extern struct opttxt txt_wildcard;
1852 extern struct opttxt txt_word_highlight;
1853 extern struct opttxt txt_word_h_display_marks;
1854 extern struct opttxt txt_wrap_column;
1855 extern struct opttxt txt_wrap_on_next_unread;
1856 extern struct opttxt txt_x_body;
1857 extern struct opttxt txt_x_comment_to;
1858 extern struct opttxt txt_x_headers;
1859 extern struct opttxt txt_xpost_quote_format;
1860 #ifdef CHARSET_CONVERSION
1861 	extern struct opttxt txt_mm_network_charset;
1862 	extern struct opttxt txt_undeclared_charset;
1863 #endif /* CHARSET_CONVERSION */
1864 #ifdef HAVE_COLOR
1865 	extern struct opttxt txt_quote_regex;
1866 	extern struct opttxt txt_quote_regex2;
1867 	extern struct opttxt txt_quote_regex3;
1868 	extern struct opttxt txt_extquote_handling;
1869 	extern struct opttxt txt_extquote_regex;
1870 	extern struct opttxt txt_use_color;
1871 	extern struct opttxt txt_col_normal;
1872 	extern struct opttxt txt_col_back;
1873 	extern struct opttxt txt_col_invers_bg;
1874 	extern struct opttxt txt_col_invers_fg;
1875 	extern struct opttxt txt_col_text;
1876 	extern struct opttxt txt_col_minihelp;
1877 	extern struct opttxt txt_col_help;
1878 	extern struct opttxt txt_col_message;
1879 	extern struct opttxt txt_col_quote;
1880 	extern struct opttxt txt_col_quote2;
1881 	extern struct opttxt txt_col_quote3;
1882 	extern struct opttxt txt_col_extquote;
1883 	extern struct opttxt txt_col_head;
1884 	extern struct opttxt txt_col_newsheaders;
1885 	extern struct opttxt txt_col_subject;
1886 	extern struct opttxt txt_col_response;
1887 	extern struct opttxt txt_col_from;
1888 	extern struct opttxt txt_col_title;
1889 	extern struct opttxt txt_col_signature;
1890 	extern struct opttxt txt_col_urls;
1891 	extern struct opttxt txt_col_verbatim;
1892 	extern struct opttxt txt_col_markstar;
1893 	extern struct opttxt txt_col_markdash;
1894 	extern struct opttxt txt_col_markslash;
1895 	extern struct opttxt txt_col_markstroke;
1896 #endif /* HAVE_COLOR */
1897 #ifdef HAVE_ICONV_OPEN_TRANSLIT
1898 	extern struct opttxt txt_translit;
1899 #endif /* HAVE_ICONV_OPEN_TRANSLIT */
1900 #ifdef HAVE_KEYPAD
1901 	extern struct opttxt txt_use_keypad;
1902 #endif /* HAVE_KEYPAD */
1903 #ifdef XFACE_ABLE
1904 	extern struct opttxt txt_use_slrnface;
1905 #endif /* XFACE_ABLE */
1906 #ifdef HAVE_UNICODE_NORMALIZATION
1907 	extern struct opttxt txt_normalization_form;
1908 #endif /* HAVE_UNICODE_NORMALIZATION */
1909 #if defined(HAVE_LIBICUUC) && defined(MULTIBYTE_ABLE) && defined(HAVE_UNICODE_UBIDI_H) && !defined(NO_LOCALE)
1910 	extern struct opttxt txt_render_bidi;
1911 #endif /* HAVE_LIBICUUC && MULTIBYTE_ABLE && HAVE_UNICODE_UBIDI_H && !NO_LOCALE */
1912 #endif /* !EXTERN_H */
1913