File: proto.h

package info (click to toggle)
tin 981002-2
  • links: PTS
  • area: non-free
  • in suites: slink
  • size: 3,088 kB
  • ctags: 4,969
  • sloc: ansic: 46,800; sh: 1,655; makefile: 1,144; yacc: 699; perl: 103
file content (596 lines) | stat: -rw-r--r-- 24,502 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
#ifndef PROTO_H
#	define PROTO_H 1

/* active.c */
extern int get_active_num (void);
extern char group_flag (int ch);
extern t_bool match_group_list (char *group, char *group_list);
extern t_bool parse_active_line (char *line, long *max, long *min, char *moderated);
extern t_bool process_bogus (char *name);
extern t_bool reread_active_file (void);
extern t_bool resync_active_file (void);
extern void create_save_active_file (void);
extern void load_newnews_info (char *info);
extern void read_news_active_file (void);
#ifdef INDEX_DAEMON
	extern void read_group_times_file (void);
	extern void vMakeActiveMyGroup (void);
	extern void write_group_times_file (void);
#endif /* INDEX_DAEMON */

/* art.c */
extern char *pcFindNovFile (struct t_group *psGrp, int iMode);
extern t_bool index_group (struct t_group *group);
extern void do_update (void);
extern void find_base (struct t_group *group);
extern void make_threads (struct t_group *group, int rethread);
extern void set_article (struct t_article *art);
extern void sort_arts (unsigned int sort_art_type);
extern void vWriteNovFile (struct t_group *psGrp);

/* attrib.c */
#ifndef INDEX_DAEMON
	extern void read_attributes_file (char *file, t_bool global_file);
	extern void write_attributes_file (char *file);
#endif /* !INDEX_DAEMON */

/* auth.c */
#if !defined (INDEX_DAEMON) && defined (NNTP_ABLE)
	extern t_bool authenticate (char *server, char *user, t_bool startup);
#endif /* !INDEX_DAEMON && NNTP_ABLE */

/* charset.c */
extern t_bool iIsArtTexEncoded (long art, char *group_path);
extern void Convert2Printable (char* buf);
extern void ConvertBody2Printable (char* buf);
extern void ConvertIso2Asc (char *iso, char *asc, int t);
extern void ConvertTeX2Iso (char *from, char *to);

/* color.c */
extern void bcol (int color);
extern void fcol (int color);
extern void print_color (char *str, t_bool signature);

/* config.c */
extern char **ulBuildArgv(char *cmd, int *new_argc);
extern char *quote_space_to_dash (char *str);
extern const char *print_boolean (t_bool value);
extern int change_config_file (struct t_group *group);
extern int option_row(int option);
extern t_bool match_boolean (char *line, const char *pat, t_bool *dst);
extern t_bool match_integer (char *line, const char *pat, int *dst, int maxlen);
extern t_bool match_long (char *line, const char *pat, long *dst);
extern t_bool match_string (char *line, const char *pat, char *dst, size_t dstlen);
extern t_bool read_config_file (char *file, t_bool global_file);
extern void quote_dash_to_space (char *str);
extern void refresh_config_page (int act_option);
extern void show_menu_help (const char *help_message);
extern void write_config_file (char *file);

/* curses.c */
extern OUTC_RETTYPE outchar (OUTC_ARGS);
extern int InitScreen (void);
extern int RawState (void);
extern int ReadCh (void);
extern int SetupScreen (void);
extern void ClearScreen (void);
extern void CleartoEOLN (void);
extern void CleartoEOS (void);
extern void EndInverse (void);
extern void EndWin (void);
extern void InitWin (void);
extern void MoveCursor (int row, int col);
extern void Raw (int state);
extern void StartInverse (void);
extern void ToggleInverse (void);
extern void cursoroff (void);
extern void cursoron (void);
extern void set_keypad_off (void);
extern void set_keypad_on (void);
extern void set_xclick_off (void);
extern void set_xclick_on (void);
extern void setup_screen (void);

/* debug.c */
#ifdef DEBUG
	extern void debug_delete_files (void);
	extern void debug_nntp (const char *func, const char *line);
	extern void debug_print_active (void);
	extern void debug_print_arts (void);
	extern void debug_print_filters (void);
	extern void debug_print_header (struct t_article *s);
	extern void debug_save_comp (void);
	extern void vDbgPrintMalloc (int iIsMalloc, const char *pcFile, int iLine, size_t iSize);
