+
+
+/*
+** 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);