porte encode_rfc2047 from nmh
[mmh] / h / prototypes.h
index 1333a84..e6e7dc1 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,7 +38,6 @@ 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 *, ...);
@@ -78,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 *);
@@ -112,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);
 
 
@@ -160,3 +177,20 @@ 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);