projects
/
mymail.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5b75c74
)
Fixed a bug indexing the last header line of a mail in the next one.
author
Francois Fleuret
<francois@fleuret.org>
Thu, 21 Mar 2013 22:01:49 +0000
(23:01 +0100)
committer
Francois Fleuret
<francois@fleuret.org>
Thu, 21 Mar 2013 22:01:49 +0000
(23:01 +0100)
mymail.c
patch
|
blob
|
history
diff --git
a/mymail.c
b/mymail.c
index
318ba91
..
87c23a3
100644
(file)
--- a/
mymail.c
+++ b/
mymail.c
@@
-568,16
+568,29
@@
void index_mbox(const char *mbox_filename,
while(fgets(raw_mbox_line, BUFFER_SIZE, file)) {
if(is_a_leading_from_line(raw_mbox_line)) {
while(fgets(raw_mbox_line, BUFFER_SIZE, file)) {
if(is_a_leading_from_line(raw_mbox_line)) {
+ /* This starts a new mail */
if(in_header) {
fprintf(stderr,
"Got a ^\"From \" in the header in %s:%lu.\n",
mbox_filename, position_in_file);
fprintf(stderr, "%s", raw_mbox_line);
}
if(in_header) {
fprintf(stderr,
"Got a ^\"From \" in the header in %s:%lu.\n",
mbox_filename, position_in_file);
fprintf(stderr, "%s", raw_mbox_line);
}
+
+ /* printf("LEADING_LINE %s", raw_mbox_line); */
+
in_header = 1;
new_header = 1;
} else if(raw_mbox_line[0] == '\n') {
in_header = 1;
new_header = 1;
} else if(raw_mbox_line[0] == '\n') {
- if(in_header) { in_header = 0; }
+ if(in_header) {
+ in_header = 0;
+ /* We leave the header, index the current line */
+ if(full_line[0]) {
+ /* printf("INDEX %s\n", full_line); */
+ index_one_mbox_line(nb_fields_to_parse, fields_to_parse, full_line, db_file);
+ }
+ end_of_full_line = full_line;
+ *end_of_full_line = '\0';
+ }
}
if(in_header) {
}
if(in_header) {
@@
-587,6
+600,7
@@
void index_mbox(const char *mbox_filename,
}
if(raw_mbox_line[0] == ' ' || raw_mbox_line[0] == '\t') {
}
if(raw_mbox_line[0] == ' ' || raw_mbox_line[0] == '\t') {
+ /* Continuation of a line */
char *start = raw_mbox_line;
while(*start == ' ' || *start == '\t') start++;
*(end_of_full_line++) = ' ';
char *start = raw_mbox_line;
while(*start == ' ' || *start == '\t') start++;
*(end_of_full_line++) = ' ';
@@
-598,17
+612,10
@@
void index_mbox(const char *mbox_filename,
}
else {
}
else {
- /*
- if(!((raw_mbox_line[0] >= 'a' && raw_mbox_line[0] <= 'z') ||
- (raw_mbox_line[0] >= 'A' && raw_mbox_line[0] <= 'Z'))) {
- fprintf(stderr,
- "Header line syntax error %s:%lu.\n",
- mbox_filename, position_in_file);
- fprintf(stderr, "%s", raw_mbox_line);
- }
- */
+ /* Start a new header line, not a continuation */
if(full_line[0]) {
if(full_line[0]) {
+ /* printf("INDEX %s\n", full_line); */
index_one_mbox_line(nb_fields_to_parse, fields_to_parse, full_line, db_file);
}
index_one_mbox_line(nb_fields_to_parse, fields_to_parse, full_line, db_file);
}