X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=h%2Fprototypes.h;h=e6e7dc14b1e71d57113876e2ae5b4281a00f4b75;hb=3cbdaea22c94d1c1d13e11b1ea6e55d3d9408771;hp=9b76d07a5c508267be5475e2a68b7b4172b0f495;hpb=786ff643f5933939b8c5173155aa0ae5a3a00eba;p=mmh diff --git a/h/prototypes.h b/h/prototypes.h index 9b76d07..e6e7dc1 100644 --- a/h/prototypes.h +++ b/h/prototypes.h @@ -22,7 +22,7 @@ char *etcpath(char *); /* ** prototypes from the nmh subroutine library */ -void adios(char *, char *, ...) NORETURN; +void adios(int, char *, char *, ...) NORETURN; void admonish(char *, char *, ...); void advertise(char *, char *, char *, va_list); void advise(char *, char *, ...); @@ -38,8 +38,9 @@ void context_save(void); void cpydata(int, int, char *, char *); void cpydgst(int, int, char *, char *); int decode_rfc2047(char *, char *, size_t); -void discard(FILE *); int default_done(int); +int execprog(char *, char **); +int execprogl(char *, char *, ...); char *expandfol(char *); char *expanddir(char *); int ext_hook(char *, char *, char *); @@ -76,6 +77,7 @@ char *norm_charmap(char *); char *new_fs(char *, char *); int pidwait(pid_t, int); int pidstatus(int, FILE *, char *); +int pidXwait(int, char *); void print_help(char *, struct swit *, int); void print_sw(char *, struct swit *, char *, FILE *); void print_version(char *); @@ -110,6 +112,23 @@ int uprf(char *, char *); int vfgets(FILE *, char **); char *write_charset_8bit(void); +/* + * Remove quotes and quoted-pair sequences from RFC-5322 atoms. + * + * Currently the actual algorithm is simpler than it technically should + * be: any quotes are simply eaten, unless they're preceded by the escape + * character (\). This seems to be sufficient for our needs for now. + * + * Arguments: + * + * input - The input string + * output - The output string; is assumed to have at least as much + * room as the input string. At worst the output string will + * be the same size as the input string; it might be smaller. + * + */ +void unquote_string(const char *input, char *output); + int mh_strcasecmp(const char *s1, const char *s2); @@ -126,3 +145,52 @@ int what_now(char *, int, char *, char *, int, struct msgs *, char *LocalName(void); /* hostname */ char *getusername(void); char *getfullname(void); + + +/* +** prototypes for message and sequence manipulation +*/ +void clear_msg_flags(struct msgs *, int); +void copy_msg_flags(struct msgs *, int, int); +void get_msg_flags(struct msgs *, seqset_t *, int); +void set_msg_flags(struct msgs *, seqset_t *, int); +seqset_t does_exist(struct msgs *, int); +void unset_exists(struct msgs *, int); +void set_exists(struct msgs *, int); +seqset_t is_selected(struct msgs *, int); +void unset_selected(struct msgs *, int); +void set_selected(struct msgs *, int); +seqset_t is_unseen(struct msgs *, int); +void unset_unseen(struct msgs *, int); +void set_unseen(struct msgs *, int); +seqset_t in_sequence(struct msgs *, int, int); +void clear_sequence(struct msgs *, int, int); +void add_sequence(struct msgs *, int, int); + +int is_seq_private(struct msgs *, int); +void make_seq_public(struct msgs *, int); +void make_seq_private(struct msgs *, int); +void make_all_public(struct msgs *); + +void clear_folder_flags(struct msgs *); +int is_readonly(struct msgs *); +void set_readonly(struct msgs *); +int other_files(struct msgs *); +void set_other_files(struct msgs *); + +/* + * Encode a message header using RFC 2047 encoding. If the message contains + * no non-ASCII characters, then leave the header as-is. + * + * Arguments include: + * + * name - Message header name + * value - Message header content; must point to allocated memory + * (may be changed if encoding is necessary) + * charset - Charset used for encoding. If NULL, obtain from system + * locale. + * + * Returns 0 on success, any other value on failure. + */ + +int encode_rfc2047(const char *name, char **value, const char *charset);