Trim the -f imap foldername from the stored value

Change-Id: I65846535d8780cce840e1b33aab7affc0f465acc
Signed-off-by: SJ <sj@acts.hu>
This commit is contained in:
SJ 2016-12-21 22:18:17 +01:00
parent 4eff18bbb3
commit 6d6004c9ab
5 changed files with 14 additions and 4 deletions

View File

@ -298,6 +298,7 @@ struct import {
int keep_eml; int keep_eml;
int timeout; int timeout;
int cap_uidplus; int cap_uidplus;
int trim_folder_name;
int uid; int uid;
long total_size; long total_size;
time_t started, updated, finished; time_t started, updated, finished;

View File

@ -93,7 +93,7 @@ END:
} }
int process_imap_folder(int sd, int *seq, char *folder, struct session_data *sdata, struct __data *data, int use_ssl, int dryrun, struct __config *cfg){ int process_imap_folder(int sd, int *seq, char *folder, char *main_folder, struct session_data *sdata, struct __data *data, int use_ssl, int dryrun, struct __config *cfg){
int rc=ERR, i, n, messages=0, len, readlen, fd, nreads, readpos, finished, msglen, msg_written_len, tagoklen, tagbadlen, result; int rc=ERR, i, n, messages=0, len, readlen, fd, nreads, readpos, finished, msglen, msg_written_len, tagoklen, tagbadlen, result;
char *p, tag[SMALLBUFSIZE], tagok[SMALLBUFSIZE], tagbad[SMALLBUFSIZE], buf[MAXBUFSIZE], puf[MAXBUFSIZE], filename[SMALLBUFSIZE]; char *p, tag[SMALLBUFSIZE], tagok[SMALLBUFSIZE], tagbad[SMALLBUFSIZE], buf[MAXBUFSIZE], puf[MAXBUFSIZE], filename[SMALLBUFSIZE];
@ -127,6 +127,12 @@ int process_imap_folder(int sd, int *seq, char *folder, struct session_data *sda
if(data->recursive_folder_names == 1){ if(data->recursive_folder_names == 1){
// trim the main folder name from the stored value in folder table
if(data->import->trim_folder_name == 1 && main_folder){
folder += strlen(main_folder);
}
data->folder = get_folder_id(sdata, data, folder, 0); data->folder = get_folder_id(sdata, data, folder, 0);
if(data->folder == ERR_FOLDER) data->folder = add_new_folder(sdata, data, folder, 0); if(data->folder == ERR_FOLDER) data->folder = add_new_folder(sdata, data, folder, 0);
} }
@ -410,8 +416,10 @@ int list_folders(int sd, int *seq, int use_ssl, char *folder_name, struct __data
snprintf(tag, sizeof(tag)-1, "A%d", *seq); snprintf(tagok, sizeof(tagok)-1, "A%d OK", (*seq)++); snprintf(tag, sizeof(tag)-1, "A%d", *seq); snprintf(tagok, sizeof(tagok)-1, "A%d OK", (*seq)++);
if(folder_name == NULL) if(folder_name == NULL)
snprintf(puf, sizeof(puf)-1, "%s LIST \"\" \"*\"\r\n", tag); snprintf(puf, sizeof(puf)-1, "%s LIST \"\" \"*\"\r\n", tag);
else else {
data->import->trim_folder_name = 1;
snprintf(puf, sizeof(puf)-1, "%s LIST \"%s\" \"*\"\r\n", tag, folder_name); snprintf(puf, sizeof(puf)-1, "%s LIST \"%s\" \"*\"\r\n", tag, folder_name);
}
write1(sd, puf, strlen(puf), use_ssl, data->ssl); write1(sd, puf, strlen(puf), use_ssl, data->ssl);

View File

@ -22,7 +22,7 @@ int process_pop3_emails(int sd, struct session_data *sdata, struct __data *data,
int connect_to_imap_server(int sd, int *seq, char *username, char *password, struct __data *data, int use_ssl); int connect_to_imap_server(int sd, int *seq, char *username, char *password, struct __data *data, int use_ssl);
int list_folders(int sd, int *seq, int use_ssl, char *folder_name, struct __data *data); int list_folders(int sd, int *seq, int use_ssl, char *folder_name, struct __data *data);
int process_imap_folder(int sd, int *seq, char *folder, struct session_data *sdata, struct __data *data, int use_ssl, int dryrun, struct __config *cfg); int process_imap_folder(int sd, int *seq, char *folder, char *main_folder, struct session_data *sdata, struct __data *data, int use_ssl, int dryrun, struct __config *cfg);
void send_imap_close(int sd, int *seq, struct __data *data, int use_ssl); void send_imap_close(int sd, int *seq, struct __data *data, int use_ssl);
#endif /* _IMPORT_H */ #endif /* _IMPORT_H */

View File

@ -85,7 +85,7 @@ int import_from_imap_server(char *server, char *username, char *password, int po
else { else {
if(data->quiet == 0) printf("processing folder: %s... ", (char *)q->str); if(data->quiet == 0) printf("processing folder: %s... ", (char *)q->str);
if(process_imap_folder(sd, &seq, q->str, sdata, data, use_ssl, dryrun, cfg) == ERR) ret = ERR; if(process_imap_folder(sd, &seq, q->str, folder_imap, sdata, data, use_ssl, dryrun, cfg) == ERR) ret = ERR;
} }
} }

View File

@ -89,6 +89,7 @@ int main(int argc, char **argv){
import.download_only = 0; import.download_only = 0;
import.timeout = 30; import.timeout = 30;
import.uid = 0; import.uid = 0;
import.trim_folder_name = 0;
import.email = NULL; import.email = NULL;
data.import = &import; data.import = &import;