diff options
Diffstat (limited to 'mail/mail.h')
-rw-r--r-- | mail/mail.h | 71 |
1 files changed, 59 insertions, 12 deletions
diff --git a/mail/mail.h b/mail/mail.h index a92cd2a76..c4480e315 100644 --- a/mail/mail.h +++ b/mail/mail.h @@ -1,5 +1,5 @@ /* GNU Mailutils -- a suite of utilities for electronic mail - Copyright (C) 1999-2019 Free Software Foundation, Inc. + Copyright (C) 1999-2024 Free Software Foundation, Inc. GNU Mailutils is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -93,7 +93,7 @@ typedef int function_t (int, char **); #define EF_REG 0x00 /* Regular command */ #define EF_FLOW 0x01 /* Flow control command */ #define EF_SEND 0x02 /* Send command */ -#define EF_HIDDEN 0x04 /* Hiddent command */ +#define EF_HIDDEN 0x04 /* Hidden command */ typedef struct compose_env { @@ -145,7 +145,7 @@ union mailvar_value { char *string; int number; - int bool; + int boolean; }; struct mailvar_variable @@ -166,7 +166,6 @@ struct mailvar_variable #define mailvar_name_asksub "asksub" #define mailvar_name_autoinc "autoinc" #define mailvar_name_autoprint "autoprint" -#define mailvar_name_byname "byname" #define mailvar_name_bang "bang" #define mailvar_name_charset "charset" #define mailvar_name_cmd "cmd" @@ -182,6 +181,7 @@ struct mailvar_variable #define mailvar_name_flipr "flipr" #define mailvar_name_folder "folder" #define mailvar_name_fromfield "fromfield" +#define mailvar_name_fullnames "fullnames" #define mailvar_name_gnu_last_command "gnu-last-command" #define mailvar_name_header "header" #define mailvar_name_headline "headline" @@ -199,6 +199,7 @@ struct mailvar_variable #define mailvar_name_mode "mode" #define mailvar_name_nullbody "nullbody" #define mailvar_name_nullbodymsg "nullbodymsg" +#define mailvar_name_outfilename "outfilename" #define mailvar_name_outfolder "outfolder" #define mailvar_name_page "page" #define mailvar_name_prompt "prompt" @@ -229,16 +230,15 @@ struct mailvar_variable #define mailvar_name_mime "mime" #define mailvar_name_onehop "onehop" #define mailvar_name_quiet "quiet" -#define mailvar_name_PID "PID" +#define mailvar_name_PID "PID" +#define mailvar_name_useragent "useragent" typedef struct message_set msgset_t; struct message_set { msgset_t *next; /* Link to the next message set */ - unsigned int npart; /* Number of parts in this set */ - size_t *msg_part; /* Array of part numbers: msg_part[0] is the - message number */ + mu_coord_t crd; }; typedef int (*msg_handler_t) (msgset_t *mp, mu_message_t mesg, void *data); @@ -306,6 +306,7 @@ int mail_touch (int argc, char **argv); int mail_unalias (int argc, char **argv); int mail_undelete (int argc, char **argv); int mail_unfold (int argc, char **argv); +int mail_unread (int argc, char **argv); int mail_unset (int argc, char **argv); int mail_version (int argc, char **argv); int mail_visual (int argc, char **argv); @@ -323,7 +324,7 @@ int if_cond (void); void mail_mainloop (char *(*input) (void *, int), void *closure, int do_history); int mail_copy0 (int argc, char **argv, int mark); -int mail_send0 (compose_env_t *env, int save_to); +int mail_compose_send (compose_env_t *env, int save_to); void free_env_headers (compose_env_t *env); /*extern void print_message (mu_message_t mesg, char *prefix, int all_headers, FILE *file);*/ @@ -402,6 +403,35 @@ int msgset_parse (const int argc, char **argv, int flags, msgset_t **mset); int msgset_member (msgset_t *set, size_t n); msgset_t *msgset_negate (msgset_t *set); size_t msgset_count (msgset_t *set); +static inline size_t +msgset_length (msgset_t *set) +{ + return mu_coord_length (set->crd); +} +static inline size_t +msgset_msgno (msgset_t *set) +{ + return set->crd[1]; +} +static inline char * +msgset_part_str (const msgset_t *set, size_t n) +{ + return mu_coord_part_string (set->crd, n); +} +static inline char * +msgset_str (const msgset_t *set) +{ + return mu_coord_string (set->crd); +} + +/* Constants for naming outgoing mail files */ +enum + { + outfilename_local, /* File is named by local part of the recipient email. */ + outfilename_email, /* File is named by entire email. */ + outfilename_domain /* File is named by domain part. */ + }; +extern int outfilename_mode; #define MDHINT_SELECTED_HEADERS 0x1 @@ -469,6 +499,7 @@ char *util_get_homedir (void); char *util_fullpath (const char *inpath); char *util_folder_path (const char *name); char *util_get_sender (int msgno, int strip); +char *util_message_sender (mu_message_t msg, int strip); void util_slist_print (mu_list_t list, int nl); int util_slist_lookup (mu_list_t list, const char *str); @@ -477,6 +508,7 @@ void util_slist_remove (mu_list_t *list, char *value); void util_slist_destroy (mu_list_t *list); char *util_slist_to_string (mu_list_t list, const char *delim); void util_strcat (char **dest, const char *str); +char *util_outfilename (mu_address_t addr); char *util_outfolder_name (char *str); void util_save_outgoing (mu_message_t msg, char *savefile); int util_error_range (size_t msgno); @@ -488,8 +520,12 @@ void util_msgset_iterate (msgset_t *msgset, void util_get_content_type (mu_header_t hdr, char **value, char **args); void util_get_hdr_value (mu_header_t hdr, const char *name, char **value); int util_merge_addresses (char **addr_str, const char *value); -int util_header_expand (mu_header_t *hdr); +void util_address_expand_aliases (mu_address_t *paddr); +int util_header_expand_aliases (mu_header_t *hdr); int util_get_message (mu_mailbox_t mbox, size_t msgno, mu_message_t *msg); +int util_get_message_part (mu_mailbox_t mbox, msgset_t *msgset, + mu_message_t *ret_msg); + void util_cache_command (mu_list_t *list, const char *fmt, ...) MU_PRINTFLIKE(2,3); void util_run_cached_commands (mu_list_t *list); @@ -503,7 +539,8 @@ const char *util_url_to_string (mu_url_t url); mu_stream_t open_pager (size_t lines); -void format_msgset (mu_stream_t str, const msgset_t *msgset, size_t *count); +int print_message_body (mu_message_t msg, mu_stream_t out, size_t *stat); + char *sender_string (mu_message_t msg); int is_address_field (const char *name); @@ -524,6 +561,15 @@ const char *alias_iterate_next (alias_iterator_t itr); const char *alias_iterate_first (const char *p, alias_iterator_t *itr); void alias_iterate_end (alias_iterator_t *itr); +/* Auxiliary functions for accessing folders */ +enum + { + any_folder, + local_folder + }; + +int util_get_folder (mu_folder_t *pfolder, mu_url_t url, int type); + int mail_sender (int argc, char **argv); int mail_nosender (int argc, char **argv); mu_address_t get_sender_address (mu_message_t msg); @@ -535,7 +581,7 @@ mu_address_t get_sender_address (mu_message_t msg); void compose_init (compose_env_t *env); int compose_header_set (compose_env_t *env, const char *name, const char *value, int replace); -char *compose_header_get (compose_env_t *env, char *name, char *defval); +char const *compose_header_get (compose_env_t *env, char *name, char *defval); void compose_destroy (compose_env_t *env); #ifndef HAVE_READLINE_READLINE_H @@ -547,6 +593,7 @@ char *readline (char *prompt); #define MSG_NODELETED 0x0001 #define MSG_SILENT 0x0002 #define MSG_COUNT 0x0004 +#define MSG_ALLOWPART 0x0008 /* Message attributes */ #define MAIL_ATTRIBUTE_MBOXED 0x0001 |