#endif /* DEBUG */
#ifdef DEBUG_NEWSRC
	extern void debug_print_newsrc (struct t_newsrc *NewSrc, FILE *fp);
#endif /* DEBUG_NEWSRC */
#if defined(DEBUG) || defined (DEBUG_NEWSRC)
	extern void debug_print_bitmap (struct t_group *group, struct t_article *art);
	extern void debug_print_comment (const char *comment);
#endif /* DEBUG || DEBUG_NEWSRC */

/* envarg.c */
extern void envargs (int *Pargc, char ***Pargv, const char *envstr);

/* feed.c */
extern char get_post_proc_type (int proc_type);
#ifndef INDEX_DAEMON
	extern void feed_articles (int function, int level, struct t_group *group, int respnum);
#endif /* !INDEX_DAEMON */

/* filter.c */
extern struct t_filter *psExpandFilterArray (struct t_filter *ptr, int *num);
extern t_bool filter_articles (struct t_group *group);
extern t_bool filter_menu (int type, struct t_group *group, struct t_article *art);
extern t_bool quick_filter_kill (struct t_group *group, struct t_article *art);
extern t_bool quick_filter_select (struct t_group *group, struct t_article *art);
extern t_bool quick_filter_select_posted_art (struct t_group *group, char *subj);
extern void free_all_filter_arrays (void);
#ifndef INDEX_DAEMON
	extern t_bool read_filter_file (char *file, t_bool global_file);
#endif /* !INDEX_DAEMON */

/* getline.c */
extern char *tin_getline (const char *prompt, int number_only, char *str, int max_chars, int which_hist);

/* group.c */
extern int find_new_pos (int old_top, long old_artnum, int cur_pos);
extern void clear_note_area (void);
extern void decr_tagged (int tag);
extern void mark_screen (int level, int screen_row, int screen_col, const char *value);
extern void set_subj_from_size (int num_cols);
extern void show_group_page (void);
extern void toggle_subject_from (void);
#ifndef INDEX_DAEMON
	extern void group_page (struct t_group *group);
	extern void move_to_thread (int n);
	extern void toggle_read_unread(t_bool force);
#endif /* !INDEX_DAEMON */

/* hashstr.c */
extern char *hash_str (const char *s);
extern void hash_init (void);
extern void hash_reclaim (void);

/* help.c */
extern void show_info_page (int type, const char *help[], const char *title);
extern void show_mini_help (int level);
extern void toggle_mini_help (int level);
#ifdef USE_CURSES
	extern void display_info_page (t_bool first);
#else
	extern void display_info_page (void);
#endif /* USE_CURSES */

/* header.c */
extern const char *get_domain_name (void);
extern const char *get_fqdn (const char *host);
extern const char *get_host_name (void);
#ifndef FORGERY
	extern char *build_sender (void);
#endif /* !FORGERY */

/* inews.c */
extern int submit_news_file (char *name);
extern void get_from_name (char *from_name, struct t_group *thisgrp);
extern void get_user_info (char *user_name, char *full_name);

/* init.c */
extern t_bool (*wildcard_func)(const char *str, char *patt, t_bool icase);		/* Wildcard matching function */
extern t_bool create_mail_save_dirs (void);
extern void init_selfinfo (void);
#ifdef HAVE_COLOR
	extern void postinit_colors (void);
#endif /* HAVE_COLOR */
#ifndef INDEX_DAEMON
	void set_up_private_index_cache (void);
#endif /* !INDEX_DAEMON */
#ifdef USE_INN_NNTPLIB
	extern char *GetConfigValue (const char *name);
#endif /* USE_INN_NNTPLIB */

/* joinpath.c */
extern void joinpath (char *result, const char *dir, const char *file);

/* list.c */
extern int find_group_index (const char *group);
extern struct t_group *psGrpAdd (char *group);
extern struct t_group *psGrpFind (char *pcGrpName);
extern unsigned long hash_groupname (const char *group);
extern void init_group_hash (void);
extern char *random_organization(char *in_org);
#if 0
	extern struct t_group *psGrpFirst (void);
	extern struct t_group *psGrpLast (void);
	extern struct t_group *psGrpNext (void);
	extern struct t_group *psGrpPrev (void);
#endif /* 0 */

