Postfix3.3.1
opened.c
[詳解]
1 /*++
2 /* NAME
3 /* opened 3
4 /* SUMMARY
5 /* log that a message was opened
6 /* SYNOPSIS
7 /* #include <opened.h>
8 /*
9 /* void opened(queue_id, sender, size, nrcpt, format, ...)
10 /* const char *queue_id;
11 /* const char *sender;
12 /* long size;
13 /* int nrcpt;
14 /* const char *format;
15 /* DESCRIPTION
16 /* opened() logs that a message was successfully delivered.
17 /*
18 /* vopened() implements an alternative interface.
19 /*
20 /* Arguments:
21 /* .IP queue_id
22 /* Message queue ID.
23 /* .IP sender
24 /* Sender address.
25 /* .IP size
26 /* Message content size.
27 /* .IP nrcpt
28 /* Number of recipients.
29 /* .IP format
30 /* Format of optional text.
31 /* DIAGNOSTICS
32 /* Fatal: out of memory.
33 /* BUGS
34 /* Should be replaced by routines with an attribute-value based
35 /* interface instead of an interface that uses a rigid argument list.
36 /* LICENSE
37 /* .ad
38 /* .fi
39 /* The Secure Mailer license must be distributed with this software.
40 /* AUTHOR(S)
41 /* Wietse Venema
42 /* IBM T.J. Watson Research
43 /* P.O. Box 704
44 /* Yorktown Heights, NY 10598, USA
45 /*--*/
46 
47 /* System library. */
48 
49 #include <sys_defs.h>
50 #include <stdlib.h> /* 44BSD stdarg.h uses abort() */
51 #include <stdarg.h>
52 
53 /* Utility library. */
54 
55 #include <msg.h>
56 #include <vstring.h>
57 
58 /* Global library. */
59 
60 #include "opened.h"
61 
62 /* opened - log that a message was opened */
63 
64 void opened(const char *queue_id, const char *sender, long size, int nrcpt,
65  const char *fmt,...)
66 {
67  va_list ap;
68 
69  va_start(ap, fmt);
70  vopened(queue_id, sender, size, nrcpt, fmt, ap);
71  va_end(ap);
72 }
73 
74 /* vopened - log that a message was opened */
75 
76 void vopened(const char *queue_id, const char *sender, long size, int nrcpt,
77  const char *fmt, va_list ap)
78 {
79  VSTRING *text = vstring_alloc(100);
80 
81 #define TEXT (vstring_str(text))
82 
83  vstring_vsprintf(text, fmt, ap);
84  msg_info("%s: from=<%s>, size=%ld, nrcpt=%d%s%s%s",
85  queue_id, sender, size, nrcpt,
86  *TEXT ? " (" : "", TEXT, *TEXT ? ")" : "");
87  vstring_free(text);
88 }
void vopened(const char *queue_id, const char *sender, long size, int nrcpt, const char *fmt, va_list ap)
Definition: opened.c:76
int const char * fmt
VSTRING * vstring_vsprintf(VSTRING *vp, const char *format, va_list ap)
Definition: vstring.c:614
void opened(const char *queue_id, const char *sender, long size, int nrcpt, const char *fmt,...)
Definition: opened.c:64
VSTRING * vstring_alloc(ssize_t len)
Definition: vstring.c:353
VSTRING * vstring_free(VSTRING *vp)
Definition: vstring.c:380
#define TEXT
void msg_info(const char *fmt,...)
Definition: msg.c:199