summaryrefslogtreecommitdiffabout
path: root/libetpan/src/low-level/maildir/maildir.c
authorzautrix <zautrix>2005-03-18 22:05:02 (UTC)
committer zautrix <zautrix>2005-03-18 22:05:02 (UTC)
commit297208a61298fceab6d96bbd1c46198b1c0f7a76 (patch) (side-by-side diff)
tree50f0c6f775393c1eec15b71691a798d1dacab86d /libetpan/src/low-level/maildir/maildir.c
parentf0232b7801f098b5842e3cd5a1fd804af98ab862 (diff)
downloadkdepimpi-297208a61298fceab6d96bbd1c46198b1c0f7a76.zip
kdepimpi-297208a61298fceab6d96bbd1c46198b1c0f7a76.tar.gz
kdepimpi-297208a61298fceab6d96bbd1c46198b1c0f7a76.tar.bz2
fixes applied
Diffstat (limited to 'libetpan/src/low-level/maildir/maildir.c') (more/less context) (show whitespace changes)
-rw-r--r--libetpan/src/low-level/maildir/maildir.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libetpan/src/low-level/maildir/maildir.c b/libetpan/src/low-level/maildir/maildir.c
index 98b9f87..e81625d 100644
--- a/libetpan/src/low-level/maildir/maildir.c
+++ b/libetpan/src/low-level/maildir/maildir.c
@@ -101,36 +101,49 @@ void maildir_free(struct maildir * md)
free(md);
}
#define MAX_TRY_ALLOC 32
static char * maildir_get_new_message_filename(struct maildir * md,
char * tmpfile)
{
char filename[PATH_MAX];
char basename[PATH_MAX];
int k;
time_t now;
+ //LR
+ struct stat f_stat;
int got_file;
int r;
got_file = 0;
now = time(NULL);
k = 0;
while (k < MAX_TRY_ALLOC) {
snprintf(basename, sizeof(basename), "%lu.%u_%u.%s",
(unsigned long) now, md->mdir_pid, md->mdir_counter, md->mdir_hostname);
snprintf(filename, sizeof(filename), "%s/tmp/%s",
md->mdir_path, basename);
+ // LR changed following lines
+ if ( stat( filename, &f_stat ) == -1 ) {
+ char * dup_filename;
+
+ dup_filename = strdup(filename);
+ if (dup_filename == NULL) {
+ //unlink(filename);
+ return NULL;
+ }
+ rename (tmpfile,dup_filename );
+#if 0
if (link(tmpfile, filename) == 0) {
got_file = 1;
unlink(tmpfile);
}
else if (errno == EXDEV) {
unlink(tmpfile);
return NULL;
}
else if (errno == EPERM) {
r = rename(tmpfile, filename);
if (r < 0) {
unlink(tmpfile);
@@ -138,25 +151,25 @@ static char * maildir_get_new_message_filename(struct maildir * md,
}
got_file = 1;
}
if (got_file) {
char * dup_filename;
dup_filename = strdup(filename);
if (dup_filename == NULL) {
unlink(filename);
return NULL;
}
-
+#endif
md->mdir_counter ++;
return dup_filename;
}
md->mdir_counter ++;
k ++;
}
return NULL;
}