1 /*
2  * $Id: reply.h 1074 2008-06-04 00:08:43Z hubert@u.washington.edu $
3  *
4  * ========================================================================
5  * Copyright 2013-2021 Eduardo Chappa
6  * Copyright 2006-2008 University of Washington
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * ========================================================================
15  */
16 
17 #ifndef PITH_REPLY_INCLUDED
18 #define PITH_REPLY_INCLUDED
19 
20 
21 #define ALLOWED_SUBTYPE(st) (!strucmp((st), "plain")		\
22 			     || !strucmp((st), "html")		\
23 			     || !strucmp((st), "enriched")	\
24 			     || !strucmp((st), "richtext"))
25 
26 /* flags for get_body_part_text */
27 #define GBPT_NONE	0x00
28 #define GBPT_PEEK	0x01
29 #define GBPT_NOINTR	0x02
30 #define GBPT_DELQUOTES	0x04
31 #define	GBPT_HTML_OK	0x08
32 
33 
34 /* flags for reply_cp_addr */
35 #define RCA_NONE	0x00
36 #define RCA_NOT_US	0x01	/* copy addrs that aren't us    */
37 #define RCA_ONLY_US	0x02	/* copy only addrs that are us  */
38 #define RCA_ALL		0x04	/* copy all addrs, including us */
39 
40 
41 #include "../pith/repltype.h"
42 #include "../pith/filttype.h"
43 #include "../pith/indxtype.h"
44 #include "../pith/pattern.h"
45 #include "../pith/state.h"
46 #include "../pith/addrstring.h"
47 
48 
49 /* exported prototypes */
50 int	    reply_harvest(struct pine *, long, char *, ENVELOPE *, ADDRESS **,
51 			  ADDRESS **, ADDRESS **, ADDRESS **,int *);
52 ADDRESS    *reply_cp_addr(struct pine *, long, char *, char *,
53 			  ADDRESS *, ADDRESS *, ADDRESS *, int);
54 void        reply_append_addr(ADDRESS **, ADDRESS *);
55 ACTION_S   *set_role_from_msg(struct pine *, long, long, char *);
56 void	    reply_seed(struct pine *, ENVELOPE *, ENVELOPE *, ADDRESS *, ADDRESS *,
57 		       ADDRESS *, ADDRESS *, char **, int, char **);
58 int	    addr_lists_same(ADDRESS *, ADDRESS *);
59 int	    addr_in_env(ADDRESS *, ENVELOPE *);
60 void	    reply_fish_personal(ENVELOPE *, ENVELOPE *);
61 char	   *reply_build_refs(ENVELOPE *);
62 ADDRESS    *reply_resent(struct pine *, long, char *);
63 char	   *reply_subject(char *, char *, size_t);
64 char       *reply_quote_initials(char *);
65 char	   *reply_quote_str(ENVELOPE *);
66 int         reply_quote_str_contains_tokens(void);
67 BODY	   *reply_body(MAILSTREAM *, ENVELOPE *, BODY *, long, char *, void *,
68 		       char *, int, ACTION_S *, int, REDRAFT_POS_S **);
69 int	    reply_body_text(BODY *, BODY **);
70 char	   *reply_signature(ACTION_S *, ENVELOPE *, REDRAFT_POS_S **, int *);
71 void        get_addr_data(ENVELOPE *, IndexColType, char *, size_t);
72 void        get_news_data(ENVELOPE *, IndexColType, char *, size_t);
73 char       *get_reply_data(ENVELOPE *, ACTION_S *, IndexColType, char *, size_t);
74 void	    reply_delimiter(ENVELOPE *, ACTION_S *, gf_io_t);
75 void	    free_redraft_pos(REDRAFT_POS_S **);
76 int	    forward_mime_msg(MAILSTREAM *, long, char *, ENVELOPE *, PART **, void *);
77 void	    forward_delimiter(gf_io_t);
78 void	    reply_forward_header(MAILSTREAM *, long, char *, ENVELOPE *, gf_io_t, char *);
79 char	   *forward_subject(ENVELOPE *, int);
80 BODY	   *forward_body(MAILSTREAM *, ENVELOPE *, BODY *, long, char *, void *, int);
81 char	   *bounce_msg_body(MAILSTREAM *, long int, char *, char **, char *, ENVELOPE **, BODY **, int *);
82 int	    get_body_part_text(MAILSTREAM *, BODY *, long, char *, long,
83 			       gf_io_t, char *, char **, unsigned);
84 int	    quote_fold(long, char *, LT_INS_S **, void *);
85 int	    twsp_strip(long, char *, LT_INS_S **, void *);
86 int         post_quote_space(long, char *, LT_INS_S **, void *);
87 int	    sigdash_strip(long, char *, LT_INS_S **, void *);
88 char	   *body_partno(MAILSTREAM *, long, BODY *);
89 char	   *partno(BODY *, BODY *);
90 int	    fetch_contents(MAILSTREAM *, long, char *, BODY *);
91 BODY	   *copy_body(BODY *, BODY *);
92 PARAMETER  *copy_parameters(PARAMETER *);
93 ENVELOPE   *copy_envelope(ENVELOPE *);
94 char	   *reply_in_reply_to(ENVELOPE *);
95 char	   *generate_message_id(ACTION_S *);
96 char	   *generate_user_agent(void);
97 char       *rot13(char *);
98 char       *rot5n(char *);
99 ADDRESS    *first_addr(ADDRESS *);
100 char       *get_signature_lit(char *, int, int, int, int);
101 int         sigdashes_are_present(char *);
102 char	   *signature_path(char *, char *, size_t);
103 char       *simple_read_remote_file(char *, char *);
104 BODY	   *forward_multi_alt(MAILSTREAM *, ENVELOPE *, BODY *, long, char *, void *, gf_io_t, int);
105 BODY	   *forward_multi_alt_mixed(MAILSTREAM *, ENVELOPE *, BODY *, long, char *, void *, gf_io_t, int);
106 int	    same_subject(char *, char *s);
107 void	    shorten_subject(char *);
108 
109 #endif /* PITH_REPLY_INCLUDED */
110