/* mail.c */
extern void read_newsgroups_file (void);
extern void vFindArtMaxMin (char *pcGrpPath, long *plArtMax, long *plArtMin);
extern void vMakeGrpName (char *pcBaseDir, char *pcGrpName, char *pcGrpPath);
extern void vMakeGrpPath (char *pcBaseDir, char *pcGrpName, char *pcGrpPath);
extern void vPrintActiveHead (char *pcActiveFile);
extern void vPrintGrpLine (FILE *hFp, char *pcGrpName, long lArtMax, long lArtMin, char *pcBaseDir);
#ifndef INDEX_DAEMON
	extern int iArtEdit (struct t_group *psGrp, struct t_article *psArt);
	extern void vGrpDelMailArts (struct t_group *psGrp);
	extern void vGrpDelMailArt (struct t_article *psArt);
#endif /* !INDEX_DAEMON */
#if !defined(INDEX_DAEMON) && defined(HAVE_MH_MAIL_HANDLING)
	extern void read_mail_active_file (void);
	extern void read_mailgroups_file (void);
	extern void write_mail_active_file (void);
#endif /* !INDEX_DAEMON && HAVE_MH_MAIL_HANDLING */

/* main.c */
extern int main (int argc, char *argv[]);
extern int read_cmd_line_groups (void);

/* memory.c */
extern void expand_active (void);
extern void expand_art (void);
extern void expand_newnews (void);
extern void expand_save (void);
extern void init_alloc (void);
extern void init_screen_array (int allocate);
extern void free_all_arrays (void);
extern void free_art_array (void);
extern void free_attributes_array (void);
extern void free_save_array (void);
extern void *my_malloc1 (const char *file, int line, size_t size);
extern void *my_realloc1 (const char *file, int line, char *p, size_t size);

/* misc.c */
extern char *eat_re (char *s, t_bool eat_was);
extern char *quote_wild(char *str);
extern char *quote_wild_whitespace(char *str);
extern const char *get_val (const char *env, const char *def);
extern int get_arrow_key (int prech);
extern int get_initials (int respnum, char *s, int maxsize);
extern int invoke_cmd (char *nam);
extern int invoke_editor (char *filename, int lineno);
extern int my_chdir (char *path);
extern int my_isprint (int c);
extern int my_mkdir (char *path, mode_t mode);
extern int peek_char (FILE *fp);
extern int strfmailer (char *the_mailer, char *subject, char *to, char *filename, char *s, size_t maxsize, char *format);
extern int strfpath (char *format, char *str, size_t maxsize, char *the_homedir, char *maildir, char *savedir, char *group);
extern int strfquote (char *group, int respnum, char *s, size_t maxsize, char *format);
extern long file_size (char *file);
extern t_bool copy_file (char *pcSrcFile, char *pcDstFile);
extern t_bool mail_check (void);
extern t_bool untag_all_articles (void);
extern void append_file (char *old_filename, char *new_filename);
extern void asfail (const char *file, int line, const char *cond);
extern void base_name (char *dirname, char *program);
extern void cleanup_tmp_files (void);
extern void copy_body (FILE *fp_ip, FILE *fp_op, char *prefix, char *initl, t_bool with_sig);
extern void copy_fp (FILE *fp_ip, FILE *fp_op);
extern void create_index_lock_file (char *the_lock_file);
extern void draw_percent_mark (long cur_num, long max_num);
extern void get_author (int thread, struct t_article *art, char *str, size_t len);
extern void get_cwd (char *buf);
extern void make_group_path (char *name, char *path);
extern void parse_from (char *from_line, char *eaddr, char *fname);
extern void read_input_history_file (void);
extern void rename_file (char *old_filename, char *new_filename);
extern void set_real_uid_gid (void);
extern void set_tin_uid_gid (void);
extern void show_inverse_video_status (void);
extern void strip_address (char *the_address, char *stripped_address);
extern void strip_double_ngs (char *ngs_list);
extern void tin_done (int ret);
extern void toggle_inverse_video (void);
extern void vPrintBugAddress (void);
#ifdef LOCAL_CHARSET
	extern void buffer_to_local (char *b);
	extern void buffer_to_network (char *b);
#endif /* LOCAL_CHARSET */
#ifdef HAVE_COLOR
	extern t_bool toggle_color (void);
	extern void show_color_status (void);
#endif /* HAVE_COLOR */
#ifdef HAVE_ISPELL
	extern int invoke_ispell (char *nam);
#endif /* HAVE_ISPELL */
#ifndef M_UNIX
	extern void make_post_process_cmd (char *cmd, char *dir, char *file);
#endif /* !M_UNIX */
#ifndef NO_SHELL_ESCAPE
	extern void shell_escape (void);
#endif /* !NO_SHELL_ESCAPE */

