1/*	$NetBSD: spawn_command.h,v 1.2 2017/02/14 01:16:49 christos Exp $	*/
2
3#ifndef _SPAWN_COMMAND_H_INCLUDED_
4#define _SPAWN_COMMAND_H_INCLUDED_
5
6/*++
7/* NAME
8/*	spawn_command 3h
9/* SUMMARY
10/*	run external command
11/* SYNOPSIS
12/*	#include <spawn_command.h>
13/* DESCRIPTION
14/* .nf
15
16 /*
17  * Utility library.
18  */
19#include <check_arg.h>
20
21/* Legacy API: type-unchecked arguments, internal use. */
22#define SPAWN_CMD_END		0	/* terminator */
23#define SPAWN_CMD_ARGV		1	/* command is array */
24#define SPAWN_CMD_COMMAND	2	/* command is string */
25#define SPAWN_CMD_STDIN		3	/* mail_copy() flags */
26#define SPAWN_CMD_STDOUT	4	/* mail_copy() sender */
27#define SPAWN_CMD_STDERR	5	/* mail_copy() recipient */
28#define SPAWN_CMD_UID		6	/* privileges */
29#define SPAWN_CMD_GID		7	/* privileges */
30#define SPAWN_CMD_TIME_LIMIT	8	/* time limit */
31#define SPAWN_CMD_ENV		9	/* extra environment */
32#define SPAWN_CMD_SHELL		10	/* alternative shell */
33#define SPAWN_CMD_EXPORT	11	/* exportable parameters */
34
35/* Safer API: type-checked arguments, external use. */
36#define CA_SPAWN_CMD_END	SPAWN_CMD_END
37#define CA_SPAWN_CMD_ARGV(v)	SPAWN_CMD_ARGV, CHECK_PPTR(CA_SPAWN_CMD, char, (v))
38#define CA_SPAWN_CMD_COMMAND(v)	SPAWN_CMD_COMMAND, CHECK_CPTR(CA_SPAWN_CMD, char, (v))
39#define CA_SPAWN_CMD_STDIN(v)	SPAWN_CMD_STDIN, CHECK_VAL(CA_SPAWN_CMD, int, (v))
40#define CA_SPAWN_CMD_STDOUT(v)	SPAWN_CMD_STDOUT, CHECK_VAL(CA_SPAWN_CMD, int, (v))
41#define CA_SPAWN_CMD_STDERR(v)	SPAWN_CMD_STDERR, CHECK_VAL(CA_SPAWN_CMD, int, (v))
42#define CA_SPAWN_CMD_UID(v)	SPAWN_CMD_UID, CHECK_VAL(CA_SPAWN_CMD, uid_t, (v))
43#define CA_SPAWN_CMD_GID(v)	SPAWN_CMD_GID, CHECK_VAL(CA_SPAWN_CMD, gid_t, (v))
44#define CA_SPAWN_CMD_TIME_LIMIT(v) SPAWN_CMD_TIME_LIMIT, CHECK_VAL(CA_SPAWN_CMD, int, (v))
45#define CA_SPAWN_CMD_ENV(v)	SPAWN_CMD_ENV, CHECK_PPTR(CA_SPAWN_CMD, char, (v))
46#define CA_SPAWN_CMD_SHELL(v)	SPAWN_CMD_SHELL, CHECK_CPTR(CA_SPAWN_CMD, char, (v))
47#define CA_SPAWN_CMD_EXPORT(v)	SPAWN_CMD_EXPORT, CHECK_PPTR(CA_SPAWN_CMD, char, (v))
48
49CHECK_VAL_HELPER_DCL(CA_SPAWN_CMD, uid_t);
50CHECK_VAL_HELPER_DCL(CA_SPAWN_CMD, int);
51CHECK_VAL_HELPER_DCL(CA_SPAWN_CMD, gid_t);
52CHECK_PPTR_HELPER_DCL(CA_SPAWN_CMD, char);
53CHECK_CPTR_HELPER_DCL(CA_SPAWN_CMD, char);
54
55extern WAIT_STATUS_T spawn_command(int,...);
56
57/* LICENSE
58/* .ad
59/* .fi
60/*	The Secure Mailer license must be distributed with this software.
61/* AUTHOR(S)
62/*	Wietse Venema
63/*	IBM T.J. Watson Research
64/*	P.O. Box 704
65/*	Yorktown Heights, NY 10598, USA
66/*--*/
67
68#endif
69