projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move more things in the lib-ui.
[apps/madmutt.git]
/
buffy.c
diff --git
a/buffy.c
b/buffy.c
index
6293bbb
..
5befe84
100644
(file)
--- a/
buffy.c
+++ b/
buffy.c
@@
-14,36
+14,31
@@
# include "config.h"
#endif
# include "config.h"
#endif
-#include "mutt.h"
-#include "buffy.h"
-#include "buffer.h"
-#include "mx.h"
-#include "mh.h"
-#include "sidebar.h"
-
-#include "mutt_curses.h"
-
-#ifdef USE_IMAP
-#include "imap.h"
-#endif
-
-#include "lib/mem.h"
-#include "lib/intl.h"
-
#include <string.h>
#include <sys/stat.h>
#include <dirent.h>
#include <utime.h>
#include <ctype.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>
#include <dirent.h>
#include <utime.h>
#include <ctype.h>
#include <unistd.h>
-
#include <stdio.h>
#include <stdio.h>
+#include <lib-lib/mem.h>
+#include <lib-lib/buffer.h>
+#include <lib-lib/macros.h>
+
+#include <lib-ui/curses.h>
+#include <lib-ui/sidebar.h>
+
+#include <imap/imap.h>
+
+#include "mutt.h"
+#include "buffy.h"
+#include "mx.h"
+#include "mh.h"
+
static time_t BuffyTime = 0; /* last time we started checking for mail */
static time_t BuffyTime = 0; /* last time we started checking for mail */
-#ifdef USE_IMAP
static time_t ImapBuffyTime = 0; /* last time we started checking for mail */
static time_t ImapBuffyTime = 0; /* last time we started checking for mail */
-#endif
static short BuffyCount = 0; /* how many boxes with new mail */
static short BuffyNotify = 0; /* # of unnotified new boxes */
static short BuffyCount = 0; /* how many boxes with new mail */
static short BuffyNotify = 0; /* # of unnotified new boxes */
@@
-52,16
+47,16
@@
static short BuffyNotify = 0; /* # of unnotified new boxes */
/* Find the last message in the file.
* upon success return 0. If no message found - return -1 */
/* Find the last message in the file.
* upon success return 0. If no message found - return -1 */
-static int fseek_last_message (FILE * f)
+static int fseek
o
_last_message (FILE * f)
{
{
-
long int
pos;
+
LOFF_T
pos;
char buffer[BUFSIZ + 9]; /* 7 for "\n\nFrom " */
int bytes_read;
int i; /* Index into `buffer' for scanning. */
char buffer[BUFSIZ + 9]; /* 7 for "\n\nFrom " */
int bytes_read;
int i; /* Index into `buffer' for scanning. */
-
memset (buffer, 0, sizeof (buffer)
);
- fseek (f, 0, SEEK_END);
- pos = ftell (f);
+
p_clear(buffer, 1
);
+ fseek
o
(f, 0, SEEK_END);
+ pos = ftell
o
(f);
/* Set `bytes_read' to the size of the last, probably partial, buffer; 0 <
* `bytes_read' <= `BUFSIZ'. */
/* Set `bytes_read' to the size of the last, probably partial, buffer; 0 <
* `bytes_read' <= `BUFSIZ'. */
@@
-72,22
+67,22
@@
static int fseek_last_message (FILE * f)
* reads will be on block boundaries, which might increase efficiency. */
while ((pos -= bytes_read) >= 0) {
/* we save in the buffer at the end the first 7 chars from the last read */
* reads will be on block boundaries, which might increase efficiency. */
while ((pos -= bytes_read) >= 0) {
/* we save in the buffer at the end the first 7 chars from the last read */
- strncpy (buffer + BUFSIZ, buffer, 5 + 2); /* 2 == 2 *
str_
len(CRLF) */
- fseek (f, pos, SEEK_SET);
+ strncpy (buffer + BUFSIZ, buffer, 5 + 2); /* 2 == 2 *
m_str
len(CRLF) */
+ fseek
o
(f, pos, SEEK_SET);
bytes_read = fread (buffer, sizeof (char), bytes_read, f);
if (bytes_read == -1)
return -1;
for (i = bytes_read; --i >= 0;)
bytes_read = fread (buffer, sizeof (char), bytes_read, f);
if (bytes_read == -1)
return -1;
for (i = bytes_read; --i >= 0;)
- if (!
str_ncmp (buffer + i, "\n\nFrom ", str_len
("\n\nFrom "))) { /* found it - go to the beginning of the From */
- fseek (f, pos + i + 2, SEEK_SET);
+ if (!
m_strncmp(buffer + i, "\n\nFrom ", m_strlen
("\n\nFrom "))) { /* found it - go to the beginning of the From */
+ fseek
o
(f, pos + i + 2, SEEK_SET);
return 0;
}
bytes_read = BUFSIZ;
}
/* here we are at the beginning of the file */
return 0;
}
bytes_read = BUFSIZ;
}
/* here we are at the beginning of the file */
- if (!
str_ncmp
("From ", buffer, 5)) {
- fseek (f, 0, 0);
+ if (!
m_strncmp
("From ", buffer, 5)) {
+ fseek
o
(f, 0, 0);
return (0);
}
return (0);
}
@@
-101,16
+96,16
@@
static int test_last_status_new (FILE * f)
ENVELOPE *tmp_envelope;
int result = 0;
ENVELOPE *tmp_envelope;
int result = 0;
- if (fseek_last_message (f) == -1)
+ if (fseek
o
_last_message (f) == -1)
return (0);
return (0);
- hdr =
mutt_new_header
();
+ hdr =
header_new
();
tmp_envelope = mutt_read_rfc822_header (f, hdr, 0, 0);
if (!(hdr->read || hdr->old))
result = 1;
tmp_envelope = mutt_read_rfc822_header (f, hdr, 0, 0);
if (!(hdr->read || hdr->old))
result = 1;
-
mutt_free_envelope
(&tmp_envelope);
-
mutt_free_header
(&hdr);
+
envelope_delete
(&tmp_envelope);
+
header_delete
(&hdr);
return result;
}
return result;
}
@@
-170,8
+165,8
@@
void buffy_update_mailbox (BUFFY * b)
/* func to free buffy for list_del() */
static void buffy_free (BUFFY** p) {
/* func to free buffy for list_del() */
static void buffy_free (BUFFY** p) {
-
mem_fre
e(&(*p)->path);
-
mem_fre
e(p);
+
p_delet
e(&(*p)->path);
+
p_delet
e(p);
}
int buffy_lookup (const char* path) {
}
int buffy_lookup (const char* path) {
@@
-179,14
+174,14
@@
int buffy_lookup (const char* path) {
if (list_empty(Incoming) || !path || !*path)
return (-1);
for (i = 0; i < Incoming->length; i++) {
if (list_empty(Incoming) || !path || !*path)
return (-1);
for (i = 0; i < Incoming->length; i++) {
- if (
str_eq (((BUFFY*)
Incoming->data[i])->path, path) )
+ if (
!m_strcmp(((BUFFY*)
Incoming->data[i])->path, path) )
return (i);
}
return (-1);
}
int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data,
return (i);
}
return (-1);
}
int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data,
- BUFFER * err)
+ BUFFER * err
__attribute__ ((unused))
)
{
BUFFY* tmp;
char buf[_POSIX_PATH_MAX];
{
BUFFY* tmp;
char buf[_POSIX_PATH_MAX];
@@
-197,11
+192,10
@@
int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data,
while (MoreArgs (s)) {
mutt_extract_token (path, s, 0);
while (MoreArgs (s)) {
mutt_extract_token (path, s, 0);
-
strfcpy (buf, path->data, sizeof (buf)
);
+
m_strcpy(buf, sizeof(buf), path->data
);
- if (data == M_UNMAILBOXES &&
str_eq
(buf, "*")) {
+ if (data == M_UNMAILBOXES &&
!strcmp
(buf, "*")) {
list_del (&Incoming, (list_del_t*) buffy_free);
list_del (&Incoming, (list_del_t*) buffy_free);
- sidebar_draw (CurrentMenu);
return 0;
}
return 0;
}
@@
-221,8
+215,8
@@
int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data,
}
if (i < 0) {
}
if (i < 0) {
- tmp =
mem_calloc (1, sizeof (BUFFY)
);
- tmp->path =
str_dup
(buf);
+ tmp =
p_new(BUFFY, 1
);
+ tmp->path =
m_strdup
(buf);
tmp->magic = 0;
list_push_back (&Incoming, tmp);
i = Incoming->length-1;
tmp->magic = 0;
list_push_back (&Incoming, tmp);
i = Incoming->length-1;
@@
-246,7
+240,6
@@
int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data,
tmp->size = 0;
#endif /* BUFFY_SIZE */
}
tmp->size = 0;
#endif /* BUFFY_SIZE */
}
- sidebar_draw (CurrentMenu);
return 0;
}
return 0;
}
@@
-262,7
+255,7
@@
int buffy_parse_mailboxes (BUFFER * path, BUFFER * s, unsigned long data,
/* values for force:
* 0 don't force any checks + update sidebar
* 1 force all checks + update sidebar
/* values for force:
* 0 don't force any checks + update sidebar
* 1 force all checks + update sidebar
- * 2
force all
checks + _don't_ update sidebar
+ * 2
don't force any
checks + _don't_ update sidebar
*/
int buffy_check (int force)
{
*/
int buffy_check (int force)
{
@@
-274,35
+267,28
@@
int buffy_check (int force)
struct stat contex_sb;
time_t now, last1;
CONTEXT *ctx;
struct stat contex_sb;
time_t now, last1;
CONTEXT *ctx;
- int i = 0
, local = 0, count = 0
;
-#ifdef USE_IMAP
+ int i = 0;
+ int local = 0, count = 0;
time_t last2;
/* update postponed count as well, on force */
time_t last2;
/* update postponed count as well, on force */
- if (force
!= 0
)
+ if (force
== 1
)
mutt_update_num_postponed ();
mutt_update_num_postponed ();
-#endif
/* fastest return if there are no mailboxes */
if (list_empty(Incoming))
return 0;
now = time (NULL);
if (force == 0 && (now - BuffyTime < BuffyTimeout)
/* fastest return if there are no mailboxes */
if (list_empty(Incoming))
return 0;
now = time (NULL);
if (force == 0 && (now - BuffyTime < BuffyTimeout)
-#ifdef USE_IMAP
&& (now - ImapBuffyTime < ImapBuffyTimeout))
&& (now - ImapBuffyTime < ImapBuffyTimeout))
-#else
- )
-#endif
return BuffyCount;
last1 = BuffyTime;
return BuffyCount;
last1 = BuffyTime;
- if (force
!= 0
|| now - BuffyTime >= BuffyTimeout)
+ if (force
== 1
|| now - BuffyTime >= BuffyTimeout)
BuffyTime = now;
BuffyTime = now;
-#ifdef USE_IMAP
last2 = ImapBuffyTime;
last2 = ImapBuffyTime;
- if (force
!= 0
|| now - ImapBuffyTime >= ImapBuffyTimeout)
+ if (force
== 1
|| now - ImapBuffyTime >= ImapBuffyTimeout)
ImapBuffyTime = now;
ImapBuffyTime = now;
-#endif
BuffyCount = 0;
BuffyNotify = 0;
BuffyCount = 0;
BuffyNotify = 0;
@@
-334,12
+320,12
@@
int buffy_check (int force)
* before polling */
if (!Context || !Context->path || (local ? (sb.st_dev != contex_sb.st_dev ||
sb.st_ino != contex_sb.st_ino) :
* before polling */
if (!Context || !Context->path || (local ? (sb.st_dev != contex_sb.st_dev ||
sb.st_ino != contex_sb.st_ino) :
-
!str_eq
(tmp->path, Context->path))) {
+
m_strcmp
(tmp->path, Context->path))) {
switch (tmp->magic) {
case M_MBOX:
case M_MMDF:
/* only check on force or $mail_check reached */
switch (tmp->magic) {
case M_MBOX:
case M_MMDF:
/* only check on force or $mail_check reached */
- if (force
!= 0
|| (now - last1 >= BuffyTimeout)) {
+ if (force
== 1
|| (now - last1 >= BuffyTimeout)) {
if (!count) {
if (STAT_CHECK) {
BuffyCount++;
if (!count) {
if (STAT_CHECK) {
BuffyCount++;
@@
-375,7
+361,7
@@
int buffy_check (int force)
case M_MAILDIR:
/* only check on force or $mail_check reached */
case M_MAILDIR:
/* only check on force or $mail_check reached */
- if (force
!= 0
|| (now - last1 >= BuffyTimeout)) {
+ if (force
== 1
|| (now - last1 >= BuffyTimeout)) {
snprintf (path, sizeof (path), "%s/new", tmp->path);
if ((dirp = opendir (path)) == NULL) {
tmp->magic = 0;
snprintf (path, sizeof (path), "%s/new", tmp->path);
if ((dirp = opendir (path)) == NULL) {
tmp->magic = 0;
@@
-392,10
+378,11
@@
int buffy_check (int force)
/* one new and undeleted message is enough */
if (tmp->new == 0) {
BuffyCount++;
/* one new and undeleted message is enough */
if (tmp->new == 0) {
BuffyCount++;
- tmp->new = 1;
- if (!count)
+ if (!count) {
/* if sidebar invisible -> done */
/* if sidebar invisible -> done */
+ tmp->new = 1;
break;
break;
+ }
}
tmp->msgcount++;
tmp->msg_unread++;
}
tmp->msgcount++;
tmp->msg_unread++;
@@
-433,12
+420,11
@@
int buffy_check (int force)
case M_MH:
/* only check on force or $mail_check reached */
case M_MH:
/* only check on force or $mail_check reached */
- if (force
!= 0
|| (now - last1 >= BuffyTimeout)) {
+ if (force
== 1
|| (now - last1 >= BuffyTimeout)) {
if ((tmp->new = mh_buffy (tmp->path)) > 0)
BuffyCount++;
if (count) {
DIR *dp;
if ((tmp->new = mh_buffy (tmp->path)) > 0)
BuffyCount++;
if (count) {
DIR *dp;
- struct dirent *de;
if ((dp = opendir (path)) == NULL)
break;
if ((dp = opendir (path)) == NULL)
break;
@@
-460,25
+446,23
@@
int buffy_check (int force)
BuffyCount++;
break;
BuffyCount++;
break;
-#ifdef USE_IMAP
case M_IMAP:
/* only check on force or $imap_mail_check reached */
case M_IMAP:
/* only check on force or $imap_mail_check reached */
- if (force
!= 0
|| (now - last2 >= ImapBuffyTimeout)) {
+ if (force
== 1
|| (now - last2 >= ImapBuffyTimeout)) {
tmp->msgcount = imap_mailbox_check (tmp->path, 0);
tmp->msgcount = imap_mailbox_check (tmp->path, 0);
- if ((tmp->new = imap_mailbox_check (tmp->path, 1)) > 0) {
+ tmp->new = imap_mailbox_check (tmp->path, 1);
+ tmp->msg_unread = imap_mailbox_check (tmp->path, 2);
+ if (tmp->new > 0)
BuffyCount++;
BuffyCount++;
- tmp->msg_unread = tmp->new; /* for sidebar; wtf? */
- }
- else {
+ else
tmp->new = 0;
tmp->new = 0;
+ if (tmp->msg_unread < 0)
tmp->msg_unread = 0;
tmp->msg_unread = 0;
- }
}
else if (tmp->new > 0)
/* keep current stats if !force and !$imap_mail_check reached */
BuffyCount++;
break;
}
else if (tmp->new > 0)
/* keep current stats if !force and !$imap_mail_check reached */
BuffyCount++;
break;
-#endif
}
}
}
}
@@
-511,7
+495,7
@@
int buffy_list (void)
pos = 0;
first = 1;
buffylist[0] = 0;
pos = 0;
first = 1;
buffylist[0] = 0;
- pos +=
str_len
(strncat (buffylist, _("New mail in "), sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
+ pos +=
m_strlen
(strncat (buffylist, _("New mail in "), sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
if (Incoming) {
for (i = 0; i < Incoming->length; i++) {
tmp = (BUFFY*) Incoming->data[i];
if (Incoming) {
for (i = 0; i < Incoming->length; i++) {
tmp = (BUFFY*) Incoming->data[i];
@@
-519,22
+503,22
@@
int buffy_list (void)
if (tmp->new <= 0 || (have_unnotified && tmp->notified))
continue;
if (tmp->new <= 0 || (have_unnotified && tmp->notified))
continue;
-
strfcpy (path, tmp->path, sizeof (path)
);
+
m_strcpy(path, sizeof(path), tmp->path
);
mutt_pretty_mailbox (path);
mutt_pretty_mailbox (path);
- if (!first && pos +
str_len
(path) >= COLS - 7)
+ if (!first && pos +
m_strlen
(path) >= COLS - 7)
break;
if (!first)
break;
if (!first)
- pos +=
str_len
(strncat (buffylist + pos, ", ", sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
+ pos +=
m_strlen
(strncat (buffylist + pos, ", ", sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
/* Prepend an asterisk to mailboxes not already notified */
if (!tmp->notified) {
/* Prepend an asterisk to mailboxes not already notified */
if (!tmp->notified) {
- /* pos +=
str_len
(strncat(buffylist + pos, "*", sizeof(buffylist)-1-pos)); __STRNCAT_CHECKED__ */
+ /* pos +=
m_strlen
(strncat(buffylist + pos, "*", sizeof(buffylist)-1-pos)); __STRNCAT_CHECKED__ */
tmp->notified = 1;
BuffyNotify--;
}
tmp->notified = 1;
BuffyNotify--;
}
- pos +=
str_len
(strncat (buffylist + pos, path, sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
+ pos +=
m_strlen
(strncat (buffylist + pos, path, sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
first = 0;
}
}
first = 0;
}
}
@@
-570,7
+554,8
@@
int buffy_notify (void)
*/
void buffy_next (char *s, size_t slen)
{
*/
void buffy_next (char *s, size_t slen)
{
- int i = 0, c = 0, l = 0;
+ int l = 0;
+ int c = 0, i = 0;
if (list_empty(Incoming))
return;
if (list_empty(Incoming))
return;
@@
-590,7
+575,7
@@
void buffy_next (char *s, size_t slen)
i = 1 + buffy_lookup (s);
for (l=0; l < Incoming->length; l++) {
c = (l+i) % Incoming->length;
i = 1 + buffy_lookup (s);
for (l=0; l < Incoming->length; l++) {
c = (l+i) % Incoming->length;
- if ((!Context || !Context->path ||
!str_eq
(((BUFFY*) Incoming->data[c])->path, Context->path)) &&
+ if ((!Context || !Context->path ||
m_strcmp
(((BUFFY*) Incoming->data[c])->path, Context->path)) &&
((BUFFY*) Incoming->data[c])->new > 0)
break;
}
((BUFFY*) Incoming->data[c])->new > 0)
break;
}
@@
-600,7
+585,7
@@
void buffy_next (char *s, size_t slen)
* reported new mail */
buffy_check (0);
} else {
* reported new mail */
buffy_check (0);
} else {
-
strfcpy (s, ((BUFFY*) Incoming->data[c])->path, slen
);
+
m_strcpy(s, slen, ((BUFFY*)Incoming->data[c])->path
);
mutt_pretty_mailbox (s);
}
}
mutt_pretty_mailbox (s);
}
}