diff options
| author | 2012-01-13 21:58:35 +0000 | |
|---|---|---|
| committer | 2012-01-13 21:58:35 +0000 | |
| commit | 569b4302375d1dab0ad7510655a5516bcd10dba8 (patch) | |
| tree | ce694a9792ba5d50a0005a9957c294a24c58f220 /usr.sbin/smtpd/queue_fsqueue.c | |
| parent | Simplify function wsfont_map_unichar. (diff) | |
| download | wireguard-openbsd-569b4302375d1dab0ad7510655a5516bcd10dba8.tar.xz wireguard-openbsd-569b4302375d1dab0ad7510655a5516bcd10dba8.zip | |
queue_message_purge() and queue_message_delete() are actually the same
thing. Remove queue_message_purge() in favor of queue_message_delete
and simplify fsqueue_message_delete() implementation to move the
message dir to purge/
ok gilles@
Diffstat (limited to 'usr.sbin/smtpd/queue_fsqueue.c')
| -rw-r--r-- | usr.sbin/smtpd/queue_fsqueue.c | 76 |
1 files changed, 8 insertions, 68 deletions
diff --git a/usr.sbin/smtpd/queue_fsqueue.c b/usr.sbin/smtpd/queue_fsqueue.c index 04b89bbaa54..3732b05ba8f 100644 --- a/usr.sbin/smtpd/queue_fsqueue.c +++ b/usr.sbin/smtpd/queue_fsqueue.c @@ -1,4 +1,4 @@ -/* $OpenBSD: queue_fsqueue.c,v 1.28 2012/01/12 17:00:56 eric Exp $ */ +/* $OpenBSD: queue_fsqueue.c,v 1.29 2012/01/13 21:58:35 eric Exp $ */ /* * Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org> @@ -53,7 +53,6 @@ static int fsqueue_message_commit(enum queue_kind, u_int32_t); static int fsqueue_message_fd_r(enum queue_kind, u_int32_t); static int fsqueue_message_fd_rw(enum queue_kind, u_int32_t); static int fsqueue_message_delete(enum queue_kind, u_int32_t); -static int fsqueue_message_purge(enum queue_kind, u_int32_t); static int fsqueue_message_corrupt(enum queue_kind, u_int32_t); static void fsqueue_envelope_path(enum queue_kind, u_int64_t, char *, size_t); @@ -360,75 +359,19 @@ static int fsqueue_message_delete(enum queue_kind qkind, u_int32_t msgid) { char rootdir[MAXPATHLEN]; - char evpdir[MAXPATHLEN]; - char msgpath[MAXPATHLEN]; - DIR *dirp; - struct dirent *dp; - - if (qkind == Q_QUEUE) { - if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%03x/%08x", PATH_QUEUE, - msgid & 0xfff, msgid)) - fatal("fsqueue_message_delete: snprintf"); - } - - if (! bsnprintf(evpdir, sizeof(evpdir), "%s%s", rootdir, - PATH_ENVELOPES)) - fatal("fsqueue_message_delete: snprintf"); - - dirp = opendir(evpdir); - if (dirp) { - char envelope[MAXPATHLEN]; - - while ((dp = readdir(dirp)) != NULL) { - if (! bsnprintf(envelope, MAXPATHLEN, "%s/%s", - evpdir, dp->d_name)) - fatal("fsqueue_message_delete: truncated evp"); - unlink(envelope); - } - closedir(dirp); - } - - if (! bsnprintf(msgpath, sizeof(msgpath), "%s/message", rootdir)) - fatal("fsqueue_message_delete: snprintf"); - - if (unlink(msgpath) == -1) { - if (errno != ENOENT) - fatal("fsqueue_message_delete: unlink"); - } - - if (rmdir(evpdir) == -1) { - /* It is ok to fail rmdir with ENOENT here - * because upon successful delivery of the - * last envelope, we remove the directory. - */ - if (errno != ENOENT) - fatal("fsqueue_message_delete: rmdir"); - } - - if (rmdir(rootdir) == -1) - fatal("#2 fsqueue_message_delete: rmdir"); - if (qkind == Q_QUEUE) { - if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%03x", PATH_QUEUE, msgid & 0xffff)) + if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%03x/%08x", + fsqueue_getpath(qkind), msgid & 0xfff, msgid)) fatal("fsqueue_message_delete: snprintf"); - rmdir(rootdir); + } else { + if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%08x", + fsqueue_getpath(qkind), msgid)) + fatalx("fsqueue_message_delete: snprintf"); } - return 1; -} - -static int -fsqueue_message_purge(enum queue_kind qkind, u_int32_t msgid) -{ - char rootdir[MAXPATHLEN]; - - if (! bsnprintf(rootdir, sizeof(rootdir), "%s/%08x", - fsqueue_getpath(qkind), msgid)) - fatalx("fsqueue_message_purge: snprintf"); - if (mvpurge(rootdir, PATH_PURGE) == -1) - fatal("fsqueue_message_purge: mvpurge"); + fatal("fsqueue_message_delete: mvpurge"); return 1; } @@ -496,9 +439,6 @@ fsqueue_message(enum queue_kind qkind, enum queue_op qop, u_int32_t *msgid) case QOP_FD_RW: return fsqueue_message_fd_rw(qkind, *msgid); - case QOP_PURGE: - return fsqueue_message_purge(qkind, *msgid); - case QOP_CORRUPT: return fsqueue_message_corrupt(qkind, *msgid); |
