mirror of
https://github.com/Llewellynvdm/conky.git
synced 2025-01-12 02:59:08 +00:00
local_mails: put code to where it belongs
Note that the code does not only use a pre-processor generator for defining the print functions, but also for their prototypes. Sadly, this generated a conflict in mboxscan.c which this patch resolves, too.
This commit is contained in:
parent
fa9135f9df
commit
d1b2c7eac3
47
src/conky.c
47
src/conky.c
@ -1672,63 +1672,40 @@ void generate_text_internal(char *p, int p_max_size,
|
||||
|
||||
/* mail stuff */
|
||||
OBJ(mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d", obj->data.local_mail.mail_count);
|
||||
print_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(new_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.new_mail_count);
|
||||
print_new_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(seen_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.seen_mail_count);
|
||||
print_seen_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(unseen_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.unseen_mail_count);
|
||||
print_unseen_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(flagged_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.flagged_mail_count);
|
||||
print_flagged_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(unflagged_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.unflagged_mail_count);
|
||||
print_unflagged_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(forwarded_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.forwarded_mail_count);
|
||||
print_forwarded_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(unforwarded_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.unforwarded_mail_count);
|
||||
print_unforwarded_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(replied_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.replied_mail_count);
|
||||
print_replied_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(unreplied_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.unreplied_mail_count);
|
||||
print_unreplied_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(draft_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.draft_mail_count);
|
||||
print_draft_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(trashed_mails) {
|
||||
update_mail_count(&obj->data.local_mail);
|
||||
snprintf(p, p_max_size, "%d",
|
||||
obj->data.local_mail.trashed_mail_count);
|
||||
print_trashed_mails(obj, p, p_max_size);
|
||||
}
|
||||
OBJ(mboxscan) {
|
||||
mbox_scan(obj->data.mboxscan.args, obj->data.mboxscan.output,
|
||||
|
209
src/core.c
209
src/core.c
@ -689,214 +689,29 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
|
||||
END OBJ(kernel, 0)
|
||||
END OBJ(machine, 0)
|
||||
END OBJ(mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
/* Kapil: Changed from MAIL_FILE to
|
||||
current_mail_spool since the latter
|
||||
is a copy of the former if undefined
|
||||
but the latter should take precedence
|
||||
if defined */
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(new_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(seen_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(unseen_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(flagged_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(unflagged_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(forwarded_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(unforwarded_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(replied_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(unreplied_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(draft_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(trashed_mails, 0)
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
parse_local_mail_args(obj, arg);
|
||||
END OBJ(mboxscan, 0)
|
||||
obj->data.mboxscan.args = (char *) malloc(text_buffer_size);
|
||||
obj->data.mboxscan.output = (char *) malloc(text_buffer_size);
|
||||
|
45
src/mail.c
45
src/mail.c
@ -294,6 +294,51 @@ void update_mail_count(struct local_mail_s *mail)
|
||||
}
|
||||
}
|
||||
|
||||
void parse_local_mail_args(struct text_object *obj, const char *arg)
|
||||
{
|
||||
float n1;
|
||||
char mbox[256], dst[256];
|
||||
|
||||
if (!arg) {
|
||||
n1 = 9.5;
|
||||
/* Kapil: Changed from MAIL_FILE to
|
||||
current_mail_spool since the latter
|
||||
is a copy of the former if undefined
|
||||
but the latter should take precedence
|
||||
if defined */
|
||||
strncpy(mbox, current_mail_spool, sizeof(mbox));
|
||||
} else {
|
||||
if (sscanf(arg, "%s %f", mbox, &n1) != 2) {
|
||||
n1 = 9.5;
|
||||
strncpy(mbox, arg, sizeof(mbox));
|
||||
}
|
||||
}
|
||||
|
||||
variable_substitute(mbox, dst, sizeof(dst));
|
||||
obj->data.local_mail.mbox = strndup(dst, text_buffer_size);
|
||||
obj->data.local_mail.interval = n1;
|
||||
}
|
||||
|
||||
#define PRINT_MAILS_GENERATOR(x) \
|
||||
void print_##x##mails(struct text_object *obj, char *p, int p_max_size) \
|
||||
{ \
|
||||
update_mail_count(&obj->data.local_mail); \
|
||||
snprintf(p, p_max_size, "%d", obj->data.local_mail.x##mail_count); \
|
||||
}
|
||||
|
||||
PRINT_MAILS_GENERATOR()
|
||||
PRINT_MAILS_GENERATOR(new_)
|
||||
PRINT_MAILS_GENERATOR(seen_)
|
||||
PRINT_MAILS_GENERATOR(unseen_)
|
||||
PRINT_MAILS_GENERATOR(flagged_)
|
||||
PRINT_MAILS_GENERATOR(unflagged_)
|
||||
PRINT_MAILS_GENERATOR(forwarded_)
|
||||
PRINT_MAILS_GENERATOR(unforwarded_)
|
||||
PRINT_MAILS_GENERATOR(replied_)
|
||||
PRINT_MAILS_GENERATOR(unreplied_)
|
||||
PRINT_MAILS_GENERATOR(draft_)
|
||||
PRINT_MAILS_GENERATOR(trashed_)
|
||||
|
||||
#define MAXDATASIZE 1000
|
||||
|
||||
struct mail_s *parse_mail_args(char type, const char *arg)
|
||||
|
18
src/mail.h
18
src/mail.h
@ -53,6 +53,24 @@ void update_mail_count(struct local_mail_s *);
|
||||
#define POP3_TYPE 1
|
||||
#define IMAP_TYPE 2
|
||||
|
||||
void parse_local_mail_args(struct text_object *, const char *);
|
||||
|
||||
#define PRINT_MAILS_PROTO_GENERATOR(x) \
|
||||
void print_##x##mails(struct text_object *, char *, int);
|
||||
|
||||
PRINT_MAILS_PROTO_GENERATOR()
|
||||
PRINT_MAILS_PROTO_GENERATOR(new_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(seen_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(unseen_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(flagged_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(unflagged_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(forwarded_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(unforwarded_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(replied_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(unreplied_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(draft_)
|
||||
PRINT_MAILS_PROTO_GENERATOR(trashed_)
|
||||
|
||||
/* FIXME: this is here for the config leftovers only */
|
||||
struct mail_s *parse_mail_args(char, const char *);
|
||||
|
||||
|
@ -55,7 +55,7 @@ static double last_update;
|
||||
static int args_ok = 0;
|
||||
static int from_width;
|
||||
static int subject_width;
|
||||
static int print_mails;
|
||||
static int print_num_mails;
|
||||
static int time_delay;
|
||||
|
||||
static char mbox_mail_spool[DEFAULT_TEXT_BUFFER_SIZE];
|
||||
@ -81,14 +81,14 @@ void mbox_scan(char *args, char *output, size_t max_len)
|
||||
char *substr = strstr(args, "-n");
|
||||
|
||||
if (substr) {
|
||||
if (sscanf(substr, "-n %i", &print_mails) != 1) {
|
||||
print_mails = PRINT_MAILS;
|
||||
if (sscanf(substr, "-n %i", &print_num_mails) != 1) {
|
||||
print_num_mails = PRINT_MAILS;
|
||||
}
|
||||
} else {
|
||||
print_mails = PRINT_MAILS;
|
||||
print_num_mails = PRINT_MAILS;
|
||||
}
|
||||
if (print_mails < 1) {
|
||||
print_mails = 1;
|
||||
if (print_num_mails < 1) {
|
||||
print_num_mails = 1;
|
||||
}
|
||||
|
||||
substr = strstr(args, "-t");
|
||||
@ -181,7 +181,7 @@ void mbox_scan(char *args, char *output, size_t max_len)
|
||||
|
||||
/* build up double-linked ring-list to hold data, while scanning down the
|
||||
* mbox */
|
||||
for (i = 0; i < print_mails; i++) {
|
||||
for (i = 0; i < print_num_mails; i++) {
|
||||
curr = (struct ring_list *) malloc(sizeof(struct ring_list));
|
||||
curr->from = (char *) malloc(sizeof(char[from_width + 1]));
|
||||
curr->subject = (char *) malloc(sizeof(char[subject_width + 1]));
|
||||
@ -340,11 +340,11 @@ void mbox_scan(char *args, char *output, size_t max_len)
|
||||
|
||||
output[0] = '\0';
|
||||
|
||||
i = print_mails;
|
||||
i = print_num_mails;
|
||||
while (i) {
|
||||
struct ring_list *tmp;
|
||||
if (curr->from[0] != '\0') {
|
||||
if (i != print_mails) {
|
||||
if (i != print_num_mails) {
|
||||
snprintf(buf, text_buffer_size, "\nF: %-*s S: %-*s", from_width,
|
||||
curr->from, subject_width, curr->subject);
|
||||
} else { /* first time - no \n in front */
|
||||
|
Loading…
Reference in New Issue
Block a user