Lines Matching full:queue
58 * 'Q'id files (queue):
67 * Each queue file needs to have a corresponding data file.
70 * Queue ids are unique, formed from the inode of the data file
75 newspoolf(struct queue *queue) in newspoolf() argument
93 queue->tmpf = strdup(fn); in newspoolf()
94 if (queue->tmpf == NULL) in newspoolf()
98 * Assign queue id in newspoolf()
102 if (asprintf(&queue->id, "%"PRIxMAX, (uintmax_t)st.st_ino) < 0) in newspoolf()
105 queue->mailf = fdopen(fd, "r+"); in newspoolf()
106 if (queue->mailf == NULL) in newspoolf()
111 t->str = queue->tmpf; in newspoolf()
117 if (queue->mailf != NULL) in newspoolf()
118 fclose(queue->mailf); in newspoolf()
157 readqueuef(struct queue *queue, char *queuefn) in readqueuef() argument
160 struct queue itmqueue; in readqueuef()
167 LIST_INIT(&itmqueue.queue); in readqueuef()
198 syslog(LOG_DEBUG, "ignoring unknown queue info `%s' in `%s'", in readqueuef()
208 syslog(LOG_ERR, "malformed queue file `%s'", queuefn); in readqueuef()
215 it = LIST_FIRST(&itmqueue.queue); in readqueuef()
219 LIST_INSERT_HEAD(&queue->queue, it, next); in readqueuef()
235 linkspool(struct queue *queue) in linkspool() argument
240 if (fflush(queue->mailf) != 0 || fsync(fileno(queue->mailf)) != 0) in linkspool()
244 username, getuid(), queue->sender); in linkspool()
246 LIST_FOREACH(it, &queue->queue, next) { in linkspool()
247 if (asprintf(&it->queueid, "%s.%"PRIxPTR, queue->id, (uintptr_t)it) <= 0) in linkspool()
261 if (link(queue->tmpf, it->mailfn) != 0) in linkspool()
265 LIST_FOREACH(it, &queue->queue, next) { in linkspool()
270 unlink(queue->tmpf); in linkspool()
274 LIST_FOREACH(it, &queue->queue, next) { in linkspool()
282 load_queue(struct queue *queue) in load_queue() argument
291 bzero(queue, sizeof(*queue)); in load_queue()
292 LIST_INIT(&queue->queue); in load_queue()
296 err(EX_NOINPUT, "reading queue"); in load_queue()
302 /* ignore non-queue files */ in load_queue()
312 * do an explicit stat on the queue file. in load_queue()
325 it = readqueuef(queue, queuefn); in load_queue()
333 syslog(LOG_INFO, "could not pick up queue file: `%s'/`%s': %m", queuefn, mailfn); in load_queue()
383 syslog(LOG_INFO, "could not acquire queue file: %m"); in acquirespool()
388 dropspool(struct queue *queue, struct qitem *keep) in dropspool() argument
392 LIST_FOREACH(it, &queue->queue, next) { in dropspool()