summaryrefslogtreecommitdiffstats
path: root/protos.h
diff options
context:
space:
mode:
Diffstat (limited to 'protos.h')
-rw-r--r--protos.h384
1 files changed, 384 insertions, 0 deletions
diff --git a/protos.h b/protos.h
new file mode 100644
index 00000000..678db40b
--- /dev/null
+++ b/protos.h
@@ -0,0 +1,384 @@
+/*
+ * Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#define FOREVER while (1)
+
+#ifdef DEBUG
+#define dprint(N,X) if(debuglevel>=N) fprintf X
+#else
+#define dprint(N,X)
+#endif
+
+#define NONULL(x) x?x:""
+
+#define MoreArgs(p) (*p->dptr && *p->dptr != ';' && *p->dptr != '#')
+
+#define mutt_make_string(A,B,C,D) _mutt_make_string(A,B,C,D,0)
+void _mutt_make_string (char *, size_t, const char *, HEADER *, format_flag);
+
+int mutt_extract_token (BUFFER *, BUFFER *, int);
+
+int mutt_add_string (BUFFER *, const char *);
+int mutt_add_char (BUFFER *, char);
+
+#define mutt_system(x) _mutt_system(x,0)
+int _mutt_system (const char *, int);
+
+#define mutt_next_thread(x) _mutt_aside_thread(x,1,0)
+#define mutt_previous_thread(x) _mutt_aside_thread(x,0,0)
+#define mutt_next_subthread(x) _mutt_aside_thread(x,1,1)
+#define mutt_previous_subthread(x) _mutt_aside_thread(x,0,1)
+int _mutt_aside_thread (HEADER *, short, short);
+
+#define ISSPACE(c) isspace((unsigned char)c)
+
+#define mutt_new_parameter() safe_calloc (1, sizeof (PARAMETER))
+#define mutt_new_header() safe_calloc (1, sizeof (HEADER))
+#define mutt_new_envelope() safe_calloc (1, sizeof (ENVELOPE))
+
+typedef const char * format_t (char *, size_t, char, const char *, const char *, const char *, const char *, unsigned long, format_flag);
+
+void mutt_FormatString (char *, size_t, const char *, format_t *, unsigned long, format_flag);
+
+void mutt_update_encoding (BODY *a);
+
+FILE *mutt_open_read (const char *, pid_t *);
+
+void set_quadoption (int, int);
+int query_quadoption (int, const char *);
+int quadoption (int);
+
+ADDRESS *mutt_remove_duplicates (ADDRESS *);
+ADDRESS *mutt_expand_aliases (ADDRESS *);
+ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *);
+
+BODY *mutt_dup_body (BODY *);
+BODY *mutt_make_attach (const char *);
+BODY *mutt_make_multipart (BODY *);
+BODY *mutt_new_body (void);
+BODY *mutt_parse_multipart (FILE *, const char *, long, int);
+BODY *mutt_parse_messageRFC822 (FILE *, BODY *);
+BODY *mutt_read_mime_header (FILE *, int);
+
+ENVELOPE *mutt_read_rfc822_header (FILE *, HEADER *);
+HEADER *mutt_dup_header (HEADER *);
+
+ATTACHPTR **mutt_gen_attach_list (BODY *, ATTACHPTR **, short *, short *, int, int);
+
+time_t mutt_local_tz (void);
+time_t mutt_mktime (struct tm *, int);
+time_t is_from (const char *, char *, size_t);
+
+char *mutt_expand_path (char *, size_t);
+char *mutt_find_hook (int, const char *);
+char *mutt_generate_boundary (void);
+char *mutt_gen_msgid (void);
+char *mutt_get_name (ADDRESS *);
+char *mutt_get_parameter (const char *, PARAMETER *);
+char *mutt_read_line (char *, size_t *, FILE *, int *);
+char *mutt_strlower (char *);
+char *mutt_skip_whitespace (char *);
+char *mutt_substrcpy (char *, const char *, const char *, size_t);
+char *mutt_substrdup (const char *, const char *);
+
+void mutt_add_child_pid (pid_t);
+void mutt_alias_menu (char *, size_t, ALIAS *);
+void mutt_block_signals (void);
+void mutt_block_signals_system (void);
+void mutt_body_handler (BODY *, STATE *);
+void mutt_bounce_message (HEADER *, ADDRESS *);
+void mutt_buffy (char *);
+void mutt_check_rescore (CONTEXT *ctx);
+void mutt_clear_error (void);
+void mutt_create_alias (ENVELOPE *, ADDRESS *);
+void mutt_decode_attachment (BODY *, STATE *);
+void mutt_default_save (char *, size_t, HEADER *);
+void mutt_display_address (ADDRESS *);
+void mutt_edit_file (const char *, const char *);
+void mutt_edit_headers (const char *, const char *, HEADER *, char *, size_t);
+void mutt_curses_error (const char *, ...);
+void mutt_enter_command (void);
+void mutt_exit (int);
+void mutt_expand_fmt (char *, size_t, const char *, const char *);
+void mutt_expand_link (char *, const char *, const char *);
+void mutt_fetchPopMail (void);
+void mutt_folder_hook (char *);
+void mutt_free_alias (ALIAS **);
+void mutt_free_body (BODY **);
+void mutt_free_color (int fg, int bg);
+void mutt_free_envelope (ENVELOPE **);
+void mutt_free_header (HEADER **);
+void mutt_free_parameter (PARAMETER **);
+void mutt_generate_header (char *, size_t, HEADER *, int);
+void mutt_help (int);
+void mutt_index_menu (void);
+void mutt_init_history (void);
+void mutt_linearize_tree (CONTEXT *, int);
+void mutt_make_help (char *, size_t, char *, int, int);
+void mutt_message (const char *, ...);
+void mutt_message_to_7bit (BODY *, FILE *);
+void mutt_mktemp (char *);
+void mutt_nocurses_error (const char *, ...);
+void mutt_normalize_time (struct tm *);
+void mutt_parse_mime_message (CONTEXT *ctx, HEADER *);
+void mutt_pipe_message_to_state (HEADER *, STATE *);
+void mutt_perror (const char *);
+void mutt_pretty_mailbox (char *);
+void mutt_pretty_size (char *, size_t, long);
+void mutt_print_message (HEADER *);
+void mutt_remove_trailing_ws (char *);
+void mutt_query_exit (void);
+void mutt_query_menu (char *, size_t);
+void mutt_safe_path (char *s, size_t l, ADDRESS *a);
+void mutt_save_path (char *s, size_t l, ADDRESS *a);
+void mutt_score_message (HEADER *);
+void mutt_select_fcc (char *, size_t, HEADER *);
+void mutt_select_file (char *, size_t, int);
+void mutt_send_hook (HEADER *);
+void mutt_set_flag (CONTEXT *, HEADER *, int, int);
+void mutt_shell_escape (void);
+void mutt_show_error (void);
+void mutt_signal_init (void);
+void mutt_tabs_to_spaces (char *);
+void mutt_tag_set_flag (int, int);
+void mutt_unblock_signals (void);
+void mutt_unblock_signals_system (int);
+void mutt_unlink (const char *);
+void mutt_update_encoding (BODY *a);
+void mutt_update_tree (ATTACHPTR **, short);
+void mutt_version (void);
+void mutt_view_attachments (HEADER *);
+
+int mutt_addr_is_user (ADDRESS *);
+int mutt_alias_complete (char *, size_t);
+int mutt_alloc_color (int fg, int bg);
+int mutt_any_key_to_continue (const char *);
+int mutt_buffy_check (int);
+int mutt_buffy_notify (void);
+int mutt_builtin_editor (const char *, HEADER *, HEADER *);
+int mutt_can_decode (BODY *);
+int mutt_change_flag (HEADER *, int);
+int mutt_check_encoding (const char *);
+int mutt_check_key (const char *);
+int mutt_check_menu (const char *);
+int mutt_check_mime_type (const char *);
+int mutt_check_month (const char *);
+int mutt_check_overwrite (const char *, const char *, char *, size_t, int);
+int mutt_complete (char *);
+int mutt_compose_attachment (BODY *a);
+int mutt_copy_bytes (FILE *, FILE *, size_t);
+int mutt_copy_stream (FILE *, FILE *);
+int mutt_decode_save_attachment (FILE *, BODY *, char *, int, int);
+int mutt_display_message (HEADER *h);
+int mutt_edit_attachment(BODY *, int);
+int mutt_enter_fname (const char *, char *, size_t, int *, int);
+int mutt_enter_string (unsigned char *, size_t, int, int, int);
+int mutt_get_field (char *, char *, size_t, int);
+int mutt_get_password (char *, char *, size_t);
+int mutt_get_postponed (CONTEXT *, HEADER *, HEADER **);
+int mutt_is_autoview (char *);
+int mutt_is_mail_list (ADDRESS *);
+int mutt_is_list_recipient (ADDRESS *a);
+int mutt_is_text_type (int, char *);
+int mutt_is_valid_mailbox (const char *);
+int mutt_needs_mailcap (BODY *);
+int mutt_num_postponed (void);
+int mutt_parse_bind (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_color (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_uncolor (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_hook (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_macro (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_mailboxes (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_mono (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_push (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_rc_line (/* const */ char *, BUFFER *, BUFFER *);
+int mutt_parse_score (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_parse_unscore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+int mutt_pattern_func (int, char *, HEADER *);
+int mutt_pipe_attachment (FILE *, BODY *, const char *, char *);
+int mutt_pipe_message (HEADER *);
+int mutt_print_attachment (FILE *, BODY *);
+int mutt_query_complete (char *, size_t);
+int mutt_save_attachment (FILE *, BODY *, char *, int);
+int mutt_save_message (HEADER *, int, int, int *);
+int mutt_search_command (int, int);
+int mutt_send_menu (HEADER *, char *, size_t, HEADER *);
+int mutt_send_message (HEADER *, const char *);
+int mutt_strcmp (const char *, const char *);
+int mutt_thread_set_flag (HEADER *, int, int, int);
+int mutt_view_attachment (FILE*, BODY *, int);
+int mutt_wait_filter (pid_t);
+int mutt_which_case (const char *);
+int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int);
+int mutt_write_mime_body (BODY *, FILE *);
+int mutt_write_mime_header (BODY *, FILE *);
+int mutt_write_rfc822_header (FILE *, ENVELOPE *, BODY *, int);
+int mutt_yesorno (const char *, int);
+void mutt_cache_index_colors(CONTEXT *);
+void mutt_set_header_color(CONTEXT *, HEADER *);
+
+int mh_valid_message (const char *);
+
+pid_t mutt_create_filter (const char *, FILE **, FILE **, FILE **);
+pid_t mutt_create_filter_fd (const char *, FILE **, FILE **, FILE **, int, int, int);
+
+#define FREE(x) safe_free((void **)x)
+
+char *safe_strdup (const char *);
+void *safe_calloc (size_t, size_t);
+void *safe_malloc (unsigned int);
+void safe_realloc (void **, size_t);
+void safe_free (void **);
+
+FILE *safe_fopen (const char *, const char *);
+
+ADDRESS *alias_reverse_lookup (ADDRESS *);
+
+#define strfcpy(A,B,C) strncpy(A,B,C), *(A+(C)-1)=0
+
+/* this macro must check for *c == 0 since isspace(0) has unreliable behavior
+ on some systems */
+#define SKIPWS(c) while (*(c) && isspace ((unsigned char) *(c))) c++;
+
+#ifdef LOCALES_HACK
+#define IsPrint(c) (isprint((unsigned char)(c)) || \
+ ((unsigned char)(c) >= 0xa0))
+#else
+#define IsPrint(c) (isprint((unsigned char)(c)) || \
+ (option (OPTLOCALES) ? 0 : \
+ ((unsigned char)(c) >= 0xa0)))
+#endif
+
+#define new_pattern() calloc(1, sizeof (pattern_t))
+
+int mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, HEADER *h);
+pattern_t *mutt_pattern_comp (/* const */ char *s, int flags, BUFFER *err);
+void mutt_check_simple (char *s, size_t len, const char *simple);
+void mutt_pattern_free (pattern_t **pat);
+
+/* ----------------------------------------------------------------------------
+ * Prototypes for broken systems
+ */
+
+#ifdef HAVE_SRAND48
+#define LRAND lrand48
+#define SRAND srand48
+#define DRAND drand48
+#else
+#define LRAND rand
+#define SRAND srand
+#define DRAND (double)rand
+#endif /* HAVE_SRAND48 */
+
+#ifdef HAVE_SETEGID
+#define SETEGID setegid
+#else
+#define SETEGID setgid
+#endif
+
+int getdnsdomainname (char *, size_t);
+
+/* According to SCO support, this is how to detect SCO */
+#if defined (_M_UNIX) || defined (M_OS)
+#define SCO
+#endif
+
+/* SCO Unix uses chsize() instead of ftruncate() */
+#ifndef HAVE_FTRUNCATE
+#define ftruncate chsize
+#endif
+
+#ifndef HAVE_SNPRINTF
+extern int snprintf (char *, size_t, const char *, ...);
+#endif
+
+#ifndef HAVE_VSNPRINTF
+extern int vsnprintf (char *, size_t, const char *, va_list);
+#endif
+
+#ifndef HAVE_STRERROR
+#ifndef STDC_HEADERS
+extern int sys_nerr;
+extern char *sys_errlist[];
+#endif
+
+#define strerror(x) ((x) > 0 && (x) < sys_nerr) ? sys_errlist[(x)] : 0
+#endif /* !HAVE_STRERROR */
+
+/* AIX doesn't define these in any headers (sigh) */
+int strcasecmp (const char *, const char *);
+int strncasecmp (const char *, const char *, size_t);
+
+#ifdef _AIX
+int setegid (gid_t);
+#endif /* _AIX */
+
+#ifndef STDC_HEADERS
+extern FILE *fdopen ();
+extern int system ();
+extern int puts ();
+extern int fputs ();
+extern int fputc ();
+extern int fseek ();
+extern char *strchr ();
+extern int getopt ();
+extern int fputs ();
+extern int fputc ();
+extern int fclose ();
+extern int fprintf();
+extern int printf ();
+extern int fgetc ();
+extern int tolower ();
+extern int toupper ();
+extern int sscanf ();
+extern size_t fread ();
+extern size_t fwrite ();
+extern int system ();
+extern int rename ();
+extern time_t time ();
+extern struct tm *localtime ();
+extern char *asctime ();
+extern char *strpbrk ();
+extern int fflush ();
+extern long lrand48 ();
+extern void srand48 ();
+extern time_t mktime ();
+extern int vsprintf ();
+extern int ungetc ();
+extern char *mktemp ();
+extern int ftruncate ();
+extern void *memset ();
+extern int pclose ();
+extern int socket ();
+extern int connect ();
+extern size_t strftime ();
+extern int lstat ();
+extern void rewind ();
+extern int readlink ();
+
+/* IRIX barfs on empty var decls because the system include file uses elipsis
+ in the declaration. So declare all the args to avoid compiler errors. This
+ should be harmless on other systems. */
+int ioctl (int, int, ...);
+
+#endif
+
+/* unsorted */
+void ci_bounce_message (HEADER *, int *);
+void ci_send_message (int, HEADER *, char *, CONTEXT *, HEADER *);
+void ci_attach (BODY *);