NeoMutt  2020-06-26-89-g172cd3
Teaching an old dog new tricks
DOXYGEN
lib.h File Reference

Compressed mbox local mailbox type. More...

#include <stdbool.h>
#include <stdio.h>
#include "mx.h"
+ Include dependency graph for lib.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  CompressInfo
 Private data for compress. More...
 

Functions

bool mutt_comp_can_append (struct Mailbox *m)
 Can we append to this path? More...
 
bool mutt_comp_can_read (const char *path)
 Can we read from this file? More...
 
int mutt_comp_valid_command (const char *cmd)
 Is this command string allowed? More...
 

Variables

struct MxOps MxCompOps
 Compressed Mailbox - Implements MxOps. More...
 

Detailed Description

Compressed mbox local mailbox type.

Authors
  • Alain Penders
  • Richard Russon

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file lib.h.

Function Documentation

◆ mutt_comp_can_append()

bool mutt_comp_can_append ( struct Mailbox m)

Can we append to this path?

Parameters
mMailbox
Return values
trueYes, we can append to the file
falseNo, appending isn't possible

To append to a file we can either use an 'append-hook' or a combination of 'open-hook' and 'close-hook'.

A match means it's our responsibility to append to the file.

Definition at line 339 of file compress.c.

340 {
341  if (!m)
342  return false;
343 
344  /* If this succeeds, we know there's an open-hook */
345  struct CompressInfo *ci = set_compress_info(m);
346  if (!ci)
347  return false;
348 
349  /* We have an open-hook, so to append we need an append-hook,
350  * or a close-hook. */
351  if (ci->cmd_append || ci->cmd_close)
352  return true;
353 
354  mutt_error(_("Can't append without an append-hook or close-hook : %s"), mailbox_path(m));
355  return false;
356 }
static const char * mailbox_path(const struct Mailbox *m)
Get the Mailbox&#39;s path string.
Definition: mailbox.h:196
const char * cmd_append
append-hook command
Definition: lib.h:50
#define _(a)
Definition: message.h:28
const char * cmd_close
close-hook command
Definition: lib.h:51
static struct CompressInfo * set_compress_info(struct Mailbox *m)
Find the compress hooks for a mailbox.
Definition: compress.c:176
Private data for compress.
Definition: lib.h:48
#define mutt_error(...)
Definition: logging.h:84
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_comp_can_read()

bool mutt_comp_can_read ( const char *  path)

Can we read from this file?

Parameters
pathPathname of file to be tested
Return values
trueYes, we can read the file
falseNo, we can't read the file

Search for an 'open-hook' with a regex that matches the path.

A match means it's our responsibility to open the file.

Definition at line 368 of file compress.c.

369 {
370  if (!path)
371  return false;
372 
373  if (mutt_find_hook(MUTT_OPEN_HOOK, path))
374  return true;
375 
376  return false;
377 }
char * mutt_find_hook(HookFlags type, const char *pat)
Find a matching hook.
Definition: hook.c:552
#define MUTT_OPEN_HOOK
open-hook: to read a compressed mailbox
Definition: hook.h:58
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_comp_valid_command()

int mutt_comp_valid_command ( const char *  cmd)

Is this command string allowed?

Parameters
cmdCommand string
Return values
1Valid command
0"%f" and/or "%t" is missing

A valid command string must have both "%f" (from file) and "%t" (to file). We don't check if we can actually run the command.

Definition at line 388 of file compress.c.

389 {
390  if (!cmd)
391  return 0;
392 
393  return strstr(cmd, "%f") && strstr(cmd, "%t");
394 }
+ Here is the caller graph for this function:

Variable Documentation

◆ MxCompOps

struct MxOps MxCompOps

Compressed Mailbox - Implements MxOps.

Compress only uses open, close and check. The message functions are delegated to mbox.

Definition at line 935 of file compress.c.