projects
/
mymail.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added "2weeks" as a criterion.
[mymail.git]
/
mymail.c
diff --git
a/mymail.c
b/mymail.c
index
fd3b4f5
..
8c211f0
100644
(file)
--- a/
mymail.c
+++ b/
mymail.c
@@
-21,11
+21,13
@@
/*
/*
- This command is a dumb mail indexer. It can either (1) scan
- directories containing mbox files, and create a db file containing
- for each mail a list of fields computed from the header, or (2)
- read such a db file and get all the mails matching regexp-defined
- conditions on the fields, to create a resulting mbox file.
+ mymail is a simple mail indexer. It can:
+
+ (1) scan mbox files, and create a db file containing for each mail a
+ list of fields computed from its header.
+
+ (2) read such a db file, gets all the mails matching regexp-defined
+ conditions on the fields, and generates a resulting mbox file.
It is low-tech, simple, light and fast.
It is low-tech, simple, light and fast.
@@
-84,6
+86,9
@@
enum {
ID_PARTICIPANT,
ID_BODY,
ID_TIME_INTERVAL,
ID_PARTICIPANT,
ID_BODY,
ID_TIME_INTERVAL,
+ ID_MAIL_ID,
+ ID_REFERENCE_ID,
+ ID_THREAD_ID,
MAX_ID
};
MAX_ID
};
@@
-96,7
+101,10
@@
static char *field_keys[] = {
"date",
"part",
"body",
"date",
"part",
"body",
- "interval"
+ "interval",
+ "mailid",
+ "reference",
+ "thread"
};
/********************************************************************/
};
/********************************************************************/
@@
-153,6
+161,20
@@
static struct parsable_field fields_to_parse[] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
},
+ {
+ ID_MAIL_ID,
+ REG_ICASE,
+ "^message-id: ",
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+ },
+
+ {
+ ID_REFERENCE_ID,
+ REG_ICASE,
+ "^\\(in-reply-to\\|references\\): ",
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+ },
+
};
/********************************************************************/
};
/********************************************************************/
@@
-293,6
+315,10
@@
int db_line_match_search(struct search_condition *condition,
(condition->db_key == ID_FROM && db_key == ID_LEADING_LINE)
(condition->db_key == ID_FROM && db_key == ID_LEADING_LINE)
+ ||
+
+ (condition->db_key == ID_THREAD_ID && (db_key == ID_MAIL_ID ||
+ db_key == ID_REFERENCE_ID))
)
&&
)
&&
@@
-801,6
+827,7
@@
static struct time_criterion time_criteria[] = {
{ "24h", 0, 24, -1, -1 },
{ "48h", 0, 48, -1, -1 },
{ "week", 0, 24 * 7, -1, -1 },
{ "24h", 0, 24, -1, -1 },
{ "48h", 0, 48, -1, -1 },
{ "week", 0, 24 * 7, -1, -1 },
+ { "2weeks", 0, 24 * 14, -1, -1 },
{ "month", 0, 24 * 31, -1, -1 },
{ "trimester", 0, 24 * 92, -1, -1 },
{ "year", 0, 24 * 365, -1, -1 },
{ "month", 0, 24 * 31, -1, -1 },
{ "trimester", 0, 24 * 92, -1, -1 },
{ "year", 0, 24 * 365, -1, -1 },
@@
-1152,6
+1179,16
@@
int main(int argc, char **argv) {
}
}
}
}
+ if(error) {
+ print_usage(stderr);
+ exit(EXIT_FAILURE);
+ }
+
+ if(show_help) {
+ print_usage(stdout);
+ exit(EXIT_SUCCESS);
+ }
+
/* Set all the values that may defined in the arguments, through
environment variables, or hard-coded */
/* Set all the values that may defined in the arguments, through
environment variables, or hard-coded */
@@
-1175,18
+1212,6
@@
int main(int argc, char **argv) {
"MYMAIL_MBOX_PATTERN",
0);
"MYMAIL_MBOX_PATTERN",
0);
- /* Start the processing */
-
- if(error) {
- print_usage(stderr);
- exit(EXIT_FAILURE);
- }
-
- if(show_help) {
- print_usage(stdout);
- exit(EXIT_SUCCESS);
- }
-
/* mbox indexing */
if(action_index) {
/* mbox indexing */
if(action_index) {