/* returns 0 on success, -1 on error */
int mutt_save_attachment (FILE *fp, BODY *m, char *path, int flags, HEADER *hdr)
{
+ if (!m)
+ return -1;
+
if (fp)
{
}
else
{
+ if (!m->filename)
+ return -1;
+
/* In send mode, just copy file */
FILE *ofp = NULL, *nfp = NULL;
* the buffer is always null-terminated */
static void mutt_buffer_add (BUFFER* buf, const char* s, size_t len)
{
+ if (!buf || !s)
+ return;
+
size_t offset;
if (buf->dptr + len + 1 > buf->data + buf->dsize)
safe_realloc ((void**) (void*) &buf->data, buf->dsize);
buf->dptr = buf->data + offset;
}
+ if (!buf->dptr)
+ return;
memcpy (buf->dptr, s, len);
buf->dptr += len;
*(buf->dptr) = '\0';
int mutt_extract_token (BUFFER *dest, BUFFER *tok, int flags)
{
+ if (!dest || !tok)
+ return -1;
+
char ch;
char qc = 0; /* quote char */
char *pc;
#ifdef USE_NOTMUCH
int mutt_parse_virtual_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *err)
{
+ if (!path || !s)
+ return -1;
+
BUFFY **tmp;
char buf[_POSIX_PATH_MAX + LONG_STRING + 32]; /* path to DB + query + URI "decoration" */
size_t this_one_len = 0;
int error;
+ if (off_start < 0)
+ return -1;
+
if (ftello (in) != off_start)
fseeko (in, off_start, SEEK_SET);
gpgme_ctx_t ctx, gpgme_key_t key, int idx,
STATE *s, gpgme_signature_t sig)
{
+ if (!key)
+ return 1;
+
int severe = 0;
if ((sum & GPGME_SIGSUM_KEY_REVOKED))
static BODY *decrypt_part (BODY *a, STATE *s, FILE *fpout, int is_smime,
int *r_is_signed)
{
+ if (!a || !s || !fpout)
+ return NULL;
+
struct stat info;
BODY *tattach = NULL;
int err = 0;
int mutt_body_handler (BODY *b, STATE *s)
{
+ if (!b || !s)
+ return -1;
+
int plaintext = 0;
handler_t handler = NULL;
int rc = 0;
#ifdef USE_NOTMUCH
static int parse_tag_transforms (BUFFER *b, BUFFER *s, unsigned long data, BUFFER *err)
{
+ if (!b || !s)
+ return -1;
+
char *tmp = NULL;
while (MoreArgs (s))
static int parse_tag_formats (BUFFER *b, BUFFER *s, unsigned long data, BUFFER *err)
{
+ if (!b || !s)
+ return -1;
+
char *tmp = NULL;
while (MoreArgs (s))
void safe_free (void *ptr) /* __SAFE_FREE_CHECKED__ */
{
+ if (!ptr)
+ return;
void **p = (void **)ptr;
if (*p)
{
/* create a send-mode duplicate from a receive-mode body */
int mutt_copy_body (FILE *fp, BODY **tgt, BODY *src)
{
+ if (!tgt || !src)
+ return -1;
+
char tmp[_POSIX_PATH_MAX];
BODY *b = NULL;
void state_mark_attach (STATE *s)
{
+ if (!s || !s->fpout)
+ return;
if ((s->flags & MUTT_DISPLAY) && (mutt_strcmp (Pager, "builtin") == 0))
state_puts (AttachmentMarker, s);
}
void state_attach_puts (const char *t, STATE *s)
{
+ if (!t || !s || !s->fpout)
+ return;
+
if (*t != '\n') state_mark_attach (s);
while (*t)
{
done:
- *lastp = last;
+ if (lastp)
+ *lastp = last;
return matched;
}
static BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)
{
+ if (!a || !s || !fpout || !p)
+ return NULL;
+
char buf[LONG_STRING];
FILE *pgpin = NULL, *pgpout = NULL, *pgperr = NULL, *pgptmp = NULL;
struct stat info;