/* newsrc.c */
extern int pos_group_in_newsrc (struct t_group *group, int pos);
extern void art_mark_read (struct t_group *group, struct t_article *art);
extern void art_mark_unread (struct t_group *group, struct t_article *art);
extern void art_mark_will_return (struct t_group *group, struct t_article *art);
extern void backup_newsrc (void);
extern void catchup_newsrc_file (void);
extern void delete_group (char *group);
extern void expand_bitmap (struct t_group *group, long min);
extern void grp_mark_read (struct t_group *group, struct t_article *psArt);
extern void grp_mark_unread (struct t_group *group);
extern void parse_unread_arts (struct t_group *group);
extern void read_newsrc (char *newsrc_file, t_bool allgroups);
extern void reset_newsrc (void);
extern void subscribe (struct t_group *group, int sub_state);
extern void thd_mark_read (struct t_group *group, long thread);
extern void thd_mark_unread (struct t_group *group, long thread);
extern void vSetDefaultBitmap (struct t_group *group);
extern t_bool vWriteNewsrc (void);
#ifndef INDEX_DAEMON
	extern void art_mark_deleted (struct t_article *art);
	extern void art_mark_undeleted (struct t_article *art);
#endif /* !INDEX_DAEMON */
#ifdef DEBUG_NEWSRC
	extern void vNewsrcTestHarness (void);
#endif /* DEBUG_NEWSRC */

/* nntplib.c */
extern FILE *get_nntp_fp(FILE *fp);
extern FILE *get_nntp_wr_fp(FILE *fp);
extern char *getserverbyfile (const char *file);
extern char *get_server (char *string, int size);
extern int server_init (char *machine, const char *service, int port, char *text);
extern void close_server (void);
extern void put_server (const char *string);
extern void u_put_server (const char *string);
#ifdef DEBUG
	extern const char *nntp_respcode (int respcode);
#endif /* DEBUG */

/* nrctbl.c */
extern int get_newsrcname (char *newsrc_name, const char *nntpserver_name);
extern void get_nntpserver (char *nntpserver_name, char *nick_name);

/* open.c */
extern FILE *nntp_command(const char *, int, char *);
extern FILE *open_art_fp (char *group_path, long art, int lines, t_bool rfc1521decode);
extern FILE *open_newgroups_fp (int the_index);
extern FILE *open_news_active_fp (void);
extern FILE *open_newsgroups_fp (void);
extern FILE *open_overview_fmt_fp (void);
extern FILE *open_subscription_fp (void);
extern FILE *open_xover_fp (struct t_group *psGrp, const char *pcMode, long lMin, long lMax);
extern FILE *open_art_header (long art);
extern int get_respcode (char *);
extern int get_only_respcode (char *);
extern int nntp_open (void);
extern int stat_article (long art, char *group_path);
extern int vGrpGetArtInfo (char *pcSpoolDir, char *pcGrpName, int iGrpType, long *plArtCount, long *plArtMax, long *plArtMin);
extern long setup_hard_base (struct t_group *group, char *group_path);
extern void nntp_close (void);
extern void vGet1GrpArtInfo(struct t_group *grp);
#ifdef HAVE_MH_MAIL_HANDLING
	extern FILE *open_mail_active_fp (const char *mode);
	extern FILE *open_mailgroups_fp (void);
#endif /* HAVE_MH_MAIL_HANDLING */

/* page.c */
extern int art_open (struct t_article *art, char *group_path, t_bool rfc1521decode);
extern t_bool match_header (char *buf, const char *pat, char *body, char *nodec_body, size_t len);
extern void art_close (void);
extern void redraw_page (char *group, int respnum);
#ifndef INDEX_DAEMON
	extern int show_page (struct t_group *group, char *group_path, int respnum, int *threadnum);
	extern void show_note_page (char *group, int respnum);
#endif /* !INDEX_DAEMON */

/* parsdate.y */
extern time_t parsedate (char *p, TIMEINFO *now);

/* pgp.c */
#ifdef HAVE_PGP
	extern int pgp_check_article (void);
	extern void invoke_pgp_mail (char *nam, char *mail_to);
	extern void invoke_pgp_news (char *the_article);
#endif /* HAVE_PGP */

