if (mutt_file_symlink(a->filename, mutt_b2s(newfile)) == -1)
{
if (mutt_yesorno(_("Can't match 'nametemplate', continue?"), MUTT_YES) != MUTT_YES)
- {
- rfc1524_free_entry(&entry);
- goto out;
- }
+ goto mailcap_cleanup;
mutt_buffer_strcpy(newfile, a->filename);
}
else
}
/* in recv mode, save file to newfile first */
else
- mutt_save_attachment(fp, a, mutt_b2s(newfile), 0, NULL);
+ {
+ if (mutt_save_attachment(fp, a, mutt_b2s(newfile), 0, NULL) == -1)
+ goto mailcap_cleanup;
+ }
mutt_buffer_strcpy(cmd, entry->printcommand);
piped = mutt_rfc1524_expand_command(a, mutt_b2s(newfile), type, cmd);
{
mutt_perror("fopen");
rfc1524_free_entry(&entry);
- goto out;
+ goto mailcap_cleanup;
}
pid = mutt_create_filter(mutt_b2s(cmd), &fp_out, NULL, NULL);
mutt_perror(_("Can't create filter"));
rfc1524_free_entry(&entry);
mutt_file_fclose(&fp_in);
- goto out;
+ goto mailcap_cleanup;
}
mutt_file_copy_stream(fp_in, fp_out);
mutt_file_fclose(&fp_out);
mutt_any_key_to_continue(NULL);
}
+ rc = 1;
+
+ mailcap_cleanup:
if (fp)
mutt_file_unlink(mutt_b2s(newfile));
else if (unlink_newfile)
unlink(mutt_b2s(newfile));
rfc1524_free_entry(&entry);
- rc = 1;
goto out;
}
if (!fp_in)
{
mutt_perror("fopen");
- goto bail0;
+ goto decode_cleanup;
}
mutt_debug(LL_DEBUG2, "successfully opened %s read-only\n", mutt_b2s(newfile));
if (pid < 0)
{
mutt_perror(_("Can't create filter"));
- goto bail0;
+ goto decode_cleanup;
}
mutt_debug(LL_DEBUG2, "Filter created\n");
mutt_any_key_to_continue(NULL);
rc = 1;
}
- bail0:
+ decode_cleanup:
mutt_file_fclose(&fp_in);
mutt_file_fclose(&fp_out);
mutt_file_unlink(mutt_b2s(newfile));