X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/6125f5f8e7f544ccdcecb3d216c9c1035d693b4e..e6ddebc23e12a646efed6ef7f1e785497beb0bc2:/h/prototypes.h diff --git a/h/prototypes.h b/h/prototypes.h index 26666eae..7a4f8a38 100644 --- a/h/prototypes.h +++ b/h/prototypes.h @@ -46,6 +46,20 @@ void cpydgst (int, int, char *, char *); char *cpytrim (const char *); int decode_rfc2047 (char *, char *, size_t); void discard (FILE *); +char *upcase (const char *); + +/* + * Decode two characters into their quoted-printable representation. + * + * Arguments are: + * + * byte1 - First character of Q-P representation + * byte2 - Second character of Q-P representation + * + * Returns the decoded value, -1 if the conversion failed. + */ +int decode_qp(unsigned char byte1, unsigned char byte2); + int default_done (int); /* @@ -191,10 +205,49 @@ int m_putenv (char *, char *); int m_rand (unsigned char *, size_t); char *m_mktemp(const char *, int *, FILE **); char *m_mktemp2(const char *, const char *, int *, FILE **); +char *m_mktemps(const char *pfx, const char *suffix, int *, FILE **); +char *get_temp_dir(); + +/* + * Create a subprocess and redirect our standard output to it. + * + * Arguments are: + * + * name - Name of process to create + * savestdout - If true, will save the current stdout file descriptor and + * m_pclose() will close it at the appropriate time. + */ +void m_popen(char *name, int savestdout); + +/* + * Wait for the last process opened by m_popen(). + */ +void m_pclose(void); + void m_unknown(m_getfld_state_t *, FILE *); int makedir (char *); char *message_id (time_t, int); +/* + * Return a MIME content-type string for the specified file. + * + * If the system supports it, will use the "file" command to determine + * the appropriate content-type. Otherwise it will try to determine the + * content-type from the suffix. If that fails, the file will be scanned + * and either assigned a MIME type of text/plain or application/octet-stream + * depending if binary content is present. + * + * Arguments: + * + * filename - The name of the file to determine the MIME type of. + * + * Returns a pointer to a content-type string (which may include MIME + * parameters, such as charset). Returns a NULL if it cannot determine + * the MIME type of the file. Returns allocated storage that must be + * free'd. + */ +char *mime_type(const char *filename); + /* * Clear the screen, using the appropriate entry from the terminfo database */ @@ -336,12 +389,25 @@ int sc_length(void); int sc_width(void); int build_form (char *, char *, int *, char *, char *, char *, char *, char *, char *); -int sendsbr (char **, int, char *, char *, struct stat *, int, char *, int); +int sendsbr (char **, int, char *, char *, struct stat *, int); int SOprintf (char *, ...); int what_now (char *, int, int, char *, char *, int, struct msgs *, char *, int, char *, int); int WhatNow(int, char **); -int writeBase64aux(FILE *, FILE *); + +/* + * Copy data from one file to another, converting to base64-encoding. + * + * Arguments include: + * + * in - Input filehandle (unencoded data) + * out - Output filename (base64-encoded data) + * crlf - If set, output encoded CRLF for every LF on input. + * + * Returns OK on success, NOTOK otherwise. + */ +int writeBase64aux(FILE *in, FILE *out, int crlf); + int writeBase64 (unsigned char *, size_t, unsigned char *); int writeBase64raw (unsigned char *, size_t, unsigned char *); @@ -350,3 +416,10 @@ int writeBase64raw (unsigned char *, size_t, unsigned char *); */ void init_credentials_file (); int nmh_get_credentials (char *, char *, int, nmh_creds_t); + +/* + * temporary file management + */ +int nmh_init(const char *argv0, int read_context); +int m_unlink(const char *); +void unregister_for_removal(int remove_files);