1/*	$NetBSD$	*/
2
3/*++
4/* NAME
5/*	deliver_completed 3
6/* SUMMARY
7/*	recipient delivery completion
8/* SYNOPSIS
9/*	#include <deliver_completed.h>
10/*
11/*	void	deliver_completed(stream, offset)
12/*	VSTREAM	*stream;
13/*	long	offset;
14/* DESCRIPTION
15/*	deliver_completed() crosses off the specified recipient from
16/*	an open queue file. A -1 offset means ignore the request -
17/*	this is used for delivery requests that are passed on from
18/*	one delivery agent to another.
19/* DIAGNOSTICS
20/*	Fatal error: unable to update the queue file.
21/* LICENSE
22/* .ad
23/* .fi
24/*	The Secure Mailer license must be distributed with this software.
25/* AUTHOR(S)
26/*	Wietse Venema
27/*	IBM T.J. Watson Research
28/*	P.O. Box 704
29/*	Yorktown Heights, NY 10598, USA
30/*--*/
31
32/* System library. */
33
34#include <sys_defs.h>
35
36/* Utility library. */
37
38#include <msg.h>
39#include <vstream.h>
40
41/* Global library. */
42
43#include "record.h"
44#include "rec_type.h"
45#include "deliver_completed.h"
46
47/* deliver_completed - handle per-recipient delivery completion */
48
49void    deliver_completed(VSTREAM *stream, long offset)
50{
51    const char *myname = "deliver_completed";
52
53    if (offset == -1)
54	return;
55
56    if (offset <= 0)
57	msg_panic("%s: bad offset %ld", myname, offset);
58
59    if (rec_put_type(stream, REC_TYPE_DONE, offset) < 0
60	|| vstream_fflush(stream))
61	msg_fatal("update queue file %s: %m", VSTREAM_PATH(stream));
62}
63