/* post.c */
extern int count_postponed_articles (void);
extern int mail_bug_report (void);
extern int mail_to_author (char *group, int respnum, int copy_text, t_bool with_headers);
extern int mail_to_someone (int respnum, char *address, t_bool mail_to_poster, t_bool confirm_to_mail, int *mailed_ok);
extern int post_article (char *group, int *posted_flag);
extern int post_response (char *group, int respnum, int copy_text, t_bool with_headers);
extern int repost_article (const char *group, int respnum, int supersede);
extern t_bool pickup_postponed_articles (t_bool ask, t_bool all);
extern t_bool reread_active_after_posting (void);
extern t_bool user_posted_messages (void);
extern void checknadd_headers (char *infile);
extern void quick_post_article (t_bool postponed_only);
#ifndef INDEX_DAEMON
	extern t_bool cancel_article (struct t_group *group, struct t_article *art, int respnum);
#endif /* !INDEX_DAEMON */

/* prompt.c */
extern char *prompt_string_default (char *prompt, char *def, const char *failtext, int history);
extern char *sized_message (const char *format, const char *subject);
extern int prompt_default_string (const char *prompt, char *buf, int buf_len, char *default_prompt, int which_hist);
extern int prompt_list (int row, int col, int var, constext *help_text, constext *prompt_text, constext *list[], int size);
extern int prompt_menu_string (int line, int col, char *var);
extern int prompt_num (int ch, const char *prompt);
extern int prompt_slk_response (int ch_default, const char *responses, const char *fmt, ...);
extern int prompt_string (const char *prompt, char *buf, int which_hist);
extern int prompt_yn (int line, const char *prompt, t_bool default_answer);
extern t_bool prompt_option_char (int option);
extern t_bool prompt_option_num (int option);
extern t_bool prompt_option_string (int option);
extern void continue_prompt (void);
extern void prompt_on_off (int row, int col, t_bool *var, constext *help_text, constext *prompt_text);

/* read.c */
extern char *tin_fgets (FILE *fp, t_bool header);
#ifdef NNTP_ABLE
	extern void drain_buffer (FILE *fp);
#endif /* NNTP_ABLE */

/* refs.c */
extern char *get_references (struct t_msgid *refptr);
extern struct t_msgid *find_msgid (char *msgid);
extern void build_references (struct t_group *group);
extern void clear_art_ptrs (void);
extern void collate_subjects (void);
extern void free_msgids (void);
extern void thread_by_reference (void);

/* regex.c */
extern t_bool match_regex (const char *string, char *pattern, t_bool icase);

/* rfc1521.c */
extern FILE *rfc1521_decode (FILE *file);
extern void rfc1468_encode (char *line, FILE *f, int e);
extern void rfc1521_encode (char *line, FILE *f, int e);
extern void rfc1557_encode (char *line, FILE *f, int e);
extern void rfc1922_encode (char *line, FILE *f, int e);

/* rfc1522.c */
extern char *rfc1522_decode (const char *s);
extern char *rfc1522_encode (char *s,t_bool ismail);
extern int mmdecode (const char *what, int encoding, int delimiter, char *where, const char *charset);
extern void get_mm_charset (void);
extern void rfc15211522_encode (char *filename, constext *mime_encoding, t_bool allow_8bit_header,t_bool ismail);

/* save.c */
extern int check_start_save_any_news (int check_start_save);
extern int create_path (char *path);
extern int post_process_files (int proc_type_ch, t_bool auto_delete);
extern int save_art_to_file (int respnum, int indexnum, int the_mailbox, const char *filename);
extern int save_comp (t_comptype *p1, t_comptype *p2);
extern void print_art_seperator_line (FILE *fp, int the_mailbox);
extern void sort_save_list (void);
#ifndef INDEX_DAEMON
	extern int save_regex_arts (int is_mailbox, char *group_path);
	extern t_bool save_thread_to_file (int is_mailbox, char *group_path);
	extern void add_to_save_list (int the_index, struct t_article *the_article, int is_mailbox, int archive_save, char *path);
#endif /* !INDEX_DAEMON */

/* screen.c */
extern void center_line (int line, int inverse, const char *str);
extern void clear_message (void);
extern void draw_arrow (int line);
extern void erase_arrow (int line);
extern void error_message (const char *fmt, ...);
extern void info_message (const char *fmt, ...);
extern void perror_message (const char *fmt, ...);
extern void ring_bell (void);
extern void show_progress (const char *txt, int count, int total);
extern void show_title (char *title);
extern void spin_cursor (void);
extern void stow_cursor (void);
extern void wait_message (int delay, const char *fmt, ...);

