NeoMutt  2022-04-29-215-gc12b98
Teaching an old dog new tricks
DOXYGEN
lib.h File Reference

Mbox local mailbox type. More...

#include <stdbool.h>
#include <stdio.h>
#include <time.h>
#include "core/lib.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  MboxAccountData
 Mbox-specific Account data -. More...
 

Macros

#define MMDF_SEP   "\001\001\001\001\n"
 

Functions

enum MxStatus mbox_check (struct Mailbox *m, struct stat *st, bool check_stats)
 
enum MailboxType mbox_path_probe (const char *path, const struct stat *st)
 Is this an mbox Mailbox? - Implements MxOps::path_probe() -. More...
 
void mbox_reset_atime (struct Mailbox *m, struct stat *st)
 Reset the access time on the mailbox file. More...
 
bool mbox_test_new_folder (const char *path)
 Test if an mbox or mmdf mailbox has new mail. More...
 

Variables

struct MxOps MxMboxOps
 Mbox Mailbox - Implements MxOps -. More...
 
struct MxOps MxMmdfOps
 MMDF Mailbox - Implements MxOps -. More...
 

Detailed Description

Mbox local mailbox type.

Authors
  • Michael R. Elkins
  • 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.

Macro Definition Documentation

◆ MMDF_SEP

#define MMDF_SEP   "\001\001\001\001\n"

Definition at line 61 of file lib.h.

Function Documentation

◆ mbox_check()

enum MxStatus mbox_check ( struct Mailbox m,
struct stat *  st,
bool  check_stats 
)

◆ mbox_reset_atime()

void mbox_reset_atime ( struct Mailbox m,
struct stat *  st 
)

Reset the access time on the mailbox file.

Parameters
mMailbox
stTimestamp

if mailbox has at least 1 new message, sets mtime > atime of mailbox so mailbox check reports new mail

Definition at line 843 of file mbox.c.

844{
845 struct utimbuf utimebuf;
846 struct stat st2 = { 0 };
847
848 if (!st)
849 {
850 if (stat(mailbox_path(m), &st2) < 0)
851 return;
852 st = &st2;
853 }
854
855 utimebuf.actime = st->st_atime;
856 utimebuf.modtime = st->st_mtime;
857
858 /* When $mbox_check_recent is set, existing new mail is ignored, so do not
859 * reset the atime to mtime-1 to signal new mail. */
860 const bool c_mail_check_recent = cs_subset_bool(NeoMutt->sub, "mail_check_recent");
861 if (!c_mail_check_recent && (utimebuf.actime >= utimebuf.modtime) && mbox_has_new(m))
862 {
863 utimebuf.actime = utimebuf.modtime - 1;
864 }
865
866 utime(mailbox_path(m), &utimebuf);
867}
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Definition: helpers.c:73
static const char * mailbox_path(const struct Mailbox *m)
Get the Mailbox's path string.
Definition: mailbox.h:210
static bool mbox_has_new(struct Mailbox *m)
Does the mailbox have new mail.
Definition: mbox.c:709
Container for Accounts, Notifications.
Definition: neomutt.h:37
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mbox_test_new_folder()

bool mbox_test_new_folder ( const char *  path)

Test if an mbox or mmdf mailbox has new mail.

Parameters
pathPath to the mailbox
Return values
trueThe folder contains new mail

Definition at line 816 of file mbox.c.

817{
818 bool rc = false;
819
820 enum MailboxType type = mx_path_probe(path);
821
822 if ((type != MUTT_MBOX) && (type != MUTT_MMDF))
823 return false;
824
825 FILE *fp = fopen(path, "rb");
826 if (fp)
827 {
828 rc = test_last_status_new(fp);
829 mutt_file_fclose(&fp);
830 }
831
832 return rc;
833}
int mutt_file_fclose(FILE **fp)
Close a FILE handle (and NULL the pointer)
Definition: file.c:152
MailboxType
Supported mailbox formats.
Definition: mailbox.h:41
@ MUTT_MMDF
'mmdf' Mailbox type
Definition: mailbox.h:46
@ MUTT_MBOX
'mbox' Mailbox type
Definition: mailbox.h:45
static bool test_last_status_new(FILE *fp)
Is the last message new.
Definition: mbox.c:791
enum MailboxType mx_path_probe(const char *path)
Find a mailbox that understands a path.
Definition: mx.c:1327
+ Here is the call graph for this function: