diff --git a/src/defs.h b/src/defs.h index 9ad64c8..6a2a603 100644 --- a/src/defs.h +++ b/src/defs.h @@ -331,7 +331,7 @@ char *mboxdir; char *folder; char filename[SMALLBUFSIZE]; - time_t started, updated, finished; + time_t started, updated, finished, after, before; }; diff --git a/src/import.c b/src/import.c index 7dea525..5c0e743 100644 --- a/src/import.c +++ b/src/import.c @@ -93,6 +93,14 @@ printf("%s: invalid message, hdr_len: %d\n", data->import->filename, sdata->hdr_len); rc = ERR; } + else if(data->import->after > 0 && sdata->sent < data->import->after){ + if(cfg->verbosity > 1) printf("discarding older email: %s\n", sdata->filename); + rc = ERR_DISCARDED; + } + else if(data->import->before > 0 && sdata->sent > data->import->before){ + if(cfg->verbosity > 1) printf("discarding newer email: %s\n", sdata->filename); + rc = ERR_DISCARDED; + } else { // When importing emails, we should add the retention value (later) to the original sent value sdata->retained = sdata->sent; diff --git a/src/pilerimport.c b/src/pilerimport.c index 1e34999..711e89d 100644 --- a/src/pilerimport.c +++ b/src/pilerimport.c @@ -59,6 +59,8 @@ printf(" -o Only download emails for POP3/IMAP import\n"); printf(" -r Remove imported emails\n"); printf(" -q Quiet mode\n"); + printf(" -A Import emails sent after this timestamp\n"); + printf(" -B Import emails sent before this timestamp\n"); exit(0); } @@ -102,6 +104,8 @@ import.table_id = 0; import.folder = NULL; import.delay = 0; + import.after = 0; + import.before = 0; data.import = &import; @@ -144,6 +148,8 @@ {"remove-after-import",no_argument, 0, 'r' }, {"failed-folder", required_argument, 0, 'j' }, {"move-folder", required_argument, 0, 'g' }, + {"after", required_argument, 0, 'A' }, + {"before", required_argument, 0, 'B' }, {"only-download",no_argument, 0, 'o' }, {"read-from-export",no_argument, 0, 'y' }, {"dry-run", no_argument, 0, 'D' }, @@ -153,9 +159,9 @@ int option_index = 0; - int c = getopt_long(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:t:s:g:j:T:Z:yDRroqh?", long_options, &option_index); + int c = getopt_long(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:t:s:g:j:T:Z:A:B:yDRroqh?", long_options, &option_index); #else - int c = getopt(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:t:s:g:j:T:Z:yDRroqh?"); + int c = getopt(argc, argv, "c:m:M:e:d:i:K:u:p:P:x:F:f:a:b:t:s:g:j:T:Z:A:B:yDRroqh?"); #endif if(c == -1) break; @@ -295,6 +301,12 @@ data.quiet = 1; break; + case 'A' : data.import->after = atol(optarg); + break; + + case 'B' : data.import->before = atol(optarg); + break; + case 'h' : case '?' : usage();