Break out the unquote functionality to a separate function.
[mmh] / h / prototypes.h
index 9b76d07..42767f5 100644 (file)
@@ -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,35 @@ 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 *);