1 /**
2  * @file
3  * Dummy code for working around build problems
4  *
5  * @authors
6  * Copyright (C) 2018 Naveen Nathan <naveen@lastninja.net>
7  * Copyright (C) 2020 Richard Russon <rich@flatcap.org>
8  *
9  * @copyright
10  * This program is free software: you can redistribute it and/or modify it under
11  * the terms of the GNU General Public License as published by the Free Software
12  * Foundation, either version 2 of the License, or (at your option) any later
13  * version.
14  *
15  * This program is distributed in the hope that it will be useful, but WITHOUT
16  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License along with
21  * this program.  If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 #include "config.h"
25 #include <stdbool.h>
26 #include <stdio.h>
27 #include <sys/types.h>
28 #include <unistd.h>
29 #include "core/lib.h"
30 #include "context.h"
31 
32 struct Address;
33 struct Body;
34 struct Buffer;
35 struct Email;
36 struct EnterState;
37 struct Envelope;
38 struct Keymap;
39 struct Mailbox;
40 struct Message;
41 struct Pager;
42 struct Pattern;
43 struct Progress;
44 struct State;
45 
46 struct KeyEvent
47 {
48   int ch; ///< raw key pressed
49   int op; ///< function op
50 };
51 
52 bool g_addr_is_user = false;
53 int g_body_parts = 1;
54 bool g_is_mail_list = false;
55 bool g_is_subscribed_list = false;
56 const char *g_myvar = "hello";
57 short AbortKey;
58 
59 extern struct Context *Context;
60 
61 enum MenuType
62 {
63   mt_dummy
64 };
65 
66 typedef uint8_t MuttFormatFlags;
67 typedef uint16_t CompletionFlags;
68 typedef uint16_t PagerFlags;
69 typedef uint8_t SelectFileFlags;
70 
71 typedef const char *(format_t) (char *buf, size_t buflen, size_t col, int cols,
72                                 char op, const char *src, const char *prec,
73                                 const char *if_str, const char *else_str,
74                                 intptr_t data, MuttFormatFlags flags);
75 
crypt_valid_passphrase(int flags)76 int crypt_valid_passphrase(int flags)
77 {
78   return 0;
79 }
80 
imap_search(struct Mailbox * m,const struct Pattern * pat)81 bool imap_search(struct Mailbox *m, const struct Pattern *pat)
82 {
83   return false;
84 }
85 
mutt_addr_is_user(struct Address * addr)86 bool mutt_addr_is_user(struct Address *addr)
87 {
88   return g_addr_is_user;
89 }
90 
mutt_alias_reverse_lookup(struct Address * a)91 struct Address *mutt_alias_reverse_lookup(struct Address *a)
92 {
93   return NULL;
94 }
95 
mutt_body_handler(struct Body * b,struct State * s)96 int mutt_body_handler(struct Body *b, struct State *s)
97 {
98   return -1;
99 }
100 
mutt_clear_error(void)101 void mutt_clear_error(void)
102 {
103 }
104 
mutt_copy_header(FILE * in,struct Email * e,FILE * out,int flags,const char * prefix)105 int mutt_copy_header(FILE *in, struct Email *e, FILE *out, int flags, const char *prefix)
106 {
107   return -1;
108 }
109 
mutt_count_body_parts(struct Mailbox * m,struct Email * e,struct Message * msg)110 int mutt_count_body_parts(struct Mailbox *m, struct Email *e, struct Message *msg)
111 {
112   return g_body_parts;
113 }
114 
mutt_is_mail_list(struct Address * addr)115 bool mutt_is_mail_list(struct Address *addr)
116 {
117   return g_is_mail_list;
118 }
119 
mutt_is_subscribed_list(struct Address * addr)120 bool mutt_is_subscribed_list(struct Address *addr)
121 {
122   return g_is_subscribed_list;
123 }
124 
mutt_parse_mime_message(struct Mailbox * m,struct Email * e,FILE * msg)125 void mutt_parse_mime_message(struct Mailbox *m, struct Email *e, FILE *msg)
126 {
127 }
128 
mutt_str_pretty_size(char * buf,size_t buflen,size_t num)129 void mutt_str_pretty_size(char *buf, size_t buflen, size_t num)
130 {
131 }
132 
mutt_set_flag_update(struct Mailbox * m,struct Email * e,int flag,bool bf,bool upd_mbox)133 void mutt_set_flag_update(struct Mailbox *m, struct Email *e, int flag, bool bf, bool upd_mbox)
134 {
135 }
136 
mx_msg_close(struct Mailbox * m,struct Message ** msg)137 int mx_msg_close(struct Mailbox *m, struct Message **msg)
138 {
139   return 0;
140 }
141 
mx_msg_open(struct Mailbox * m,int msgno)142 struct Message *mx_msg_open(struct Mailbox *m, int msgno)
143 {
144   return NULL;
145 }
146 
mx_msg_padding_size(struct Mailbox * m)147 int mx_msg_padding_size(struct Mailbox *m)
148 {
149   return 0;
150 }
151 
myvar_get(const char * var)152 const char *myvar_get(const char *var)
153 {
154   return g_myvar;
155 }
156 
mutt_get_virt_email(struct Mailbox * m,int vnum)157 struct Email *mutt_get_virt_email(struct Mailbox *m, int vnum)
158 {
159   if (!m || !m->emails || !m->v2r)
160     return NULL;
161 
162   if ((vnum < 0) || (vnum >= m->vcount))
163     return NULL;
164 
165   int inum = m->v2r[vnum];
166   if ((inum < 0) || (inum >= m->msg_count))
167     return NULL;
168 
169   return m->emails[inum];
170 }
171 
mutt_buffer_mktemp_full(struct Buffer * buf,const char * prefix,const char * suffix,const char * src,int line)172 void mutt_buffer_mktemp_full(struct Buffer *buf, const char *prefix,
173                              const char *suffix, const char *src, int line)
174 {
175 }
176 
mutt_rfc822_write_header(FILE * fp,struct Envelope * env,struct Body * attach,int mode,bool privacy,bool hide_protected_subject)177 int mutt_rfc822_write_header(FILE *fp, struct Envelope *env, struct Body *attach,
178                              int mode, bool privacy, bool hide_protected_subject)
179 {
180   return 0;
181 }
182 
mutt_expando_format(char * buf,size_t buflen,size_t col,int cols,const char * src,format_t * callback,intptr_t data,MuttFormatFlags flags)183 void mutt_expando_format(char *buf, size_t buflen, size_t col, int cols, const char *src,
184                          format_t *callback, intptr_t data, MuttFormatFlags flags)
185 {
186 }
187 
menu_new(enum MenuType type)188 struct Menu *menu_new(enum MenuType type)
189 {
190   return NULL;
191 }
192 
menu_pop_current(struct Menu * menu)193 void menu_pop_current(struct Menu *menu)
194 {
195 }
196 
menu_loop(struct Menu * menu)197 int menu_loop(struct Menu *menu)
198 {
199   return 0;
200 }
201 
menu_current_redraw(void)202 void menu_current_redraw(void)
203 {
204 }
205 
mutt_enter_string_full(char * buf,size_t buflen,int col,CompletionFlags flags,bool multiple,char *** files,int * numfiles,struct EnterState * state)206 int mutt_enter_string_full(char *buf, size_t buflen, int col,
207                            CompletionFlags flags, bool multiple, char ***files,
208                            int *numfiles, struct EnterState *state)
209 {
210   return 0;
211 }
212 
mutt_resize_screen(void)213 void mutt_resize_screen(void)
214 {
215 }
216 
menu_push_current(struct Menu * menu)217 void menu_push_current(struct Menu *menu)
218 {
219 }
220 
km_expand_key(char * s,size_t len,struct Keymap * map)221 int km_expand_key(char *s, size_t len, struct Keymap *map)
222 {
223   return 0;
224 }
225 
km_find_func(enum MenuType menu,int func)226 struct Keymap *km_find_func(enum MenuType menu, int func)
227 {
228   return NULL;
229 }
230 
mutt_enter_state_new(void)231 struct EnterState *mutt_enter_state_new(void)
232 {
233   return NULL;
234 }
235 
mutt_enter_state_free(struct EnterState ** ptr)236 void mutt_enter_state_free(struct EnterState **ptr)
237 {
238 }
239 
menu_free(struct Menu ** ptr)240 void menu_free(struct Menu **ptr)
241 {
242 }
243 
mutt_pager(const char * banner,const char * fname,PagerFlags flags,struct Pager * extra)244 int mutt_pager(const char *banner, const char *fname, PagerFlags flags, struct Pager *extra)
245 {
246   return 0;
247 }
248 
mutt_monitor_poll(void)249 int mutt_monitor_poll(void)
250 {
251   return 0;
252 }
253 
mutt_system(const char * cmd)254 int mutt_system(const char *cmd)
255 {
256   return 0;
257 }
258 
mutt_buffer_select_file(struct Buffer * file,SelectFileFlags flags,char *** files,int * numfiles)259 void mutt_buffer_select_file(struct Buffer *file, SelectFileFlags flags,
260                              char ***files, int *numfiles)
261 {
262 }
263 
264 /**
265  * ctx_mailbox - wrapper to get the mailbox in a Context, or NULL
266  * @param ctx Context
267  * @retval ptr The mailbox in the Context
268  * @retval NULL Context is NULL or doesn't have a mailbox
269  */
ctx_mailbox(struct Context * ctx)270 struct Mailbox *ctx_mailbox(struct Context *ctx)
271 {
272   return Context ? Context->mailbox : NULL;
273 }
274 
menu_get_index(struct Menu * menu)275 int menu_get_index(struct Menu *menu)
276 {
277   return -1;
278 }
279 
menu_set_index(struct Menu * menu,int index)280 bool menu_set_index(struct Menu *menu, int index)
281 {
282   return true;
283 }
284