#include "mbox.h"
#include "compress.h"
-typedef struct {
+struct compress_info {
const char *close; /* close-hook command */
const char *open; /* open-hook command */
const char *append; /* append-hook command */
off_t size; /* size of real folder */
-} COMPRESS_INFO;
+};
char echo_cmd[HUGE_STRING];
*/
static const char *get_append_command (const char *path, const CONTEXT * ctx)
{
- COMPRESS_INFO *ci = (COMPRESS_INFO *) ctx->compressinfo;
-
- return (is_new (path)) ? ci->close : ci->append;
+ return is_new(path) ? ctx->cinfo->close : ctx->cinfo->append;
}
int mutt_can_append_compressed (const char *path)
}
/* open a compressed mailbox */
-static COMPRESS_INFO *set_compress_info (CONTEXT * ctx)
+static compress_info *set_compress_info (CONTEXT * ctx)
{
- COMPRESS_INFO *ci;
+ compress_info *ci = p_new(compress_info, 1);
/* Now lets uncompress this thing */
- ci = p_new(COMPRESS_INFO, 1);
- ctx->compressinfo = (void *) ci;
ci->append = find_compress_hook (M_APPENDHOOK, ctx->path);
ci->open = find_compress_hook (M_OPENHOOK, ctx->path);
ci->close = find_compress_hook (M_CLOSEHOOK, ctx->path);
- return ci;
+
+ return (ctx->cinfo = ci);
}
static void set_path (CONTEXT * ctx)
return (sb.st_size);
}
-static void store_size (CONTEXT * ctx)
-{
- COMPRESS_INFO *ci = (COMPRESS_INFO *) ctx->compressinfo;
-
- ci->size = get_size (ctx->realpath);
-}
-
static const char *compresshook_format_str (char *dest, ssize_t destlen,
char op, const char *src,
const char *fmt,
int mutt_check_mailbox_compressed (CONTEXT * ctx)
{
- COMPRESS_INFO *ci = (COMPRESS_INFO *) ctx->compressinfo;
-
- if (ci->size != get_size (ctx->realpath)) {
- p_delete(&ctx->compressinfo);
+ if (ctx->cinfo->size != get_size (ctx->realpath)) {
+ p_delete(&ctx->cinfo);
p_delete(&ctx->realpath);
mutt_error _("Mailbox was corrupted!");
FILE *fp;
int rc;
- COMPRESS_INFO *ci = set_compress_info (ctx);
+ compress_info *ci = set_compress_info (ctx);
if (!ci->open) {
ctx->magic = 0;
- p_delete(&ctx->compressinfo);
+ p_delete(&ctx->cinfo);
return (-1);
}
if (!ci->close || access (ctx->path, W_OK) != 0)
ctx->readonly = 1;
set_path (ctx);
- store_size (ctx);
+ ctx->cinfo->size = get_size(ctx->realpath);
if (!ctx->quiet)
mutt_message (_("Decompressing %s..."), ctx->realpath);
if (rc) {
mutt_any_key_to_continue (NULL);
ctx->magic = 0;
- p_delete(&ctx->compressinfo);
- mutt_error (_("Error executing: %s : unable to open the mailbox!\n"),
- cmd);
+ p_delete(&ctx->cinfo);
+ mutt_error(_("Error executing: %s : unable to open the mailbox!\n"), cmd);
}
p_delete(&cmd);
if (rc)
int mutt_open_append_compressed (CONTEXT * ctx)
{
FILE *fh;
- COMPRESS_INFO *ci = set_compress_info (ctx);
+ compress_info *ci = set_compress_info (ctx);
if (!get_append_command (ctx->path, ctx)) {
if (ci->open && ci->close)
return (mutt_open_read_compressed (ctx));
ctx->magic = 0;
- p_delete(&ctx->compressinfo);
+ p_delete(&ctx->cinfo);
return (-1);
}
/* close a compressed mailbox */
void mutt_fast_close_compressed (CONTEXT * ctx)
{
- if (ctx->compressinfo) {
+ if (ctx->cinfo) {
if (ctx->fp)
fclose (ctx->fp);
ctx->fp = NULL;
remove_file (ctx);
restore_path (ctx);
- p_delete(&ctx->compressinfo);
+ p_delete(&ctx->cinfo);
}
}
char *cmd;
int rc = 0;
FILE *fp;
- COMPRESS_INFO *ci = (COMPRESS_INFO *) ctx->compressinfo;
if (!ctx->quiet)
mutt_message (_("Compressing %s..."), ctx->realpath);
- cmd = get_compression_cmd (ci->close, ctx);
+ cmd = get_compression_cmd (ctx->cinfo->close, ctx);
if (cmd == NULL)
return (-1);
mutt_unblock_signals ();
mutt_error _("Unable to lock mailbox!");
- store_size (ctx);
+ ctx->cinfo->size = get_size(ctx->realpath);
p_delete(&cmd);
return (-1);
p_delete(&cmd);
- store_size (ctx);
+ ctx->cinfo->size = get_size(ctx->realpath);
return (rc);
}
FILE *fp;
const char *append;
char *cmd;
- COMPRESS_INFO *ci = (COMPRESS_INFO *) ctx->compressinfo;
+ compress_info *ci = ctx->cinfo;
if (!(ctx->append && ((append = get_append_command (ctx->realpath, ctx))
- || (append = ci->close)))) { /* if we can not or should not append,
- * we only have to remove the compressed info, because sync was already
- * called
- */
+ || (append = ci->close)))) {
+ /* if we can not or should not append, we only have to remove the
+ compressed info, because sync was already called */
mutt_fast_close_compressed (ctx);
return (0);
}
if (mutt_system (cmd)) {
mutt_any_key_to_continue (NULL);
- mutt_error (_
- (" %s: Error compressing mailbox! Uncompressed one kept!\n"),
+ mutt_error (_(" %s: Error compressing mailbox! Uncompressed one kept!\n"),
ctx->path);
p_delete(&cmd);
mbox_unlock_compressed (ctx, fp);
remove_file (ctx);
restore_path (ctx);
p_delete(&cmd);
- p_delete(&ctx->compressinfo);
+ p_delete(&ctx->cinfo);
return (0);
}
case 'B':
snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
- if (Context && Context->compressinfo && Context->realpath) {
+ if (Context && Context->cinfo && Context->realpath) {
if ((p = strrchr (Context->realpath, '/')))
m_strcpy(tmp, sizeof(tmp), p + 1);
else
case 'f':
snprintf (fmt, sizeof (fmt), "%%%ss", prefix);
- if (Context && Context->compressinfo && Context->realpath) {
+ if (Context && Context->cinfo && Context->realpath) {
m_strcpy(tmp, sizeof(tmp), Context->realpath);
mutt_pretty_mailbox (tmp);
- }
- else
+ } else
if (Context && Context->path) {
m_strcpy(tmp, sizeof(tmp), Context->path);
mutt_pretty_mailbox (tmp);
- }
- else
+ } else {
m_strcpy(tmp, sizeof(tmp), _("(no mailbox)"));
+ }
snprintf (buf, buflen, fmt, tmp);
break;