1/***********************************************************************
2*                                                                      *
3*               This software is part of the ast package               *
4*          Copyright (c) 1982-2010 AT&T Intellectual Property          *
5*                      and is licensed under the                       *
6*                  Common Public License, Version 1.0                  *
7*                    by AT&T Intellectual Property                     *
8*                                                                      *
9*                A copy of the License is available at                 *
10*            http://www.opensource.org/licenses/cpl1.0.txt             *
11*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12*                                                                      *
13*              Information and Software Systems Research               *
14*                            AT&T Research                             *
15*                           Florham Park NJ                            *
16*                                                                      *
17*                  David Korn <dgk@research.att.com>                   *
18*                                                                      *
19***********************************************************************/
20#pragma prototyped
21/*
22 * David Korn
23 * AT&T Labs
24 *
25 * Shell interface private definitions
26 *
27 */
28
29#ifndef _REGRESS_H
30#define _REGRESS_H		1
31
32#if SHOPT_REGRESS
33
34typedef struct Regress_s
35{
36	Shopt_t	options;
37} Regress_t;
38
39#define sh_isregress(r)		is_option(&sh.regress->options,r)
40#define sh_onregress(r)		on_option(&sh.regress->options,r)
41#define sh_offregress(r)	off_option(&sh.regress->options,r)
42
43#define REGRESS(r,i,f)		do { if (sh_isregress(REGRESS_##r)) sh_regress(REGRESS_##r, i, sfprints f, __LINE__, __FILE__); } while (0)
44
45#define REGRESS_egid		1
46#define REGRESS_euid		2
47#define REGRESS_p_suid		3
48#define REGRESS_source		4
49#define REGRESS_etc		5
50
51#undef	SHOPT_P_SUID
52#define SHOPT_P_SUID		sh_regress_p_suid(__LINE__, __FILE__)
53
54extern int			b___regress__(int, char**, void*);
55extern void			sh_regress_init(Shell_t*);
56extern void			sh_regress(unsigned int, const char*, const char*, unsigned int, const char*);
57extern uid_t			sh_regress_p_suid(unsigned int, const char*);
58extern char*			sh_regress_etc(const char*, unsigned int, const char*);
59
60#else
61
62#define REGRESS(r,i,f)
63
64#endif /* SHOPT_REGRESS */
65
66#endif /* _REGRESS_H */
67