X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/17b9beb40640e8731143f61e3b94756f3e77d20c..50c8114d791602fcc427c6dc94b55f3226e8a21d:/h/prototypes.h diff --git a/h/prototypes.h b/h/prototypes.h index 8fa31576..6db99958 100644 --- a/h/prototypes.h +++ b/h/prototypes.h @@ -29,6 +29,7 @@ char *etcpath(char *); struct msgs_array; +void add_profile_entry (const char *, const char *); void adios (char *, char *, ...) NORETURN; void admonish (char *, char *, ...); void advertise (char *, char *, char *, va_list); @@ -58,6 +59,27 @@ char *cpytrim (const char *); int decode_rfc2047 (char *, char *, size_t); void discard (FILE *); int default_done (int); + +/* + * 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) + * encoding - Encoding type. May be one of CE_UNKNOWN (function chooses + * the encoding), CE_BASE64 or CE_QUOTED + * 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, int encoding, + const char *charset); + void escape_display_name (char *, size_t); void escape_local_part (char *, size_t); int ext_hook(char *, char *, char *); @@ -88,7 +110,7 @@ char **getans_via_readline (char *, struct swit *); int getanswer (char *); char **getarguments (char *, int, char **, int); char *get_charset(void); -char *getcpy (char *); +char *getcpy (const char *); char *get_default_editor(void); char *getfolder(int); /* @@ -148,7 +170,7 @@ char *pwd (void); char *r1bindex(char *, int); void readconfig (struct node **, FILE *, char *, int); int refile (char **, char *); -void ruserpass(char *, char **, char **); +void ruserpass (char *, char **, char **); int remdir (char *); void scan_detect_mbox_style (FILE *); void scan_finished (); @@ -190,6 +212,23 @@ int ssequal (char *, char *); int stringdex (char *, char *); char *trimcpy (char *); int unputenv (char *); + +/* + * 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 uprf (char *, char *); int vfgets (FILE *, char **); char *write_charset_8bit (void); @@ -228,3 +267,10 @@ int what_now (char *, int, int, char *, char *, int WhatNow(int, char **); int writeBase64aux(FILE *, FILE *); int writeBase64 (unsigned char *, size_t, unsigned char *); +int writeBase64raw (unsigned char *, size_t, unsigned char *); + +/* + * credentials management + */ +void init_credentials_file (); +int nmh_get_credentials (char *, char *, int, nmh_creds_t);