1/* $NetBSD$ */ 2 3#ifndef _MAIL_STREAM_H_INCLUDED_ 4#define _MAIL_STREAM_H_INCLUDED_ 5 6/*++ 7/* NAME 8/* mail_stream 3h 9/* SUMMARY 10/* mail stream management 11/* SYNOPSIS 12/* #include <mail_stream.h> 13/* DESCRIPTION 14/* .nf 15 16 /* 17 * System library. 18 */ 19#include <sys/time.h> 20 21 /* 22 * Utility library. 23 */ 24#include <vstream.h> 25#include <vstring.h> 26 27 /* 28 * External interface. 29 */ 30typedef struct MAIL_STREAM MAIL_STREAM; 31 32typedef int (*MAIL_STREAM_FINISH_FN) (MAIL_STREAM *, VSTRING *); 33typedef int (*MAIL_STREAM_CLOSE_FN) (VSTREAM *); 34 35struct MAIL_STREAM { 36 VSTREAM *stream; /* file or pipe or socket */ 37 char *queue; /* (initial) queue name */ 38 char *id; /* queue id */ 39 MAIL_STREAM_FINISH_FN finish; /* finish code */ 40 MAIL_STREAM_CLOSE_FN close; /* close stream */ 41 char *class; /* trigger class */ 42 char *service; /* trigger service */ 43 int mode; /* additional permissions */ 44#ifdef DELAY_ACTION 45 int delay; /* deferred delivery */ 46#endif 47 struct timeval ctime; /* creation time */ 48}; 49 50#define MAIL_STREAM_CTL_END 0 /* Terminator */ 51#define MAIL_STREAM_CTL_QUEUE 1 /* Change queue */ 52#define MAIL_STREAM_CTL_CLASS 2 /* Change notification class */ 53#define MAIL_STREAM_CTL_SERVICE 3 /* Change notification service */ 54#define MAIL_STREAM_CTL_MODE 4 /* Change final queue file mode */ 55#ifdef DELAY_ACTION 56#define MAIL_STREAM_CTL_DELAY 5 /* Change final queue file mtime */ 57#endif 58 59extern MAIL_STREAM *mail_stream_file(const char *, const char *, const char *, int); 60extern MAIL_STREAM *mail_stream_service(const char *, const char *); 61extern MAIL_STREAM *mail_stream_command(const char *); 62extern void mail_stream_cleanup(MAIL_STREAM *); 63extern int mail_stream_finish(MAIL_STREAM *, VSTRING *); 64extern void mail_stream_ctl(MAIL_STREAM *, int,...); 65 66 67/* LICENSE 68/* .ad 69/* .fi 70/* The Secure Mailer license must be distributed with this software. 71/* AUTHOR(S) 72/* Wietse Venema 73/* IBM T.J. Watson Research 74/* P.O. Box 704 75/* Yorktown Heights, NY 10598, USA 76/*--*/ 77 78#endif 79