/* search.c */
extern int search_article (int forward);
extern int search_author (int the_index, int current_art, int forward);
extern int search_body (struct t_group *group, int current_art);
extern int search_config (int forward, int current, int last);
extern int search_help (int forward, int current, int last);
extern int search_subject_group (int forward);
extern void search_group (int forward);
extern void search_subject_thread (int forward, int baseart, int offset);

/* select.c */
extern int add_my_group (char *group, t_bool add);
extern int choose_new_group (void);
extern int skip_newgroups (void);
extern t_bool bSetRange (int iLevel, int iNumMin, int iNumMax, int iNumCur);
extern void draw_group_arrow (void);
extern void selection_index (int start_groupnum, int num_cmd_line_groups);
extern void set_groupname_len (t_bool all_groups);
extern void show_selection_page (void);
extern void strip_line (char *line);
extern void toggle_my_groups (t_bool only_unread_groups, const char *group);
extern void move_to_group (int n);

/* sigfile.c */
extern void msg_write_signature (FILE *fp, t_bool flag, struct t_group *thisgroup);

/* signal.c */
extern RETSIGTYPE (*sigdisp (int sig, RETSIGTYPE (*func)(SIG_ARGS))) (SIG_ARGS);
extern int set_win_size (int *num_lines, int *num_cols);
extern void _CDECL signal_handler (SIG_ARGS);
extern void handle_resize (int repaint);
extern void set_signal_catcher (int flag);
extern void set_signal_handlers (void);
extern void set_signals_art (void);
extern void set_signals_config (void);
extern void set_signals_group (void);
extern void set_signals_help (void);
extern void set_signals_page (void);
extern void set_signals_select (void);
extern void set_signals_thread (void);

/* strftime.c */
extern size_t my_strftime (char *s, size_t maxsize, const char *format, struct tm *timeptr);

/* string.c */
extern char *eat_tab (char *s);
extern char *my_strdup (const char *str);
extern char *str_trim (char *string);
extern char *strcasestr (char *haystack, const char *needle);
extern char *tin_ltoa (long value, int digits);
extern int sh_format(char *dst, size_t len, const char *fmt, ...);
extern size_t mystrcat (char **t, const char *s);
extern void modifiedstrncpy (char *target, const char *source, size_t size, int decode);
extern void my_strncpy (char *p, const char *q, size_t n);
extern void str_lwr (char *dst, const char *src);
extern void strcpynl (char *to, const char *from);
#ifndef HAVE_STRPBRK
	extern char *strpbrk (char *str1, char *str2);
#endif /* !HAVE_STRPBRK */
#ifndef HAVE_STRSTR
	extern char *strstr (char *text, char *pattern);
#endif /* !HAVE_STRSTR */
#ifndef HAVE_STRCASECMP
	extern int strcasecmp (const char *p, const char *q);
#endif /* !HAVE STRCASECMP */
#ifndef HAVE_STRNCASECMP
	extern int strncasecmp (const char *p, const char *q, size_t n);
#endif /* !HAVE_STRNCASECMP */
#ifndef HAVE_ATOI
	extern int atoi (const char *s);
#endif /* !HAVE_ATOI */
#ifndef HAVE_ATOL
	extern long atol (const char *s);
#endif /* !HAVE_ATOL */
#ifndef HAVE_STRTOL
	extern long strtol (const char *str, char **ptr, int use_base);
#endif /* !HAVE STRTOL */
#ifndef HAVE_STRERROR
	extern char *my_strerror(int n);
#	define strerror(n) my_strerror(n)
#endif /* !HAVE_STRERROR */

/* thread.c */
extern int find_response (int i, int n);
extern int new_responses (int thread);
extern int next_response (int n);
extern int next_thread (int n);
extern int next_unread (int n);
extern int num_of_responses (int n);
extern int prev_response (int n);
extern int prev_unread (int n);
extern int stat_thread (int n, struct t_art_stat *sbuf);
extern int which_response (int n);
extern int which_thread (int n);
extern void move_to_response (int n);
extern void show_thread_page (void);
#ifndef INDEX_DAEMON
	extern int show_thread (struct t_group *group, char *group_path, int respnum, int thread_depth);
#endif /* !INDEX_DAEMON */

/* wildmat.c */
extern t_bool wildmat (const char *text, char *p, t_bool icase);

/* xref.c */
extern t_bool overview_xref_support (void);
extern void NSETRNG0 (t_bitmap *bitmap, long low, long high);
extern void NSETRNG1 (t_bitmap *bitmap, long low, long high);
extern void art_mark_xref_read (struct t_article *art);

#endif /* !PROTO_H */