diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2000-03-06 19:52:57 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2000-03-06 19:52:57 +0000 |
commit | 582012e400e28648a602804eeea6d701f2295306 (patch) | |
tree | 4479151c2773a54535c9373f2f69fa934d1ffd43 /uid.c | |
parent | 8fafdda84fb552dbba9829308cd963d5ab78cbdd (diff) | |
download | fetchmail-582012e400e28648a602804eeea6d701f2295306.tar.gz fetchmail-582012e400e28648a602804eeea6d701f2295306.tar.bz2 fetchmail-582012e400e28648a602804eeea6d701f2295306.zip |
Try to prevent .fetchids from being randomly nuked.
svn path=/trunk/; revision=2799
Diffstat (limited to 'uid.c')
-rw-r--r-- | uid.c | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -424,11 +424,24 @@ void uid_end_query(struct query *ctl) report_complete(stdout, "\n"); } - /* old state of mailbox may now be irrelevant */ - free_str_list(&ctl->oldsaved); - free_str_list(&scratchlist); - ctl->oldsaved = ctl->newsaved; - ctl->newsaved = (struct idlist *) NULL; + /* + * Don't swap UID lists unless we've actually seen UIDLs. + * This is necessary in order to keep UIDL information + * from being heedlessly deleted later on. + */ + if (ctl->have_uids) + { + /* old state of mailbox may now be irrelevant */ + if (outlevel >= O_DEBUG) + report(stdout, "swapping UID lists\n"); + free_str_list(&ctl->oldsaved); + free_str_list(&scratchlist); + ctl->oldsaved = ctl->newsaved; + ctl->newsaved = (struct idlist *) NULL; + ctl->have_uids = FALSE; + } + else if (outlevel >= O_DEBUG) + report(stdout, "not swapping UID lists, no UIDs seen this query\n"); } void write_saved_lists(struct query *hostlist, const char *idfile) |